Данной публикацией открывается цикл статей, посвящённый обмену информацией между компьютером и внешними устройствами по USB на основе микросхемы FT8U245АM. Предусматривается три части:
схемотехника устройства;
пример программы для PIC18F458;
исходная программа для С++ Builder 6, демонстрирующая возможности USB.
Следует отметить, что ранние попытки создать работоспособное устройство, связывающее микропроцессор с компьютером, у многих разработчиков окончились неудачей. Это связано со сложностью USB как со стороны аппаратных решений, так и со стороны математического обеспечения. В качестве доказательства можно отметить, что известная микросхема USBN9603/USBN9604 фирмы National Semiconductor имеет в своём составе около 50 регистров, которыми должен управлять микропроцессор для того, чтобы обеспечить связь с компьютером по USB. Математическое обеспечение в этом случае должно использовать две библиотеки Hid.dll и Setupapi.dll с множеством функций, которые необходимо изучить достаточно подробно.
Совсем иначе выглядит процесс разработки устройств с USB при использовании микросхем FT8U245АМ и FT8U232АМ фирмы FTDI. В этом случае разработчику предлагается достаточно простые схемотехнические и программные решения. Вопросы организации полноценного узла USB выполняет микросхема на аппаратном уровне, а математическое обеспечение для компьютера базируется на драйвере и одной динамической библиотеке с набором простых и достаточно прозрачных функций. Всё это можно свободно получить на вышеуказанном сайте. Об особенностях проектирования интерфейса USB со стороны микропроцессора и компьютера будет рассказано в последующих разделах.
Использование микросхемы FT8U232АМ в качестве виртуального СОМ порта подробно изложено в [1], и поэтому здесь не рассматривается. На взгляд автора, микросхема FT8U245АМ предоставляет разработчику более широкие возможности за счёт непосредственной связи с микропроцессором по параллельному каналу и, как следствие, более высокой скорости обмена (до 8 Мбит/сек). Ниже рассматривается схемотехника подобных устройств и проводится их сравнительный анализ.
Схемотехника интерфейса USB на основе FT8U245АМ.
Микросхема FT8U245АМ имеет 32-х выводной квадратный планарный корпус. Выводы расположены по четырём сторонам с шагом 0,8 мм. Это представляет определённые сложности для ряда разработчиков. Для облегчения применения FT8U245АМ некоторые фирмы предлагают отладочные наборы, например, [2]. Однако, на взгляд автора, эти наборы не в полной мере соответствуют запросам российских разработчиков, да и стоят дороговато.
Схема включения FT8U245АМ, рекомендуемая производителем [3], и переработанная на основе требований российских ГОСТ приведена на рис. 1.
Рис.1. Схема включения FT8U245AM.
В вышеупомянутых наборах на плате отсутствует ППЗУ DD2, которое содержит информацию о конкретном применении микросхемы FT8U245АМ. Действительно, производитель в своём варианте схемы отмечает ППЗУ как необязательный компонент. Однако в большинстве случаев эта микросхема необходима, так как она, помимо всего прочего, содержит имя устройства, и оно может быть идентифицировано по этому имени операционной системой компьютера. Это необходимо для случаев, когда к USB подключено несколько устройств на основе FT8U2ххАМ. Кроме этого, программа может использовать это имя в качестве пароля. Конечно, разработчик может установить ППЗУ на своей плате, наборы это позволяют. Но это приводит к увеличению числа выводов отладочной платы и удлинению проводников между ППЗУ и FT8U2ххАМ. По мнению автора, ППЗУ и контроллер USB должны быть расположены на одной плате.
Обсуждаемый отладочный набор [2] рассчитан на установку в панель от DIP корпуса микросхемы, что в ряде случаев приводит к потере места на материнской печатной плате под этой панелью.
На основании всего вышеизложенного была разработана печатная плата, приведённая на рис. 2.
Рис.2. Печатная плата интерфейса USB на основе FT8U245AM.
Плата выполнена из SMD компонентов с двухсторонним расположением элементов. На рис. 2 сверху изображена верхняя сторона платы, а снизу – нижняя сторона.
Как видно из рис. 2, плата полностью соответствует схеме, приведённой на рис. 1. ППЗУ расположено там же, где и контроллер USB. Поскольку ППЗУ может быть запрограммировано как контроллером USB, так и внешним программатором, то микросхема памяти конструктивно расположена в корпусе типа DIP8, чтобы облегчить эту операцию.
На материнскую плату устройство устанавливается вертикально, поскольку клеммы Х1, Х3 – Х15 образуют гребёнчатый разъём. Тем самым экономится место на материнской плате. В некоторых случаях можно впаять устройство, поскольку оно всё равно не подлежит ремонту. В случае выхода его из строя, демонтаж можно произвести, просто расчленив выводы гребёнчатого разъёма.
Описание выводов модуля USB на основе FT8U245AM.
Питание базовой части модуля осуществляется непосредственно от USB соединителя компьютера. Поэтому вывод питания отсутствует. Остальные выводы имеют следующее назначение:
D0…D7 (Х1,Х3…Х9) – двунаправленная шина данных в прямом коде (1 – высокий уровень, 0 – низкий уровень) с тремя состояниями;
RD# (Х10) – вход строба читаемых данных. Когда на RD# низкий уровень данные из приёмного буфера типа FIFO длиной 128 байт микросхемы FT8U245AM появляются на шине D0…D7, если хотя бы один байт присутствует в буфере. По переходу от низкого уровня к высокому уровню данные снимаются с шины данных;
WR (Х11) – вход строба записываемых данных. Данные с шины D0…D7 попадают в буфер передачи типа FIFO длиной 384 байта микросхемы FT8U245AM по переходу от высокого уровня к низкому уровню на выводе WR при условии, что этот буфер не заполнен полностью;
TXE# (Х12) – выход наличия места в буфере передачи микросхемы FT8U245AM. Когда на этом выводе низкий уровень, данные могут быть переданы в буфер передачи по шине D0…D7;
RXF# (Х13) – выход наличия данных в приёмном буфере микросхемы FT8U245AM. Когда на этом выводе низкий уровень, данные могут быть прочитаны по шине D0…D7;
На рис. 3 изображён цикл чтения, а на рис. 4 – цикл записи. В таблице 1 приведены минимальные и максимальные значения ряда временных параметров.
Рис.3. Временная диаграмма цикла чтения.
Рис.4. Временная диаграмма цикла записи.
Таблица 1.
Время
Описание
Min
Max
Ед.
T1
Длина импульса чтения
50
-
нс
T2
Время между импульсами чтения
50
-
нс
T3
Время между спадом RD# и данными
-
30
нс
T4
Время удержания данных после фронта RD#
10
-
нс
T5
Время перехода RXF# в пассивное состояние после фронта RD#
5
25
нс
T6
Время пассивного состояния RXF# после цикла чтения
80
-
нс
T7
Длина импульса записи
50
-
нс
T8
Время между импульсами записи
50
-
нс
T9
Время установления данных перед спадом WR
-
20
нс
T10
Время удержания данных после спада WR
10
-
нс
T11
Время перехода TXE# в пассивное состояние после спада WR
5
25
нс
T12
Время пассивного состояния TXE# после цикла записи
80
-
нс
Более подробно с внутренней структурой микросхемы FT8U245AM и принципами её работы можно ознакомиться в [4], откуда и взяты приведённые выше временные диаграммы.
Описанный выше модуль может быть полезен как для разработчиков, так и для радиолюбителей в качестве среды для скоростной передачи данных между процессором периферийного устройства и компьютером, например при передаче речи или в системах сбора данных. В этом случае при применении микроконтроллеров, поддерживающих интерфейс CAN на аппаратном уровне, становится несложно изготовить преобразователь USB – CAN. В случаях, когда периферийное устройство удалено от компьютера, потребуется применение RS485 на электрическом уровне и определённого формата телеграмм для обеспечения помехоустойчивости.
Достоинством модуля можно считать простоту в использовании при сравнительно низкой стоимости.
ЛИТЕРАТУРА
А. Лысенко, Р. Назмутдинов, И. Малыгин. Преобразователи интерфейса USB на микросхемах FT8U232AM, FT8U245AM. – М.: Журнал «Радио» №№ 6, 7, 2002 г.