В статье описан переходник USB <--> RS232, собранный на чипе TUSB3410.
TUSB3410 – микроконтроллер с интегрированным интерфейсным модулем USB.
Функциональная оснащенность примерно та же: полный последовательный порт (выводы 13-21, только RX/TX называются SIN/SOUT), интерфейс для EEPROM (здесь это I2C), кварц, питание, Reset и четыре программируемые линии ввода/вывода общего назначения Р3.0 – Р3.4 – вот их-то у FTDI-ки точно не было… Напряжение питания микросхемы – 3.3В, что не очень удобно, поскольку при питании от USB заставляет использовать LDO-стабилизатор. Зато никаких хитрых режимов питания нет. Ну что, как всегда, кратенько пробежимся по функциональному назначению выводов? Поехали… С последовательным портом все вроде бы понятно, скажу лишь, что при соответствующей прошивке он может работать не только по протоколу RS-232, но и как IrDA приемопередатчик. Четыре линии ввода/вывода тоже не экзотика, производитель, в частности, предоставляет пример, где они используются для подключения нескольких кнопок, а устройство определяется ОС как HID-совместимое, что позволяет достаточно легко реализовать опрос этих самых кнопок. DP, DM – линии Data+ и Data- USB, PUR служит для подключения подтягивающего резистора для линии Data+. На линию VDD18 надо подать напряжение 1.8В от внешнего источника или, что проще, подать лог.0 на вывод VREGEN, включив тем самым внутренний источник на 1.8В, а на VDD18 добавить конденсатор 0.1 мкФ на землю… На RESET – обычную RC-цепочку, более чем достаточно, TEST0 и TEST1 надо подтянуть через 10кОм к питанию, а выход тактовой частоты CLKOUT мы использовать не будем. Кварц 12МГц на ноги Х1 и Х2, выход индикатора SUSPEND – по вкусу, вход пробуждения WAKEUP можно оставить неподключенным или подтянуть через резистор к плюсу питания. К линиям последовательного порта этой микросхемы также можно подключать непосредственно МК, опторазвязки или преобразователи уровней. Вроде как все необходимое для минимальной конфигурации подключили, схема получилось вот такая:
Микросхема EEPROM здесь также не является обязательным элементом и лично я ее так ни разу и не использовал… Итак, собрали мы эту схему, воткнули в комп, ОС нашла некое устройство и попросила ткнуть ее носом в драйвера для него. Вот тут-то самое интересное и начинается. Как я уже говорил, TUSB3410 на самом деле микроконтроллер, внутри у него 8052-совместимое ядро. Соответственно, функционал нашего устройства определяется залитой прошивкой. Нам требуется пока что – преобразователь интерфейсов. В принципе, при условии регистрации и предоставлении информации о вашем проекте производитель предоставляет и исходники, и прошивку для применения микросхемы в качестве преобразователя интерфейсов, но можно пойти и по другому пути. Эта микросхема используется в таком качестве в некоторых интерфейсных шнурках для мобильных телефонов, в GSM-модемах, в некоторых других устройствах. А драйвера для них доступны для свободной закачки. Более того, все эти драйвера содержат необходимую прошивку. Это связано с особенностями работы микросхемы. Дело в том, что при установке драйвера прошивка для микроконтроллера копируется в /System32/drivers. Далее, при включении устройства TUSB проверяет наличие EEPROM и прошивки в ней. Если все в порядке – грузится с нее, если нет – подгружает прошивку с компа и записывает в EEPROM, если она есть. Или не записывает и просто работает. Если EEPROMа нет, при следующем включении процесс повторяется. В общем, в результате анализа нескольких комплектов драйверов к готовым устройствам методом проб и ошибок, последовательных приближений и высоконаучного тыка был сгенерирован собственный работоспособный комплект. Во всех файлах драйверов и даже внутри прошивок стоят копирайты Texas Instruments, поэтому скажу, что все предпринятые над драйверами действия цели имели исключительно образовательные и некоммерческие, а здесь результат публикуется сугубо для ознакомления. После подключения к ПК ОС найдет новое устройство «TUSB3410 Device» и потребует установку драйвера, надо указать на файл umpusbXP.inf. В ходе установки в системную директорию будут скопированы файлы umpusbxp.sys и umpf3410.i51 (прошивка). Далее система найдет виртуальный СОМ-порт, для него потребуется драйвер UmpComXP.inf. В обоих *.inf-файлах помечены строки, изменив которые можно отредактировать названия определяемых системой устройств и установленные по умолчанию VID&PID, передаваемые ОС. Однако, как и в прошлый раз, я бы не стал этого делать без полного понимания того, к чему это может привести. Для чего TUSB3410 нужна EEPROM я уже упоминал. Добавлю, что лично я с ней не экспериментировал, однако на сайте производителя доступны для скачивания утилита для генерации бинарного файла прошивки EEPROM на основе umpf3410.i51 и конфигурационного файла (содержит серийный номер устройства, VID&PID, строковые данный по аналогии с FT232BM) и утилита для непосредственной прошивки полученного файла в микросхему. На странице, посвященной этой микросхеме при желании можно найти подробный даташит, ряд аппноутов, документы, описывающие особенности применения, ссылки на исходные коды и утилиты для работы. Настоятельно рекомендую посмотреть. Результатом всех этих изысканий стало создание двух модулей преобразования протокола USB в RS-232, на FT232BM и TUSB3410 соответственно, которые можно рассмотреть на фотографии:
Монтаж, как видно, поверхностный, все детали на одной стороне, с изнанки – пара перемычек. Модули рассчитаны на вертикальное впаивание в плату, поэтому на них нет разъемов, а установлены PLS штырьки, которые, собственно, в плату и впаиваются. На дальней от нас стороне платы сделаны контактные площадки RX/TX (на модуле FT232BM их загораживает конденсатор), остальные сигналы последовательного интерфейса не выведены за ненадобностью: эти модули используются для сопряжения исключительно с МК.
Немножко возвращаясь к FT232BM. Ниже вы можете увидеть фото (а в конце статьи - скачать варианты разводки плат) для двух конструкций на FT232BM с полным RS-232 портом. В первой из них
Сигналы RS-232 имеют TTL-уровень и выведены на двухрядный разъем BH-10 (по аналогии с материнскими платами), причем коммутацией входа VCCIO (вывод 13) на 5В или сторонний источник 3.3В (в данном случае применен LDO-стабилизатор, но можно, например, и параметрический использовать или регулируемый на LM317) при помощи джампера можно выбирать соответствующий уровень логической "1" на выводах порта RS-232. Эта конструкция разрабатывалась для отладки устройств, имеющих напряжение питания 3.3 В.
[Ссылки]
1. USB - RS-232 преобразователи. 2. Разводка платы и программное обеспечение (драйвер WinXP) - TUSB3410-RS232.zip. 3. TUSB3410 - описание. Примеры использования, апноуты - ti.com-examples-appnotes.zip. 4. Сопряжение микроконтроллера с компьютером без MAX232. |