05.12.2009

USB-TTL

Идея проекта  V-USB - дать миру свободную программную реализацию для микроконтроллеров ATMEL, в которых отсутствует аппаратная поддержка шины USB. Основная цель - упростить и удешевить жизнь самодельщикам,  которые хотят использовать USB в своих проектах.

Экономия оборачивается мелкими ограничениями - расходование 1,5К памяти программ, использование внешнего кварца из определенного набора значений (в экзотическом варианте допускается использовать и внутреннюю RC-цепочку, но тогда тогда надо включить процедуру автокалибровки от USB) жертвование одним пином, на который можно повесить прерывание.  Еще один минус состоит в относительно низкой пропускной способности этой реализации, а также постоянно открытый вопрос о соответствии стандарту - все ожидают, что вот-вот Windows перестанет поддерживать режим low speed bulk transfer, и наступит конец света, Windows перестанут пользоваться будет как-то неприятно.

Тем не менее, для элементарных и компактных низкоскоростных устройств, собранных своими руками - это настоящая находка, что и говорить!

Но представим на секунду, что проекта V-USB не существует. Можно попробовать достать микроконтроллер с аппаратной поддержкой USB - например, что-то из этого списка. Дорого / не достать / не хотите менять МК? Тогда поможет внешний USB-чип, есть на любой вкус - для USB 2.0 и для USB 1.1.

Если вы держали в руках Arduino, то наверняка обратили внимание на микросхемку с махонькими ножками в два ряда. Не судите по размеру: это мегапопулярнейший чип FT232RL, производимый фирмой FTDI:



FT232RL представляет собой мост USB-TTL. При этом для работы ей не нужно почти ровным счетом ничего: питание она берет от шины USB, внешнего кварца не требует, драйвера - свободные и под все ОС,  обеспечивает все сигналы COM-порта (и более того). Плюс к этому имеет 1К EEPROM, где прошит уникальный заводской номер и зарезервированный FTDI для этих чипов VID/PID. Кстати, утверждается, что диапазон PID-ов (Product ID) можно получить бесплатно, если есть необходимость. Но обычно этой необходимости нет: после подключения к шине USB, с точки зрения программ, в компьютере просто появляется еще один COM-порт, хоть и с неимоверно большим номером - COM33 (разумеется, номер меняется, можно выставить хоть COM1).

На выходе мы получаем последовательный порт с уровнями TTL, который можно видеть в спецификациях многих микроконтроллеров как UART. На Arduino это цифровые пины 0 и 1, или PD0 и PD1 на ATmega.

Без минусов тоже не обошлось: цена и мелкий шаг ножек (корпус SSOP28). Многих это останавливает, но не всех: я решил опробовать ЛУТ на пределе возможностей - шаг ножек составляет 0,65 мм, а ширина контактной площадки - всего 0,30 мм.

Начнем со схемы:



Это вторая версия, в которой появились некоторые "излишества". Первое - это самовосстанавливающийся предохранитель FUSE, защищающий линию питания от короткого замыкания. Cветодиоды Rx / Tx хорошо скрашивают досуг в процессе обмена данными, а разомкнутый джампер JP1 позволяет не подавать питание на подключаемую схему. Резистор R3 - это просто перемычка, помогает при разводке.

Откуда-то из моего бардака всплыло устройство-аналог из проекта Arduino - в свое время оно носило название Arduino Stamp. Выполнено на двухсторонней плате и имеет размер 18 х 33 мм:



Я попытался узнать у коллег на работе, какой размер SMD-элементов самый популярный в этом сезоне - мне сообщили, что 0603. Внутренне я долго сопротивлялся этому, и установил с самим собой компромисс на типоразмере 0805 - при этом размер элементов получается целых 2 х 1,25 мм: мне даже удалось найти элемент, который я случайно смахнул со стола! ;) Перемычка R3 имеет размер 1206, а предохранитель и вовсе "гигансткий" - 1812.

Я немного увеличил габариты платы - до 22 х 39 мм, и развел односторонним способом:



Вопреки моим ожиданиям, рисунок протравился довольно четко:



Визуально получилось ненамного габаритнее, чем двустороннее исполнение:



Оригинальная синенькая плата экспортирует наружу все выходные сигналы FT232RL, но на практике  они нечасто бывают нужны -  гребенки для них по умолчанию не распаивают.
Кстати, сам FTDI тоже выпускает подобные переходники, только именуются они как "отладочная плата" и стоят негуманных денег:



Называется он MM232R, чип там FT232RQ, совсем микроскопический, но... такую плату уже не установишь на беспаечную макетку - из-за нелепой конфигурации гребенки. А вот у Arduino Stamp она правильная ;)

В силу своей односторонней природы, разъемы, вилки и светодиоды пришлось расположить на одной стороне платы, а все остальные SMD-элементы - на другой:



В итоге все заработало, естественно с первого раза. Подключал к антикварной LilyPad Main Board, у которой нет USB.

Если будете повторять, хочу обратить внимание, что надо сначала паять предохранитель, а только потом - микросхему, так удобнее. Кроме того, плату надо обязательно равномерно залудить, наилучших результатов можно добиться при помощи сплава Розе.

Файлы для скачивания (лицензия cc-sa):
По традиции, экземпляр выкладываю на Молоток.ру для желающих купить.

2 комментария:

  1. Хорошая платка получилась :)
    Если добавить bitbang, то ценность платы возрастет еще больше :)

    ОтветитьУдалить
  2. Буду благодарен, если это кто-то сделает. Все необходимые для этого файлы я выложил ;)

    ОтветитьУдалить