USB - это просто! Часть 1. Переход с интерфейса RS-232 на интерфейс USB
Со времени разработки и широкого внедрения интерфейса USB прошло уже почти 10 лет, но по разным причинам для ряда разработчиков остается непростой задачей реализовать обмен информацией с компьютером по данному интерфейсу в собственных устройствах. Данный обзор микросхем компании Silicon Laboratories (SiLabs) для USB предполагает заполнить этот "информационный пробел".
Продукция компании SiLabs для USB - это микроконтроллеры с интерфейсом USB и двунаправленные преобразователи интерфейсов UART <-> USB. Первые предназначены для создания однокристальных устройств с интерфейсом USB, вторые - для добавления интерфейса USB в различные приборы, построенные на базе микроконтроллеров, не имеющих интерфейса USB.
Применение микроконтроллеров с интерфейсом USB, включая особенности разработки программного обеспечения для них, будет описано во второй части данного обзора, который будет опубликован в одном из будущих номеров. Данная статья содержит информацию по двунаправленным преобразователям интерфейсов UART <-> USB, которые являются удачным решением для добавления интерфейса USB в свои разработки. Следует отметить, что данные микросхемы подходят и для обновления хорошо отлаженных серийных приборов, требующих перехода на современный интерфейс USB.
Главными особенностями микросхем компании SiLabs для USB являются:
- наличие законченного программного обеспечения в виде библиотек программ и драйверов, которые позволяют разрабатывать программное обеспечение без изучения основ передачи данных по интерфейсу USB;
миниатюрный корпус;
- индустриальный температурный диапазон;
- высокая надежность.
Двунаправленные преобразователи интерфейсов UART <-> USB
Двунаправленные преобразователи интерфейсов (мосты) UART <-> USB имеют наименования CP2101, CP2102, CP2103.
На кристаллах CP210x интегрированы следующие блоки (рис.1):
- аппаратный контроллер интерфейса USB спецификации 2.0, работающий в режиме USB-device со скоростью передачи данных до 12Мбит/сек;
- приемопередатчик UART с поддержкой сигналов модемного интерфейса (линий квитирования),
- раздельные буферы для приема и передачи данных с объемом более 512 Байт;
- память EEPROM для хранения настроек микросхемы.
Рис. 1. Функциональная схема мостов CP210x
Для работы микросхемы требуется минимальное количество внешних компонентов (рис. 2), так как основная их часть интегрирована на кристалле, включая тактовый генератор на частоту 48 МГц для работы управляющей логики и контроллера интерфейса USB, а также стабилизатор напряжения, обеспечивающий питание микросхемы от интерфейса USB. Таким образом, для работы микросхемы достаточно двух внешних фильтрующих конденсаторов на линию питания.
Рис. 2. Минимальный набор внешних элементов CP210x (выделено красным)
Единственным "подводным камнем" при применении микросхем CP210x может стать корпус микросхемы (MLP28), малопригодный для ручной пайки.
Микросхемы CP210x представлены на сегодняшний день 3-мя кристаллами, технические параметры которых приведены в таблице 1.
Таблица 1. Сравнение параметров мостов CP210x
|
CP2101 |
CP2102 |
CP2103 |
Формат данных |
Биты данных |
8 |
5,6,7,8 |
5,6,7,8 |
Биты останова |
1 |
1,1.5,2 |
1,1.5,3 |
Контроль четности |
четный, нечетный, без контроля |
четный, нечетный, маркер (1), пробел (0), без контроля |
Четный, нечетный, маркер (1), пробел (0), без контроля |
Буфер приемника |
512 |
576 |
576 |
Буфер передатчика |
512 |
640 |
640 |
Дополнительно |
|
Не рекомендуется для новых разработок |
Рекомендуется для всех новых разработок (повыводно совместим с CP2101) |
Дополнительная функциональность: 4 линии ввода/вывода общего назначения, поддержка интерфейса RS-485 |
Кристалл CP2101 был "отправной точкой" данного направления продукции SiLabs. На сегодняшний день он имеет улучшенную версию - кристалл CP2102, который включает поддержку более широкого формата данных UART, а также увеличенные объемы буферов приемника и передатчика. Микросхемы СР2101 и СР2102 совместимы повыводно и реализуются по одной и той же цене.
Выпуск микросхем CP2103 начат совсем недавно. Главным отличием кристалла CP2103 является возможность управления по интерфейсу USB четырьмя выводами микросхемы как линиями ввода/вывода общего назначения (см. подробнее AN223). Данная функциональность может быть полезна для управления логикой по интерфейсу USB, создания мостов интерфейса USB в интерфейсы JTAG, SPI, I2C, IrDA, а также однокристальных программаторов для различных микросхем (в т.ч. микроконтроллеров SiLabs С8051Fxxx).
Схема включения микросхемы для реализации моста UART <-> USB очень проста. На рисунке 3 приведена схема подключения моста к микроконтроллеру C8051F064.
Рис. 3. Схема включения мостов CP210x
Так как мосты CP210x работают в режиме передачи массивов данных (Bulk Data Transfer), теоретически возможно переполнение внутренних буферов микросхем, поэтому для гарантированной передачи потоковых данных рекомендуется использовать линии квитирования (RTS, CTS, DSR, DCD, RI, DTR) либо осуществлять программный контроль передачи данных (X-ON/X-OFF).
Следует отметить, что для более высокой помехозащищенности микросхемы желательно добавить подтягивающий резистор (2 кОм) на линию /RESET для избавления от случайных сбросов микросхемы при воздействии внешних электромагнитных полей.
В соответствии со спецификацией интерфейса USB, устройства 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 Implementers 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 символов. Значение поля рекомендуется изменять для всех серийных приборов, для которых существует вероятность того, что к одному хосту (компьютеру) будет подключено 2 и более изготавливаемых прибора.
Product string. Текстовый идентификатор продукта (в дополнение к PID). Значение "по-умолчанию" - "CP210x USB to UART Bridge Controller" (текстовый формат). Поле может принимать любое текстовое значение длиной до 126 символов. Данный идентификатор отображается в операционной системе при первичном подключении моста CP210x к компьютеру и помогает пользователю в выборе подходящего драйвера.
Custom Data Lock. Защита конфигурационных данных. Значение "по-умолчанию" - галочка не установлена. Установка параметра позволяет защитить значения конфигурационных параметров от преднамеренного изменения. Рекомендуется устанавливать при серийном производстве.
Изменение вышеперечисленных конфигурационных параметров является необязательной процедурой.
Изменение конфигурационных параметров производится с использованием программы "CP210x Set IDs" (рис.4), входящей в состав руководства по использованию AN144.
Рис. 4. Задание конфигурации CP210x
После запуска программы автоматически сканируются периферийные устройства, для которых установлен драйвер моста CP210x, и считываются текущие значения полей. Для изменения определенного значения необходимо ввести данные в соответствующее поле и установить напротив него галочку. Изменения применяются сразу после нажатия кнопки Program Device. После изменения значений полей VID и PID производится поиск новых драйверов, содержащих введенные значения идентификаторов. При изменении остальных полей используются текущие драйверы.
Так как работа программы "CP210x Set IDs" осуществляется через библиотеку драйверов, привязанных к конкретным идентификаторам VID и PID, необходимо быть внимательным при манипуляциях с ними. Некорректная их установка может привести к конфликту с существующими драйверами, установленными в операционной системе и, следовательно, работа с устройством в дальнейшем будет затруднена. Критическим случаем является стирание поля "Serial Number", значение которого используется при ренумерации USB устройства в системе. Отсутствие значения в данном поле приведет к необратимой потере устройства.
Что касается конфигурирования параметров UART мостов CP210x, то существует возможность просмотра и задания поддерживаемых им скоростей передачи данных. Программное обеспечение и описание включено в руководство по использования AN205. Следует отметить, что "по-умолчанию" мосты CP210x сконфигурированы на поддержку широкого набора скоростей UART и вряд ли потребуется изменение параметров, установленных "по умолчанию".
Создание драйверов
Набор драйверов для мостов CP210x включает 2 драйвера:
- Драйвер USBXpress. Основное назначение драйвера - работа с мостом в качестве USB-устройства. Для работы с данным драйвером выпускается библиотека для создания собственного программного обеспечения. Использование данной возможности будет описано ниже (раздел "Разработка программного обеспечения");
- Драйвер виртуального COM-порта (virtual COM-port driver, VCP-driver). Данный драйвер является надстройкой над драйвером USBXpress. Использование драйвера VCP является наиболее простым решением для задач обновления текущих разработок, работавших ранее с COM-портом компьютера, так как при установке этого драйвера в системе появляется дополнительный виртуальный COM-порт (COM3, COM4 и т.д.), работа с которым полностью идентична работе со стандартными COM-портами (COM1, COM2). Начиная с версии 3.0, VCP-драйвер распространяется свободно.
Служебная программа генерации дистрибутива драйверов входит в состав руководства по использованию AN220 и имеет обозначение "CustomUSBDriverWizard.exe". На момент написания статьи последняя версия данной программы - 3.1.
После запуска программы CustomUSBDriverWizard предлагается выбор типа генерируемого драйвера. В процессе работы программы необходимо будет также указать:
- наименования генерируемых файлов;
- наименования устройств (виртуального COM-порта и USB-устройства);
- идентификаторы VID и PID устройства, для которого будет сгенерирован драйвер;
- путь, куда должны будут устанавливаться драйверы;
- путь, где должен быть сохранен сгенерированный дистрибутив драйвера.
Полученный дистрибутив драйвера (рис.5) будет иметь особую модификацию, соответствующую тем параметрам, которые были введены при его генерации. Данный дистрибутив может распространяться свободно (например, включаться в комплектацию разрабатываемого прибора на компакт-диске с функцией автозапуска).
Рис. 5. Дистрибутив драйверов VCP
Для установки драйвера в операционную систему необходимо запустить программу "Preinstaller", в результате работы которой будут созданы записи в реестре операционной системы и создана папка с рабочими файлами. Предполагаемый путь к папке с рабочими файлами указывается в процессе генерации драйверов. Рекомендуемое значение данного пути - системные папки (например, "C:\WINDOWS\SYSTEM32\CP210x").
После установки драйверов при подключении прибора к компьютеру с установленными в систему драйверами новое устройство будет автоматически опознано. В процессе установки драйверов может возникнуть сообщение "Данное программное обеспечение не тестировалось на совместимость с WindowsXP". В этом случае необходимо выбрать пункт "Всё равно продолжить". Чтобы избавиться от данного сообщения в системах Windows, необходимо получить цифровую подпись Microsoft (WHQL). Для упрощения данной процедуры данная услуга будет введена компанией SiLabs в ближайшее время. Следует отметить, что набор не модифицированных драйверов, поставляемых в комплекте с оценочным набором, уже содержит цифровую подпись.
После подключения прибора в систему с установленными драйверами виртуального COM-порта будет обнаружено 2 новых устройства (рис.6).
Рис. 6. Обнаружение устройства и установка драйверов VCP
После установки драйверов виртуального COM-порта в системе появится 2 новых устройства (рис.7).
Рис. 7. Диспетчер устройств
Изображенные на рисунках наименования "Virtual COM-port DAQ" и "USB DAQ" были введены в соответствующие поля при генерации дистрибутива драйверов. Таким образом, используя собственные идентификаторы и модифицированный драйвер, можно скрыть от рядового пользователя истинную "начинку" готового устройства.
Если в процессе генерации дистрибутива драйверов были сгенерированы драйвера USBXpress, то в системе должно будет появиться только одно новое устройство "USBXpress Device" (или указанное при генерации драйверов наименование).
Драйверы разработаны и устанавливаются в системе таким образом, что при одновременном подключении к одному компьютеру нескольких устройств с разными серийными номерами ("Serial Number"), будет произведено автоматическое добавление очередного COM-порта со свободным наименованием (COM3, COM4 и т.д.).
Разработка программного обеспечения
Как уже было сказано выше, при наличии существующего программного обеспечения, работающего с портом RS-232, разработки нового ПО не требуется. При разработке программы верхнего уровня "с нуля" процедуру передачи данных можно реализовать 2-мя способами: с использованием виртуального COM-порта и с использованием библиотеки USBXpress, непосредственно работающей с USB-интерфейсом. В таблице 2 приведены особенности использования обоих способов.
Таблица 2. Сравнение возможностей драйверов
Драйвер |
Ограничения |
Преимущества |
VCP |
Ограниченный набор скоростей * |
Нет ограничений на выбор среды разработки ** |
USB Xpress |
Среда разработки ограничена библиотекой ** |
Полный набор скоростей * |
- * При использовании драйверов виртуального COM-порта появляется ограничение верхнего порога доступных скоростей обмена данными (115200 кбит/сек против 921600 кбит/сек).
- ** Библиотека USBXpress создана для разработки приложений в среде MS Visual Studio 6.0. Компания SiLabs ведет работы по созданию библиотек для разработки приложений в других средах WinAPI.
В качестве дополнительной особености использования драйверов VCP можно назвать возможность работы с прибором в терминальном режиме с использованием стандартных терминальных программ.
При разработке программного обеспечения с использованием библиотеки USBXpress можно воспользоваться примерами готовых проектов. Примеры проектов и библиотека USBXp.dll включены в набор USBXpress Development Kit. Полное описание по работе с библиотекой находится в руководстве по использованию AN169. В качестве среды разработки с использованием драйвера USBXpress используется Microsoft Visual Studio 6.0. На момент написания статьи была получена информация о том, что компания SiLabs ведет разработку библиотеки для 7-ой версии Visual Studio и других сред разработки WinAPI.
Разработка процедур передачи данных с использованием библиотеки USBXpress заключается в использовании готовых функций передачи данных, организованных на верхнем уровне (открытие/закрытие порта, чтение/запись в порт, задание текущего режима передачи данных и т.п.). Таким образом, при разработке собственной программы нет необходимости осуществлять передачу данных по интерфейсу USB на нижнем уровне, осуществлять запросы к драйверу и выполнять прочие действия, которые могут вызвать затруднения у начинающего специалиста.
Следует отметить, что для работы программного обеспечения с реализацией функций передачи данных с использованием библиотеки USBXpress, устройство CP210x должно быть установлено в системе с использованием набора драйверов USBXpress.
Разработка программного обеспечения в среде WinAPI с использованием процедур передачи данных по виртуальному COM-порту детально описана в руководстве по применению AN197. Руководство также содержит пример программы, где продемонстрировано использование стандартных процедур передачи данных по последовательному каналу.
Средства разработки
Как уже было сказано выше, микросхемы CP210x малопригодны для ручной пайки, поэтому на этапе разработки рекомендуется использовать оценочный набор CP210xEK для соответствующего моста (рис. 8).
Рис. 8. Оценочный набор CP2102EK
В состав оценочного набора входит целевая плата с распаянным мостом и преобразователем уровней RS-232 <-> TTL, набор кабелей и диск с готовым к установке драйвером.
Заключение
Тенденция развития современной электроники такова, что при возникновении задач перевода конечной продукции на новый технический уровень целесообразно найти готовое решение, которое позволит решить исходную задачу с минимальными затратами сил и времени. Именно в таком "ключе" и были разработаны мосты CP210x, предназначенные для добавления интерфейса USB в готовые устройства, в том числе и для простого перехода с интерфейса RS-232 на интерфейс USB.
Источники:
- Документация на мосты CP2101 (Rev. 1.6 1/05), CP2102 (Rev. 1.0 10/04), CP2103 (Preliminary Rev. 0.1 3/05)
- Руководства по применению AN144, AN169, AN197, AN205, AN220, AN223.
- www.silabs.com
Алексей Курилин
|