Я пытаюсь подключить 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 для активации?
Стандартный 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.
Вы уверены, что уровни напряжения совместимы?
Стандартный RS232 имеет уровни ± 12 В, которые обычно преобразуются некоторыми микросхемами MAX в уровни TTL.
В вашем случае коммутационная плата Sparkfun FTDI имеет уровни TTL (0/5 В), в то время как MAX3160 может работать с RS232 и RS485 (!), поэтому есть несоответствие.
Глядя на характеристики некоторых устройств на этом сайте, они указывают цифровой интерфейс как «максимум 921600 бит/с», поэтому, если у вас нет очень веских оснований полагать, что устройство работает на этой конкретной скорости передачи данных, оно того стоит. в то время как попытаться поговорить с ним на нескольких других скоростях передачи данных, особенно если вы хорошо представляете, как должны выглядеть данные. Я бы установил свой терминал на 115200 и посмотрел, имеют ли данные какой-либо смысл на этой скорости, а затем уменьшил бы шкалу скорости передачи. Если вы дойдете до 9600, а это все равно будет выглядеть как тарабарщина, вернитесь к 115200 и поработайте дальше.
Скорость 921600 почти не слышна. Это стандартный множитель, но я, честно говоря, раньше не видел, чтобы RS232 работал быстрее, чем 115200. К тому времени, когда возникает необходимость использовать более высокие скорости, чем 115200, разработчики обычно переключаются на какой-то другой, более надежный интерфейс.
Кстати, я все еще просто предполагаю, что вы подключили устройство к COM-порту ПК и у вас есть документация, в которой указывается формат данных. Если есть возможность выбрать скорость передачи данных, используйте 115200, это будет намного надежнее, при условии, что оно совместимо с вашими общими потребностями в скорости передачи данных.
Одно раздражение, которое у меня было с чипами FTDI, которое, вероятно, не является причиной ваших проблем, но потенциально может быть, заключается в том, что если удаленное устройство отправляет то, что FTDI воспринимает как «длительный перерыв», FTDI отбрасывает информацию, которая у него есть. полученные с удаленного устройства, но еще не переданные на ПК. Это может вызвать проблемы двумя способами:
Некоторые встроенные устройства простаивают с низким уровнем последовательного выхода; когда им есть что сказать, они включают свой последовательный выход, отправляют некоторые данные, а затем возвращаются к низкому уровню холостого хода, как только они это сказали. Если встроенное устройство питает что-то, что может переходить в спящий режим, когда его последовательный вход имеет низкий уровень в течение длительного периода, и просыпаться, когда он становится высоким, эта функция может обеспечить эффективное средство сигнализации пробуждения, не требуя дополнительного вывода. К сожалению, удаленное устройство, отключающее свой последовательный порт, может привести к тому, что FTDI сбросит последнюю часть данных, отправленных устройством (я проверил с помощью осциллографа - данные были отправлены до того, как линия прервалась, но FTDI сбросил все равно).
При использовании типичного UART, который настроен на более высокую скорость передачи, чем устройство, к которому он подключен, как правило, будут получены мусорные данные, которые содержат идентифицируемое подмножество возможных значений байтов. Например, если одно настроено на 38 400, а удаленное устройство настроено на 9600, одно будет получать значения байтов с правильным кадрированием и 80, F8, а также значения байтов с неправильным кадрированием 00 и 78. Получение большого количества этих конкретных значений байтов может сделать легко определить проблему. К сожалению, каждый раз, когда FTDI видит неправильный кадр 00, он склонен отбрасывать предшествующие ему данные. Следовательно, вместо того, чтобы видеть легко идентифицируемые мусорные данные, можно в конечном итоге ничего не увидеть.
По этой причине, среди прочего, у меня есть что-то вроде любви-ненависти к чипам FTDI. Я использую их, и они достаточно удобны во многих отношениях, но они не являются такой простой заменой UART, как хотелось бы.
Если вы используете их программное обеспечение, обязательно измените VID/PID вашего FTDI, чтобы он соответствовал их. В противном случае их программное обеспечение не распознает ваш индивидуальный последовательный преобразователь.
ДжастДжефф
тальзит
звездно-голубой
звездно-голубой
тальзит