Универсальный последовательный интерфейс на FT2232H

Представляю вашему вниманию устройство (недопаянное по причине отсутствия пока конфигурационной памяти), которое я разработал еще в ноябре. Разработка велась более или менее вслепую, без предварительной отработки схемы, с нарисованными по даташитам компонентами и т. п. Тем не менее повезло — все, что протестировано, работает.

Устройство полезно для подключения устройств с RS-232 (или UART'ов микроконтроллеров напрямую) к компьютеру, как контроллер шины RS-485 или CAN, для тестирования микросхем с интерфейсом SPI и I2C. Можно в принципе использовать и как JTAG адаптер для ARMов, например. Есть и GPIO режим. На данный момент протестированы RS-232 и RS-485.

Идея возникла после прочтения статьи DI HALT про интерфейсный модуль на FT2232D, в качестве аналога использовалась FT2232H breakout board от dangerousprototypes.com (и схема из даташита, разумеется).



Печатная плата разработана в DipTrace (пришлось рисовать большую часть компонентов самостоятельно) и изготовлена в Seeed Studio (10 шт. за 1000 руб. с доставкой). Дорожка/зазор 0,2/0,2 мм (кое-где меньше, производитель допускает до 6 mil). Диаметр переходных 0,3 мм, площадка 0,8 мм (в принципе можно было сделать и меньше). Качество плат близко к идеальному, только некоторые переходные не полностью тентированы и шелкография сдвинута буквально на 0,1 мм или около того (едва заметно).

Несмотря на то, что сигнальные линии D+/D- имеют разную длину и пересекаются дорожкой на нижнем слое, все работает на скорости USB 2.0. Разумеется, это не значит, что так делать правильно.

Паять не умею. FT2232H припаивал трижды, в процессе пришлось купить термовоздушную станцию. Микросхема некоторое время работала с половиной непропаянных ножек (скорее всего, некоторые из них были питанием или землей). Выжила.

Функциональные возможности устройства


  • 2 интерфейса RS-232;
  • интерфейс RS-485;
  • интерфейс CAN на MCP2515 и MCP2551 (связь с FT2232H по SPI, пока не смонтирован);
  • много разноцветных мигающих светодиодов — индикация активности UART и CAN, приема/передачи для RS-485;
  • порты FT2232H и входы-выходы интерфейсов выведены на контактные гребенки так, что в большинстве случаев можно обойтись джамперами, без проводов.

Интерфейсы можно подключить к FT2232H или использовать отдельно. Светодиоды TX/RX для RS-232 (две группы) тоже отключаемые.

Микросхема FT2232H


Микросхема реализует интерфейс устройства USB 2.0 High Speed и имеет два независимых канала (8 выводов каждый), которые по умолчанию работают в режиме UART (до 12 МБит/с, все сигнальные линии RS-232, вывод «прием/передача» для RS-485, независимые скорости, выводы для светодиодов). При наличии конфигурационной памяти (93C46) можно использовать технологию MPSSE (Multiprotocol Synchronous Serial Engine), с помощью которой порты могут работать в режиме SPI, I2C, JTAG, GPIO и т. п. Допускается лог. уровень 5В.

Есть два вида драйверов (VCP — Virtual COM Port и D2XX для прямого доступа к MPSSE) и клиентские библиотеки API D2XX. Имеется и альтернативная библиотека libftdi с лицензией LGPL.

Что дальше


Следующим этапом должна быть установка конфигурационной памяти и CAN интерфейса. Для работы с CAN через SPI придется писать библиотеку с использованием API D2XX. Заодно можно попробовать I2C и GPIO. Кроме того, интересно, насколько надежно микросхема работает на больших скоростях. Результаты надеюсь опубликовать здесь.

Что можно было бы добавить


  • Индикацию линий RTS/CTS светодиодами.
  • Вывод всех сигнальных линий RS-232 на DB-9. Вряд ли полезно, потребовало бы других преобразователей уровня RS-232.
  • Индикацию всех линий RS-232 светодиодами. Устройство использовать вместо новогодней елки.
  • Буфер с третьим состоянием и разъемы JTAG/SWD для Cortex. Это, наверное, будет одним их следующих проектов.

Замечания, предложения и критика (потенциально полезная для автора) приветствуются. Если будет интерес, могу опубликовать проект.

UPD


Прикреплен архив с проектом.

А вот и схема:

  • +3
  • 17 января 2012, 13:38
  • Thorn
  • 1
Файлы в топике: serial-interface.zip

Комментарии (27)

RSS свернуть / развернуть
Интерес есть, проект бы не помешал. Повторить ЛУТом, наверное, будет сложновато, но, уж как минимум, воспользоваться готовыми компонентами для ДипТрейса, было бы здорово.

Будет интересно опробовать эту плату в качестве MPSSE+JTAG программатора для ПЛИС, как у марсохода.

Кстати, расскажите про заказ с сидстудио. С экспортом из ДипТрейса в гербер тонкостей нет? Сколько по времени делали платы и сколько шло почтой?
0
  • avatar
  • ACE
  • 17 января 2012, 14:55
Проект опубликую чуть позже. Повторить ЛУТом — не знаю, там сотня переходных. Не с моими кривыми руками точно :)

Что касается программатора, для него, насколько я понимаю, нужна возможность отключаться от схемы, т. е. буфер с третьим состоянием, без него неудобно. Я хотел его предусмотреть, но не успевал до нового года.

Экспорт Gerber без особенностей, только solder mask swell установить в 0, иначе между контактными площадками с шагом 0,5мм не будет маски. Процесс ручной (каждый слой отдельно), автоматизации, к сожалению, не поддается. Проверял файлы в gerbv.

Оплатил заказ и отправил файлы 21.11, в производство ушло 23.11, отправлено 30.11, пришло 22.12.
0
Устройство интересное получилось — тоже подумывал о таком
Да про заказ печаток в студию тема интересна!
0
Здоровая плата, однако. В качестве преобразователей RS232 я бы все же поставил MAX211/213/3243 или аналоги (ADM213 например). В них 5 ресиверов и 3 трансмиттера, что позволяет реализовать полный 9-пиновый COM-порт.
18-ножка с кварцем — это одна из микросхем CAN-интерфейса?
0
  • avatar
  • Vga
  • 17 января 2012, 15:58
Полный COM порт мне пока не требовался. Хотя возможно, в будущем еще пожалею, что не сделал :)

Да, это MCP2515.
0
COM-порт я обычно рассматриваю как средство подключения покупных устройств (свои с таким интерфейсом не делаю — уж больно неудобен). А там часто используются дополнительные линии. Например, мой предыдущий UPS юзает DTR как источник питания опторазвязки RS232, древний КПК CASIO PocketViewer вообще все линии кроме DCD и RI использует. Что там юзает RIGOL DS1052E — вообще хрен знает. Так что для переходника предпочитаю олный интерфейс.
Единственная проблема — полные драйверы стоят неразумно, тот же MAX213 — вдвое дороже чем FT232RL (а это одна из наиболее дорогих микросхем USB-COM).
0
У меня есть пара отладочных плат, где RS-232 есть, а UART отдельно не выведен. Что касается «бытовой техники» — буду иметь в виду, давно с такими устройствами не сталкивался (модем диалапный 56К где-то валяется и все).
0
От себя добавлю: у телефизоров LG (и наверняка других каких-то) RS232 реализован для сервиса, но сервис ладно, но по нему можно телеком еще и управлять! ;)
0
Причем в паспорте все эти команды подробненько расписаны! Правда я так и непридумал куда это применить:)))
0
А я придумал, куда применить, но мне леееень :)
А именно: у меня пульт универсальный (ну то есть пульт обычный, но принимает команды МК и управляет всем остальным), в итоге этим самым пультом управляется и ПК, и ТВ, и усилитель активный, и свет по совместительству. Раньше для всего отдельные пульты были — это была жесть! :(
Так вот, сейчас команды к ТВ идут по ИК, но тут есть минус: нет, например, команды выбора определенного источника сигнала (а мне нужно переключать между ПК и приставкой), да и обратной связи тоже нет, в общем, управление через рс232 было бы куда удобнее, но, как уже сказал, руки так и не доходют пока это применить…
0
Как можно превратить эту плату с FT2232H в программатор для микросхем памяти с интерфейсами SPI и I2C?
0
  • avatar
  • Aneg
  • 17 января 2012, 16:09
Схемотехнически по всей видимости элементарно (только для I2C нужны внешние подтяжки), а софт должен будет использовать D2XX или libftdi. Я планирую это реализовать (для работы с CAN контроллером) и написать об этом во второй части, так сказать.
0
Было бы очень интересно!!!
0
Кстати, align у картинки смени на left. А то она частично обрезается у меня.
0
  • avatar
  • Vga
  • 17 января 2012, 16:38
Это скорее всего просто тамбнейл такой, обрезанный. imgur.com такие делает.
0
Да, верно. Хотя движок сообщества тоже горазд так обрезать (правый край уползает под перекрывающие его элементы в правой части страницы). Ну и чисто эстетически ИМХО слева лучше.
Алсо, неплохо бы зафоткать одну плату и вставить в виде полноразмерной картинки (700px шириной — ограничение блога) в статью.
Алсо не хватает схемы и печатки.
0
Устройство — это хорошо, но отдельное спасибо автору за тест сервиса СС по изгтовлению ПП! Я у них заказывал уже разное, доволен был всегда, но вот сервис печаток обходил пока.
Но раз все действительно хорошо, то почему бы не попробовать? :)
Минимум $10 за 10 плат! То есть получается всего $1 — штука! (ну это за самые маленькие 5x5 см). Сразу пришла в голову мысль заказать плат для SD карточек и чего-то еще подобного :)

В общем, Thorn, если вам не сложно, отдельную статейку бы про подготовку платок для СС (DipTrace в самый раз! :)) Спасибо!
+2
Да, тема интересная, напишу. До 1 февраля у них праздники, кстати.
0
Отлично! Спасибо! Так оно же не горит ;)
0
Сколько по времени прошло от момента заказа плат до их получения?
0
  • avatar
  • x893
  • 18 января 2012, 06:12
На странице Speed Studio есть ссылка, где описан этап подготовки файлов для заказа плат, правда для Eagle. Думаю в скором времени тоже воспользоваться этим сервисом, о результатах отпишу
0
Тоже решил про свои платки отладочные написать
akb77.com/g/mcu/usb-uart-adapters/
0
  • avatar
  • x893
  • 18 января 2012, 22:49
>> только некоторые переходные не полностью тентированы

Что-то я вообще ни одного тентированного отверстия найти не могу. Где они там у Вас? И, кстати, зачем они там вообще нужны? Не СВЧ же, вроде…
0
Проект ещё стоит ждать? Может быть хотя бы компоненты для ДипТрейса выложите?
0
  • avatar
  • ACE
  • 24 января 2012, 22:32
Выложил, см. UPD.
0
Спасибо!
0
Прошу прощения за задержку с публикацией проекта — схема (которая .dch) не соответствовала реальности, не хотел загружать ее в таком виде.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.