Компоненты и технологии, № 5'2005
USB - это просто!
Часть 1. Переход с интерфейса RS-232 на интерфейс USB
Со времени разработки и широкого внедрения интерфейса USB прошло уже почти 10 лет, но по разным причинам некоторые разработчики считают реализацию обмена информацией с компьютером по данному интерфейсу в собственных устройствах непростой задачей. Однако, возможно, прочитав данный обзор микросхем компании Silicon Laboratories (SiLabs) для USB, они изменят свое мнение.
Алексей Курилин
ak@efo.ru
Продукция компании 81ЬаЬ для ШВ — это микроконтроллеры с интерфейсом ШВ и двунаправленные преобразователи интерфейсов ИЛИТ <-> ШВ. Первые предназначены для создания однокристальных устройств с интерфейсом ШВ, вторые — для добавления интерфейса ШВ в различные приборы, построенные на базе микроконтроллеров, не имеющих этого интерфейса.
Применение микроконтроллеров с интерфейсом ШВ, включая особенности разработки программного обеспечения для них, будет описано во второй части данного обзора, который будет опубликован в одном из следующих номеров. Данная статья содержит информацию по двунаправленным преобразователям интерфейсов ИЛИТ <-> ШВ. Следует отметить, что данные микросхемы подходят и для обновления отлаженных серийных приборов, требующих перехода на современный интерфейс ШВ.
Главными особенностями микросхем компании 81ЬаЫ для ШВ являются:
• наличие законченного программного обеспечения в виде библиотек программ и драйверов, которые позволяют разрабатывать программное обеспечение без изучения основ передачи данных по интерфейсу ШВ;
Питание от интерфейса USB
Сигналы D+ * интерфейса USB D-
Интерфейс UART +
Линии
квитирования
Рис. 1. Функциональная схема мостов CP210x
• миниатюрный корпус;
• индустриальный температурный диапазон;
• высокая надежность.
Двунаправленные преобразователи интерфейсов иАРТ <-> ЫБВ
Двунаправленные преобразователи интерфейсов (мосты) ИЛИТ <-> ШВ имеют наименования СР2101, СР2102, СР2103.
На кристаллах СР210х интегрированы следующие блоки (рис. 1):
• аппаратный контроллер интерфейса ШВ спецификации 2.0, работающий в режиме ШВ^еуке со скоростью передачи данных до 12 Мбит/с;
• приемопередатчик ИЛИТ с поддержкой сигналов модемного интерфейса (линий квитирования);
• раздельные буферы для приема и передачи данных с объемом более 512 байт;
• память ЕЕРИОМ для хранения настроек микросхемы.
Для работы микросхемы требуется минимальное количество внешних компонентов (рис. 2), так как основная их часть интегрирована на кристалле, включая тактовый генератор на частоту 48 МГц для работы управляющей логики и контроллера интерфейса ШВ, а также стабилизатор напряжения, обеспечивающий питание микросхемы от интерфейса ШВ. Таким образом, для работы микросхемы достаточно двух внешних фильтрующих конденсаторов на линию питания.
Компоненты и технологии, № 5'2005
Таблица 1. Сравнение параметров мостов CP210x
CP2101 CP2102 CP2103
Формат данных
Биты данных 8 5; 6; 7; 8 5; 6; 7; 8
Биты останова 1; 1,5; 2 1; 1,5; 3
Контроль четности четный,нечетный, без контроля четный, нечетный, маркер (1), пробел (0), без контроля Четный, нечетный, маркер (1), пробел (0), без контроля
Буфер приемника 512 576 576
Буфер передатчика 512 640 640
1 Дополнительно
Не рекомендуется для новых разработок Рекомендуется для всех новых разработок (повыводно совместим с CP2101) Дополнительная функциональность: 4 линии ввода-вывода общего назначения, поддержка интерфейса 1^-485
Ul
P0.1/TXD Г P0.0/RXD [
2
1
28
27
26
25
24
23
22
21
20
19
18
17
16
15
RI
DCD
DTR
DSR
TXD
RXD
RTS
CTS
N/C
N/C
N/C
N/C
N/C
N/C
N/C
N/C
VDD
NC
NC
SUSPEND
SUSPEND
+ сі
rTANT С2
4,7uF =:
luF
6
NC
RST
D+
D-
VREGIN
VBUS
GND
J4_
_L3_
12
JJ_____
1______
-CZ> SUSPEND 4 > SUSPEND
■ TP
CP2102
Рис. 3. Схема включения мостов CP210x
VBUS
D-
D+
GND
Единственным «подводным камнем» при применении микросхем CP210x может стать корпус микросхемы (MLP28), малопригодный для ручной пайки.
Микросхемы CP210x представлены на сегодняшний день 3 кристаллами, технические параметры которых приведены в таблице 1.
Кристалл CP2101 был «отправной точкой» данного направления продукции SiLabs. На сегодняшний день он имеет улучшенную версию — CP2102, который включает поддержку более широкого формата данных UART, а также увеличенные объемы буферов приемника и передатчика. Микросхемы СР2101 и СР2102 совместимы повыводно и реализуются по одной и той же цене.
Выпуск микросхем CP2103 начат совсем недавно. Главным отличием кристалла CP2103 является возможность управления по интерфейсу USB четырьмя выводами микросхемы как линиями ввода-вывода общего назначения (см. подробнее AN223 на сайте www.efo.ru и www.silabs.com). Данная функциональность может быть полезна для управления логикой по интерфейсу USB, создания мостов интерфейса USB в интерфейсы JTAG, SPI, I2C, IrDA, а также однокристальных программаторов для различных микросхем (в том числе микроконтроллеров SiLabs C8051Fxxx).
Схема включения микросхемы для реализации моста UART <-> USB очень проста. На рис. 3 приведена схема подключения моста к микроконтроллеру C8051F064.
Так как мосты CP210x работают в режиме передачи массивов данных (Bulk Data Transfer), теоретически возможно переполнение внут-
ренних буферов микросхем, поэтому для гарантированной передачи потоковых данных рекомендуется использовать линии квитирования (RTS, CTS, DSR, DCD, RI, DTR), либо осуществлять программный контроль передачи данных (X-ON/X-OFF).
Следует отметить, что для более высокой помехозащищенности микросхемы желательно добавить подтягивающий резистор (2 кОм) на линию /RESET для избавления от случайных сбросов микросхемы при воздействии внешних электромагнитных полей.
В соответствии со спецификацией интерфейса USB, устройства могут быть переведены в режим энергосбережения SUSPEND командами от хоста (host, ведущий узел на шине). Данный режим предусмотрен во всех мостах CP210x, что позволяет снизить энергопотребление кристалла до 500 мкА. Для индикации состояния микросхемы (активный или SUSPEND) предусмотрено 2 внешних вывода — SUSPEND и /SUSPEND.
Встроенный регулятор напряжения позволяет подключать внешнюю нагрузку в режимах питания от шины (bus-powered). Подключение внешней периферии необходимо осуществлять к линии VDD. Следует помнить, что при включении режима SUSPEND питание от внешней периферии на линии VDD отключается.
Конфигурирование мостов
В соответствии со спецификацией интерфейса USB, любое устройство, подключаемое к шине, передает хосту свои конфигурационные параметры — дескрипторы (descriptors). В мос-
тах CP210x некоторые из этих конфигурационных параметров хранятся в памяти EEPROM и могут быть изменены. Предусмотрена возможность изменения следующих параметров:
Vendor ID (VID). Идентификатор производителя. Значение по умолчанию 10С4 (шестнадцатеричный формат). В данном случае принадлежит компании SiLabs. Для получения собственного идентификатора производителя необходимо заключить соглашение c USB Implemented Forum, Inc., который осуществляет координацию вопросов развития и распространения интерфейса USB. Более подробную информацию можно получить по адресу http://www.usb.org/developers.
Product ID (PID). Идентификатор продукта. Значение по умолчанию EA60 (шестнадцатеричный формат). В данном случае обозначает все мосты CP210x. Это значение рекомендуется изменять на случай вероятности подключения к компьютеру прибора от другого производителя, содержащего мост CP210x. Значение данного поля может быть выбрано произвольно только в случае установки уникального зарегистрированного значения поля VID. Для получения собственного идентификатора PID необходимо послать запрос по адресу mcutools@silabs.com, содержащий следующую информацию: данные о фирме (наименование, адрес и телефон), контактные данные технического специалиста (имя, телефон и электронный адрес), информацию о приборе (наименование, номер версии и краткое описание прибора) и планируемую дату начала серийного производства прибора.
Max Power. Квота по максимальному току потребления, запрашиваемая мостом на шине USB. Значение по умолчанию — 32 (шестнадцатеричный формат). Параметр обозначает максимальное значение тока, которое запросит устройство на шине USB. Для получения значения параметра необходимо требуемое максимальное значение тока (в мА) разделить на 2 и перевести результат в шестнадцатеричный формат. Например, максимальное значение тока равно 100 мА, тогда значение параметра в десятичном коде будет равно 50, а в шестнадцатеричном — 32. Максимальное значение напряжения, которое может быть запрошено на шине, составляет 500 мА. Увеличение значения по умолчанию необходимо производить в случае, если осуществляется подключение внешней нагрузки к встроенному регулятору напряжения.
Power use attributes. Режим питания. Значение по умолчанию установлено в «Bus-powered» (питание от шины USB). В качестве альтернативы существует возможность установки режима Self-Powered (питание от внешнего источника).
Release Version. Номер выпуска. Значение по умолчанию составляет 1.0 (десятичный формат). Поля могут принимать значения от 1 до 99 в целой и дробной части.
Serial Number. Серийный номер. Значение по умолчанию составляет «0001» (текстовый формат). Поле может принимать любое текстовое значение длиной до 64 символов. Значение поля рекомендуется изменять для всех серийных приборов, для которых существует
Компоненты и технологии, № 5'2005
Рис. 4. Задание конфигурации CP210x
вероятность того, что к одному хосту (компьютеру) будет подключено 2 и более изготавливаемых прибора.
Product string. Текстовый идентификатор продукта (в дополнение к PID). Значение по умолчанию — «CP210x USB to UART Bridge Controller» (текстовый формат). Поле может принимать любое текстовое значение длиной до 126 символов. Данный идентификатор отображается в операционной системе при первичном подключении моста CP210x к компьютеру и помогает пользователю выбрать подходящий драйвер.
Custom Data Lock. Защита конфигурационных данных. Значение по умолчанию — «не установлено». Установка параметра позволяет защитить значения конфигурационных параметров от преднамеренного изменения. Рекомендуется устанавливать при серийном производстве.
Изменение вышеперечисленных конфигурационных параметров является необязательной процедурой.
Изменение конфигурационных параметров производится с использованием программы CP210x Set IDs (рис. 4), входящей в состав руководства по использованию AN144 (http://www.efo.ru/doc/Silabs/Silabs.pl?2050, все упоминаемые ниже руководства по использованию ANxxx также находятся по указанному адресу).
После запуска программы автоматически сканируются периферийные устройства, для которых установлен драйвер моста CP210x, и считываются текущие значения полей. Для изменения определенного значения необходимо ввести данные в соответствующее поле и установить напротив него галочку. Изменения применяются сразу после нажатия кнопки Program Device. После изменения значений полей VID и PID производится поиск новых драйверов, содержащих введенные значения идентификаторов. При изменении остальных полей используются текущие драйверы.
Так как работа программы CP210x Set IDs осуществляется через библиотеку драйверов, привязанных к конкретным идентификаторам VID и PID, необходимо быть внимательным при манипуляциях с ними. Некорректная их установка может привести к конфликту с существующими драйверами, установленными в операционной системе и, следовательно, работа с устройством в дальнейшем будет затруднена. Критическим случаем является стирание поля «Serial Number», значение которого ис-
Ъш CP210x_Dnvers_5etup_Files
Файл Правка Вид Избранное Сервис Слр
Поиск Пат
Адрес: I _j C:\CP210x_Drivers_Setup_Files
Prelnstaler stab ved .vxd
setup _^) slabvcr. vxd
3daq
j3DAQ2k
5^DAQ.u2k
^DAQ.u9B
3ßAQbus
íflDAQme
j^DAQwdm
JJstotbus
||ііаЬсіч95
Mistaban nt
Jjslübcoaim.vxd
Sjstebcr
3|dabser
ä|slab«/h9S
Mislabwhnt
06t«Ktoe. 21
Рис. 5. Дистрибутив драйверов VCP
395 КБ
пользуется при ренумерации USB-устройства в системе. Отсутствие значения в данном поле приведет к необратимой потере устройства.
Что касается конфигурирования параметров UART-мостов CP210x, то существует возможность просмотра и задания поддерживаемых ими скоростей передачи данных. Программное обеспечение и его описание включено в руководство по использованию AN205. Следует отметить, что по умолчанию мосты CP210x сконфигурированы для поддержки широкого набора скоростей UART, и вряд ли потребуется изменение каких-либо параметров.
Создание драйверов
Набор драйверов для мостов CP210x включает 2 драйвера:
1. Драйвер USBXpress. Основное назначение драйвера — работа с мостом в качестве USB-устройства. Для работы с данным драйвером выпускается библиотека, позволяющая создавать собственное программное обеспечение. Использование данной возможности будет описано ниже (раздел «Разработка программного обеспечения»);
2. Драйвер виртуального COM-порта (virtual COM-port driver, VCP-driver). Данный драйвер является надстройкой над драйвером USBXpress. Использование драйвера VCP является наиболее простым решением для задач обновления текущих разработок, работавших ранее с COM-портом компьютера, так как при установке этого драйвера в системе появляется дополнительный виртуальный COM-порт (COM3, COM4 и т. д.), работа с которым полностью идентична работе со стандартными COM-портами (COM1, COM2). Начиная с версии 3.0, VCP-драйвер распространяется свободно. Служебная программа генерации дистрибутива драйверов CustomUSBDriverWizard.exe входит в состав руководства по использованию AN220. Последняя версия данной программы на момент написания статьи — 3.1.
После запуска программы CustomUSB DriverWizard предлагается выбор типа генерируемого драйвера. В процессе работы программы необходимо будет также указать:
• наименования генерируемых файлов;
• наименования устройств (виртуального COM-порта и USB-устройства);
• идентификаторы VID и PID устройства, для которого будет сгенерирован драйвер;
• путь, куда должны будут устанавливаться
драйверы;
• путь, где должен быть сохранен сгенерированный дистрибутив драйвера.
Полученный дистрибутив драйвера (рис. 5) будет иметь особую модификацию, соответствующую тем параметрам, которые были введены при его генерации. Данный дистрибутив может распространяться свободно (например, включаться в комплектацию разрабатываемого прибора на компакт-диске с функцией автозапуска).
Для установки драйвера в операционную систему необходимо запустить программу Preinstaller, в результате работы которой будут созданы записи в реестре операционной системы и создана папка с рабочими файлами. Предполагаемый путь к папке с рабочими файлами указывается в процессе генерации драйверов. Рекомендуемое значение данного пути — системные папки (например, «C:\WINDOWS\SYSTEM32\CP210x»).
После установки драйверов при подключении прибора к компьютеру с установленными в систему драйверами новое устройство будет автоматически опознано. В процессе установки драйверов может возникнуть сообщение «Данное программное обеспечение не тестировалось на совместимость с Windows XP». В этом случае необходимо выбрать пункт «Все равно продолжить». Чтобы избавиться от данного сообщения в системах Windows, необходимо получить цифровую подпись Microsoft (WHQL). Для упрощения данной процедуры данная услуга будет введена компанией SiLabs в ближайшее время. Следует отметить, что набор немодифицированных драйверов, поставляемых в комплекте с оценочным набором, уже содержит цифровую подпись.
После подключения прибора в систему с установленными драйверами виртуального COM-порта будет обнаружено 2 новых устройства (рис. 6).
Рис. 6. Обнаружение устройства и установка драйверов VCP
Компоненты и технологии, № 5'2005
Таблица 2. Сравнение возможностей драйверов
Драйвер Ограничения Преимущества
VCP Ограниченный набор скоростей * Нет ограничений на выбор среды разработки **
USBXpress Среда разработки ограничена библиотекой ** Полный набор скоростей *
После установки драйверов виртуального COM-порта в системе появится 2 новых устройства (рис. 7).
Изображенные на рисунках наименования «Virtual COM-port DAQ» и «USB DAQ» были введены в соответствующие поля при генерации дистрибутива драйверов. Таким образом, используя собственные идентификаторы и модифицированный драйвер, можно скрыть от рядового пользователя истинную «начинку» готового устройства.
Если в процессе создания дистрибутива драйверов были сгенерированы драйвера USBXpress, то в системе должно будет появиться только одно новое устройство «USBXpress Device» (или указанное при генерации драйверов наименование).
Драйверы разработаны и устанавливаются в системе таким образом, что при одновременном подключении к одному компьютеру нескольких устройств с разными серийными номерами (Serial Number) будет произведено автоматическое добавление очередного COM-порта со свободным наименованием (COM3, COM4 и т. д.).
Разработка программного обеспечения
Как уже было сказано выше, при наличии существующего программного обеспечения, работающего с портом RS-232, разработки нового ПО не требуется. При разработке программы верхнего уровня «с нуля» процедуру передачи данных можно реализовать двумя способами: с использованием виртуального COM-порта и с использованием библиотеки USBXpress, непосредственно работающей с USB-интерфейсом. В таблице 2 приведены особенности использования обоих способов.
* При использовании драйверов виртуального COM-порта появляется ограничение верхнего порога доступных скоростей обмена данными (115 200 кбит/с против 921 600 кбит/с).
** Библиотека USBXpress создана для разработки приложений в среде MS Visual Studio 6.0.
Компания SiLabs ведет работы по созданию библиотек для разработки приложений в других средах WinAPI.
В качестве дополнительной особенности использования драйверов VCP можно назвать возможность работы с прибором в терминальном режиме с использованием стандартных терминальных программ.
При разработке программного обеспечения с использованием библиотеки USBXpress можно воспользоваться примерами готовых проектов. Примеры проектов и библиотека USBXp.dll включены в набор USBXpress Development Kit (http://www.efo.ru/doc/ Silabs/files/USBXpress_Install.exe). Полное описание работы с библиотекой находится в руководстве по использованию AN169. В качестве среды разработки с использованием драйвера USBXpress используется Microsoft Visual Studio 6.0. На момент написания статьи была получена информация о том, что компания SiLabs ведет разработку библиотеки для 7-й версии Visual Studio и других сред разработки WinAPI.
Разработка процедур передачи данных с использованием библиотеки USBXpress заключается в использовании готовых функций передачи данных, организованных на верхнем уровне (открытие-закрытие порта, чтение-запись в порт, задание текущего режима передачи данных и т. п.). Таким образом, при разработке собственной программы нет необходимости осуществлять передачу данных по интерфейсу USB на нижнем уровне, осуществлять запросы к драйверу и выполнять прочие действия, которые могут вызвать затруднения у начинающего специалиста.
Следует отметить, что для работы программного обеспечения с реализацией функций передачи данных с использованием библиотеки USBXpress, устройство CP210x должно быть установлено в системе с использованием набора драйверов USBXpress.
Разработка программного обеспечения в среде ”ШпАР1 с использованием процедур передачи данных по виртуальному СОМ-порту детально описана в руководстве по применению АЫ197. Руководство также содержит пример программы, где продемонстрировано использование стандартных процедур передачи данных по последовательному каналу.
Средства разработки
Как уже было сказано выше, микросхемы СР210х малопригодны для ручной пайки, поэтому на этапе разработки рекомендуется использовать оценочный набор СР210хЕК для соответствующего моста (рис. 8).
В состав оценочного набора входит целевая плата с распаянным мостом и преобразователем уровней И8-232 <-> ТТЬ, набор кабелей и диск с готовым к установке драйвером.
Заключение
В настоящее время при возникновении задач перевода конечной продукции на новый технический уровень целесообразнее найти готовое решение, которое позволит решить исходную задачу с минимальными затратами сил и времени. Именно для таких случаев и были разработаны мосты СР210х, предназначенные для добавления интерфейса ШВ в готовые устройства, в том числе и для простого перехода с интерфейса И8-232 на интерфейс ШВ.
Литература
1. Документация на мосты CP2101 (Rev. 1.6 1/05), CP2102 (Rev. 1.0 10/04), CP2103 (Preliminary Rev. 0.1 3/05).
2. Руководства по применению AN144, AN169, AN197, AN205, AN220, AN223.
3. www.silabs.com