Что-нибудь особенное, что мне нужно знать о RS232 и FT232R?

Я пытаюсь подключить XSens IMU к своему компьютеру и сталкиваюсь с интересными трудностями. IMU имеет разъем RS232, который использует только контакты VCC, GND, TX, RX и ничего больше. В комплект поставки SDK входит специальный адаптер RS232-USB, использующий FT232R и MAX3160, но, кроме этого, он не делает ничего особенного.

Производитель утверждает, что в IMU используется стандартный RS232 (и у меня нет оснований сомневаться в них), поэтому в целях экономии места (у них преобразователь довольно громоздкий) я пытаюсь использовать Sparkfun FTDI Basic Breakout 5V .

Если я устанавливаю все параметры COM одинаковыми (скорость передачи данных, четность, остановка и т. д.) и подключаюсь к устройству, я получаю данные обратно, но это выглядит как тарабарщина. Я отдаю команды, светодиод TX на FTDI мигает, RX тоже, и я получаю данные, но это совсем не то, что я ожидаю.

Может ли кто-нибудь подумать о каких-либо «подводных камнях», которые я могу пропустить? Есть ли FooBar, который необходимо подключить к DingDing для активации?

каковы настройки порта и к чему вы его подключили? это был компьютер, к которому вы его подключили? это устройство 921600 бит/с в вашем другом вопросе?
Я установил для устройства и порта VCOM значение 115200, 8 бит, без четности, 2 стоповых бита, без xonxoff, без rtscts, без dsrdtr. Да, это устройство в моем другом вопросе. На данный момент я буду использовать ПК, но позже хотел бы поместить всю систему в коробку.
VCC не является стандартным RS232.
2 стоповых бита встречаются редко, по умолчанию обычно используется один стоповый бит.
Я принимаю 5-30 В в качестве своего VCC, и он использует 2 стоповых бита. Я пробовал как 1, так и 2 стоповых бита.

Ответы (5)

Стандартный rs-232 (как ваш IMU) и уровень TTL rs-232 (как чип FTDI) отличаются.

Стандартный RS-232 переключается между +V и -V (где V изначально было 12, но теперь большинство устройств будут работать при гораздо более низких напряжениях). Уровень ТТЛ rs-232 переключается между 0 и 5В. Вам нужен приемопередатчик rs-232 для преобразования напряжения, такой как этот чип MAX3160 (хотя это необычно - что-то вроде max2332 более распространено).

Преобразователи RS-232 уровня USB в TTL, подобные тому, на который вы ссылались, используются для подключения к микроконтроллеру, а не к типичному устройству RS-232.

Я думаю, это звучит как то, что я делаю неправильно. Мне нужен один из этих приемопередатчиков. Я думаю, что они выбрали MAX3160, потому что он обеспечивает скорость до 1 Мбит/с. Кто-нибудь знает, где я могу получить одну плату, которая может работать с USB на одном конце и «настоящим» rs232/EIA-232 на другом? И быть способным к скорости до 921600?

Вы уверены, что уровни напряжения совместимы?

Стандартный RS232 имеет уровни ± 12 В, которые обычно преобразуются некоторыми микросхемами MAX в уровни TTL.

В вашем случае коммутационная плата Sparkfun FTDI имеет уровни TTL (0/5 В), в то время как MAX3160 может работать с RS232 и RS485 (!), поэтому есть несоответствие.

Я попробую еще раз, но, судя по спецификациям, xsens будет принимать 5-30 В!
Да, но что он выдает ?
Также обратите внимание, что полярность между RS232 и TTL инвертирована.

Глядя на характеристики некоторых устройств на этом сайте, они указывают цифровой интерфейс как «максимум 921600 бит/с», поэтому, если у вас нет очень веских оснований полагать, что устройство работает на этой конкретной скорости передачи данных, оно того стоит. в то время как попытаться поговорить с ним на нескольких других скоростях передачи данных, особенно если вы хорошо представляете, как должны выглядеть данные. Я бы установил свой терминал на 115200 и посмотрел, имеют ли данные какой-либо смысл на этой скорости, а затем уменьшил бы шкалу скорости передачи. Если вы дойдете до 9600, а это все равно будет выглядеть как тарабарщина, вернитесь к 115200 и поработайте дальше.

Скорость 921600 почти не слышна. Это стандартный множитель, но я, честно говоря, раньше не видел, чтобы RS232 работал быстрее, чем 115200. К тому времени, когда возникает необходимость использовать более высокие скорости, чем 115200, разработчики обычно переключаются на какой-то другой, более надежный интерфейс.

Кстати, я все еще просто предполагаю, что вы подключили устройство к COM-порту ПК и у вас есть документация, в которой указывается формат данных. Если есть возможность выбрать скорость передачи данных, используйте 115200, это будет намного надежнее, при условии, что оно совместимо с вашими общими потребностями в скорости передачи данных.

Да, я пробовал большинство доступных мне скоростей передачи данных. Я пробовал все комбинации stopbit, bytesize, buadrate. Я отправляю около 44 КБ/с через последовательный кабель. Однако в качестве пробы я попытался уменьшить скорость передачи данных с устройства до 8,4 КБ/с и скорость передачи данных до 115200. С их USB-Serial все работает, с FTDI я получаю ту же тарабарщину, что и раньше. Я могу настроить устройство на различные скорости передачи данных, частоты дискретизации и т. д., но мне не повезло с FTDI :( Но спасибо!
Однажды я столкнулся с ситуацией, когда порт на основе USB / FTDI, который должен был поддерживать 115,2 КБ, не работал на этой скорости с определенным устройством. В этом случае устройство работало нормально при подключении к «настоящему» COM-порту, встроенному в компьютер, а порт на основе FTDI работал с другими устройствами на скорости 115.2; но FTDI и одно это устройство были просто патологической комбинацией интерфейсных чипов.
JustJeff, у меня похожая ситуация с периферией, которую мы встраиваем в наши продукты. Он отлично работает с последовательным портом компьютера, но не с PIC. Оказывается, его скорость передачи данных немного не соответствует. По-видимому, «настоящие» последовательные порты более щадящие, чем микроконтроллеры. К счастью, PIC может работать с нестандартными скоростями передачи данных.
@Жанна Пиндар: да, у меня тоже такое было. Вы получаете одно устройство, которое немного медленное, другое, немного быстрое, и большинство вещей работают с большинством других вещей. Но время от времени вы обнаруживаете, что даже если А разговаривает с Б, а Б разговаривает с С, вы просто не можете заставить А и С говорить, и выходит О-скоп.

Одно раздражение, которое у меня было с чипами FTDI, которое, вероятно, не является причиной ваших проблем, но потенциально может быть, заключается в том, что если удаленное устройство отправляет то, что FTDI воспринимает как «длительный перерыв», FTDI отбрасывает информацию, которая у него есть. полученные с удаленного устройства, но еще не переданные на ПК. Это может вызвать проблемы двумя способами:

  • Некоторые встроенные устройства простаивают с низким уровнем последовательного выхода; когда им есть что сказать, они включают свой последовательный выход, отправляют некоторые данные, а затем возвращаются к низкому уровню холостого хода, как только они это сказали. Если встроенное устройство питает что-то, что может переходить в спящий режим, когда его последовательный вход имеет низкий уровень в течение длительного периода, и просыпаться, когда он становится высоким, эта функция может обеспечить эффективное средство сигнализации пробуждения, не требуя дополнительного вывода. К сожалению, удаленное устройство, отключающее свой последовательный порт, может привести к тому, что FTDI сбросит последнюю часть данных, отправленных устройством (я проверил с помощью осциллографа - данные были отправлены до того, как линия прервалась, но FTDI сбросил все равно).

  • При использовании типичного UART, который настроен на более высокую скорость передачи, чем устройство, к которому он подключен, как правило, будут получены мусорные данные, которые содержат идентифицируемое подмножество возможных значений байтов. Например, если одно настроено на 38 400, а удаленное устройство настроено на 9600, одно будет получать значения байтов с правильным кадрированием и 80, F8, а также значения байтов с неправильным кадрированием 00 и 78. Получение большого количества этих конкретных значений байтов может сделать легко определить проблему. К сожалению, каждый раз, когда FTDI видит неправильный кадр 00, он склонен отбрасывать предшествующие ему данные. Следовательно, вместо того, чтобы видеть легко идентифицируемые мусорные данные, можно в конечном итоге ничего не увидеть.

По этой причине, среди прочего, у меня есть что-то вроде любви-ненависти к чипам FTDI. Я использую их, и они достаточно удобны во многих отношениях, но они не являются такой простой заменой UART, как хотелось бы.

Если вы используете их программное обеспечение, обязательно измените VID/PID вашего FTDI, чтобы он соответствовал их. В противном случае их программное обеспечение не распознает ваш индивидуальный последовательный преобразователь.