Cp2102 модуль usb к ttl последовательный uart. Установка драйвера CP210x USB to UART Bridge VCP driver. Зачем он нужен

Программировать различные ардуино- и не адуино- образные контроллеры, получать информацию на компьютер со всего, что имеет последовательный интерфейс с TTL логикой.
Я в своих проектах использую его с Arduino Pro MIni , Gboard /Iboard и самодельными контроллерами .

Чем он отличается от других подобных устройств

  1. Дополнительным выводом DTR, который можно напрямую подключить к входу RESET на контроллерах не имеющих USB на плате. После этого при программировании давить кнопку RESET не нужно. Для меня это очень удобно, когда контроллер спрятан недрах моей поделки и доступ к кнопке бывает очень затруднительным.
  2. Поддержкой производителя, совместимостью с оригинальными драйверами и ПО, в отличие от поддельных FTDI, у которых проблемы с родными драйверами
  3. Дополнительными выводами (дырками под контакты) на плате, например, позволяющими уводить USB в энергосберегающий режим.
  4. Интересной возможностью менять VID, PID и текст, с которым опознается плата, собирать свой драйвер со требуемыми параметрами, что довольно интересно в коммерческих проектах. Об этом я расскажу дальше.

Где заказать?

Характеристики

  • Чип CP2102 от Silicon Labs
  • Скорость обмена данными по UART 300Бит/сек — 1Мбит/сек
  • Буфер чтения 576 байт, записи 640 байт
  • Поддержка USB 2.0 12Мбит/сек
  • Поддержка режима SUSPENDED USB
  • Встроенный стабилизатор питания 3.3В 100мА
  • EEPROM с конфигурационными параметрами 1024 байт
  • Поддерживаемые ОС Windows 8/7/Vista/Server 2003/XP/2000, Windows CE, Mac OS-X/OS-9, Linux, Android
  • Возможность настройки параметров платы и драйверов под свои проекты
  • Размеры платы 26.5 x 15.6 мм

На плате есть дополнительные отверстия, куда можно впаять выводы дополнительного модемного контроля и перевода USB в режим SUSPENDED

По размеру плата мало отличается от других подобных конвертеров USB/UART

  1. Плата FOCA 2.2 взята для коммерческих проектов с контроллерами Gboard /Iboard
  2. Дешевый конвертер FT232 используемый до настоящего времени
  3. Обозреваемый CP2102

Подключение и установка CP2102

Перед использованием платы необходимо установить драйвера с официального сайта Si-Labs

  • Для соединения к контроллеру нужны 5 проводов:
  • GND — GMD
  • VCC — V5.0 (V3.3) в зависимости от используемой платы
  • TX — RX
  • RX — TX
  • RESET контроллера — DTE


Теперь контроллер можно программировать не нажимая кнопку RESET.

Изменение VID, PID и др. характеристик конвертера

Плата опознается в системе как Silicon Labs CP210X USB to UART Bridge (COM35)

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

Для начала скачиваем и запускаем утилиту для конфигурирования параметров EEPROM CP1202 (мне для запуска утилиты потребовалось еще скачать Java Runtime)

Теперь можно изменить следующие параметры:

  • Vendor ID (VID). Идентификатор производителя. Значение «по-умолчанию» 10С4 (шестнадцатеричный формат). В данном случае принадлежит компании SiLabs.
  • Product ID (PID). Идентификатор продукта. Значение «по-умолчанию» EA60 (шестнадцатеричный формат). В данном случае обозначает все мосты CP210x.
  • Max Power. Максимальный ток потребления, запрашиваемая мостом на шине USB. Значение «по-умолчанию» 32 (шестнадцатеричный формат). Максимальное значение 500мА
  • Power use attributes. Режим питания. Bus-powered (питание от шины USB) или Self-Powered (питание от внешнего источника).
  • Release Version. Номер выпуска. Значение «по-умолчанию» 1.0. Поля могут принимать значения 1-99 в целой и дробной части.
  • Serial Number. Серийный номер. Значение «по-умолчанию» составляет «0001» (текстовый формат). Поле может принимать любое текстовое значение длиной до 64 символов. Нужно для подсоединение к компьютеру нескольких устройств
  • Product string. Поле может принимать любое текстовое значение длиной до 126 символов. Данный идентификатор отображается в операционной системе при первичном подключении моста CP210x к компьютеру и помогает пользователю в выборе подходящего драйвера
  • Custom Data Lock. Защита конфигурационных данных.

Обзор конвертера USB - UART TTL на CP2102

Зачем он нужен

Программировать различные ардуино- и не адуино- образные контроллеры, получать информацию на компьютер со всего, что имеет последовательный интерфейс с TTL логикой.
Я в своих проектах использую его с , и .

Чем он отличается от других подобных устройств

Дополнительным выводом DTR, который можно напрямую подключить к входу RESET на контроллерах не имеющих USB на плате. После этого при программировании давить кнопку RESET не нужно. Для меня это очень удобно, когда контроллер спрятан недрах моей поделки и доступ к кнопке бывает очень затруднительным.

Поддержкой производителя, совместимостью с оригинальными драйверами и ПО, в отличие от поддельных FTDI, у которых

Дополнительными выводами (дырками под контакты) на плате, например, позволяющими уводить USB в энергосберегающий режим.

Интересной возможностью менять VID, PID и текст, с которым опознается плата, собирать свой драйвер со требуемыми параметрами, что довольно интересно в коммерческих проектах. Об этом я расскажу дальше.

Тех, кого заинтересовал, пожалуйста под кат

Заказал я на премию за обзор много всякой мелочевки у на Ebay и в том числе за $1.79

Товар ехал целых 54 дня. Ну к нашей почте я уже привык, чего не скажешь о курсе доллара к рублю (((

Обычный желтый пакет. Внутри платки в запаянных прозрачных пакетиках. Все как обычно.

На плате есть дополнительные отверстия, куда можно впаять выводы дополнительного модемного контроля и перевода USB в режим SUSPENDED

Характеристики

  • Чип CP2102 от
  • Скорость обмена данными по UART 300Бит/сек - 1Мбит/сек
  • Буфер чтения 576 байт, записи 640 байт
  • Поддержка USB 2.0 12Мбит/сек
  • Поддержка режима SUSPENDED USB
  • Встроенный стабилизатор питания 3.3В 100мА
  • EEPROM с конфигурационными параметрами 1024 байт
  • Поддерживаемые ОС Windows 8/7/Vista/Server 2003/XP/2000, Windows CE, Mac OS-X/OS-9, Linux, Android
  • Возможность настройки параметров платы и драйверов под свои проекты
  • Размеры платы 26.5 x 15.6 мм
По размеру плата мало отличается от
на фото сравнения с другими конвертерами USB/UART



Перед использованием платы необходимо установить

Для соединения к контроллеру нужны 5 проводов:
GND - GMD
VCC - V5.0 (V3.3) в зависимости от используемой платы
TX - RX
RX - TX
RESET контроллера - DTE


Теперь контроллер можно программировать не нажимая кнопку RESET.

Плата опознается в системе как
Silicon Labs CP210X USB to UART Bridge (COM35)

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

Для начала скачиваем и запускаем "> (мне для запуска утилиты потребовалось еще скачать Java Runtime)

Теперь можно изменить следующие параметры:

  • Vendor ID (VID). Идентификатор производителя. Значение «по-умолчанию» 10С4 (шестнадцатеричный формат). В данном случае принадлежит компании SiLabs.
  • Product ID (PID). Идентификатор продукта. Значение «по-умолчанию» EA60 (шестнадцатеричный формат). В данном случае обозначает все мосты CP210x. Э
  • Max Power. Максимальный ток потребления, запрашиваемая мостом на шине USB. Значение «по-умолчанию» 32 (шестнадцатеричный формат). Максимальное значение 500мА
  • Power use attributes. Режим питания. Bus-powered (питание от шины USB) или Self-Powered (питание от внешнего источника).
  • Release Version. Номер выпуска. Значение «по-умолчанию» 1.0. Поля могут принимать значения 1-99 в целой и дробной части.
  • Serial Number. Серийный номер. Значение «по-умолчанию» составляет «0001» (текстовый формат). Поле может принимать любое текстовое значение длиной до 64 символов. Нужно для подсоединение к компьютеру нескольких устройств
  • Product string. Поле может принимать любое текстовое значение длиной до 126 символов. Данный идентификатор отображается в операционной системе при первичном подключении моста CP210x к компьютеру и помогает пользователю в выборе подходящего драйвера.
  • Custom Data Lock. Защита конфигурационных данных.

При изменение VID и PID необходима обязательная пересборка драйверов, так как стандартный драйвер настроен на VID и PID Silicon Labs

И после нехитрого мастера-диалога получаем дистрибутив драйверов с требуемым набором VID и PID и желаемым названием в системе

Итог

Данная плата одна из самых дешевых конвертеров USB/UART не использующих поддельные чипы.
Имеет вывод DTR, позволяющий автоматически посылать RESET для загрузки ПО в контроллер
Позволяет настраивать VID, PID и драйвера под свои проекты
К покупке рекомендую

Классический конвертер USB-to-UART на CP2102. Если Вы не знаете, что это, значит он Вам не нужен. Остальных прошу под кат.

Сразу скажу: работает, как должен. Конвертер сделан на небезызвестной и хорошо себя зарекомендовавшей схеме от SiLabs с минимальной обвеской. Хороший вариант для тех, кому лень паять самостоятельно.

Учтите, что несмотря на все возможности самого чипа, выводы для аппаратного контроля (DTR/DSR, RTS/CTS) не разведены. Для управления потоком остается только программный метод (X-On/X-Off). Разведены:

TX/RX.
- Питание от USB (+5V) и земля.
- +3.3V от встроенного в чип преобразователя напряжения. Вольтметр показывет 3.15V. Понятия не имею, какой реально ток можно с него с нять, но по даташиту все 500 мА.
- RST.

Входы/выходы «5V tolerant», можно подавать до 5.8V. Проверялся на скоростях 115200 kbit/s и 57600 kbit/s с двумя контроллерами. Проблем нет.

На борту один красный SMD-светодиод, загорается при подаче питания. Пайка китайская и совсем не такая, как на картинке. Мне даже показалась сначала, что пайка холодная. Количество олова и шрифт на маске такие, что, кажется, делают на совсем уж древнем производстве.

В комплекте идет диск с драйверами. Я его просто выкинул, под Linux устройство и так встает в качестве /dev/ttyUSBx.

Работает
+ маленький (по моим замерам 42x15)
+ провенная годами схема
+ драйверы под все платформы, а может заработать и вовсе без них

На доллар дороже упомянутого выше конвертера
- соединительных проводов нет в комплекте

Планирую купить +11 Добавить в избранное Обзор понравился +14 +21

LPT и COM порты уже большая редкость на современных стационарных компьютерах, а про ноутбуки то и говорить нечего. USB медленно, но верно вытеснила их, усложнив жизнь разработчикам и упростив пользователям. Эх, как приятно было когда-то подключить микроконтроллер к COM порту компьютера, используя всего лишь max232 и не заботясь о драйверах. Еще чуть-чуть и это будет возможно только на промышленных компах.

Следуя общей тенденции, производители микросхем стали выпускать доступные микросхемы для работы с USB. Такие как USB-UART преобразователи или микроконтроллеры с поддержкой этой шины. К сожалению последние, несмотря на наличие библиотек, все еще сложны в освоении, поэтому неискушенному инженеру проще использовать первый вариант. И в этой статье мы рассмотрим две подобные микросхемы - FT232 и CP2103 и схемы преобразователей на их основе.

USB-UART преобразователь на FT232RL

Микросхема FT232RL фирмы FTDI пользуется заслуженной популярностью в инженерных кругах. Она предоставляет пользователю возможность создания полноценного COM порта, имеет функцию управления отдельными выводами, драйвера, простую схему включения с минимальным количеством дополнительных элементов и приемлемый для пайки корпус. Также дополнительным плюсом этой микросхемы, является возможность программирования ее EEPROM памяти, в которой можно изменить некоторые параметры USB устройств. Из недостатков можно отметить ее высокую цену ~120-150 рублей, которая вполне сравнима с ценой на микроконтроллер atmega.
Я сделал на FT232RL свой вариант USB-UART преобразователя. Все пользовательские выводы развел на PLS`ку по краям платы. Расстояние между PLS выбрал таким, чтобы можно было втыкать переходник в макетную плату. Выводы RXD и TXD, предназначенные для подключения UART`a микроконтроллера, развел на отдельную PLS для удобства подключения. Также на плату помесил 2 светодиода, для индикации процесса передачи/приема информации микросхемой FT232RL, и перемычки для выбора напряжения питания выводов. Оно может быть пяти или трех вольтовым. USB разъем взял в мини исполнении, USB-B слишком громоздкий. Плату развел в одном слое, с тремя перемычками.

Схема USB-UART переходника на FT232RL


Внешний вид полученного девайса

Если ты соберешь этот USB-UART переходник, то не спеши сразу втыкать его в USB порт. Перед работой нужно убедиться в отсутствии замыканий между плюсом питания, землей и выводами D+, D-. Возьми тестер и прозвони их. Если замыканий нет, визуально проверь другие вывода и только после этого можешь подключать переходник.

При первом включении операционка попросит установить драйвера. Их можно скачать с официального сайта производителя - драйвер для FT232 . Установка драйверов не представляет никакой сложности, поэтому говорить об этом не будем.
Когда драйвер установится, в системе появится дополнительный COM порт. Это так называемый виртуальный COM порт, но его можно использовать точно так же как и обычный. Чтобы увидеть его порядковый номер, нужно залезть в диспетчер устройств, если у тебя винда. Заходишь в панель управления, выбираешь система > диспетчер устройств. В разделе "Порты (COM и LPT)" должен находиться наш переходник - "USB Serial Port (COM10)". У тебя может быть какой-нибудь другой номер порта.
Чтобы убедиться в работоспособности переходника нужно открыть любую терминальную программу, выбрать соответствующий COM порт, замкнуть джампером выводы RXD и TXD и отправить через терминал любую последовательность символов. Если переходник функционирует, терминал примет ответ в виде эха, а на плате кратковременно вспыхнут светодиоды.
Для подключения переходника к микроконтроллеру, нужно вывод RXD микроконтроллера соединить с выводом TXD переходника, а вывод TXD микроконтроллера с выводом RXD переходника. Также нужно соединить их земли.

USB UART переходник на CP2103

Микросхема CP2103 фирмы Silicon Labs - это по сути аналог FT232. Имеет простую схему включения с минимальным количеством внешних компонентов, позволяет организовать полноценный COM порт со всеми его сигналами, имеет дополнительные пользовательские выводы и программу для их конфигурации, драйвера, маленькие габариты и более демократичную цену. Из недостатков стоит отметить мелкий и неудобный для запайки в домашних условиях корпус. Пожалуй, это главная причина непопулярности этой микросхемы в среде самодельщиков.
Ради интереса я сделал USB UART преобразователь и на ее базе. Все пользовательские выводы развел на PLS`ки по краям платы. RXD и TXD вывел на отдельный разъем. Джампер для выбора напряжения питания выводов здесь не понадобился, так как это напряжение не может быть большее 3.6 В. USB разъем выбрал в мини исполнении, плату развел в одном слое с четырьмя перемычками на обратной стороне. Светодиоды для индикации передачи/приема данных не сделал, потому что микросхема CP2103 не имеет выделенных для этих целей выводов. Можно задействовать любые пользовательские выводы, но их нужно конфигурировать с помощью специального софта. Когда я это узнал, переходник уже был готов и переделывать его было лень, особенно после мучений с запайкой. Единственное, что я добавил из индикации - это светодиод по питанию.


Схема USB-UART преобразователя на CP2103


Внешний вид полученного девайса

Я немного помучился с изготовлением этого переходника. Во первых между ножками CP2103 очень маленький зазор, нужно аккуратно делать плату. Во вторых ее сложно припаять. Если бы у меня не было фена, я бы за это вообще не взялся.
Запаивал я ее следующим образом. Залудил плату сплавом Розе. Он плавится при 100 градусах, что позволяет избегать перегрева платы и микросхемы. Обильно смочил посадочное место микросхемы флюсом и положил ее туда. Используя увеличительное стекло и пинцет, кое-как сориентировал ее по посадочному месту. Далее стал нагревать микросхему феном с температурой ~150-200 градусов. Когда припой расплавился, микросхема стала шевелиться и за счет сил поверхностного натяжения заняла точное положение на посадочном месте. Получилось очень ровно, но переходник не заработал. Я повторно нагрел микросхему и слегка придавил и пошевелил пинцетом. После этого микросхема сконтактировала с дорожками платы.
После сборки переходника нужно убедиться в отсутствии замыканий между плюсом питания, землей и выводами D+, D-, а затем между остальными выводами. Поскольку микросхема очень маленькая, между выводами легко может сесть сопля. После проверки выводов, USB UART переходник можно подключать к компьютеру.
Как и с предыдущем переходником, при первом включении система предложит установить драйвера. Скачивай их с официального сайта производителя - драйвер для CP2103 .
Установленный переходник определяется в диспетчере устройств в разделе "Порты" как "Silicon Labs CP210X USB to UART Bridge (COM6)". У тебя может быть другой номер порта.
Работоспособность проверяется аналогично, повторяться не буду.

Альтернативные варианты USB-UART адаптеров

Альтернативные варианты адаптеров можно сделать на микросхемах FT230XS и CP2102. Это урезанные и соответственно более дешевые аналоги FT232 и CP2103. Обе микросхемы имеет меньшее число пользовательских выводов и не совпадают по распиновке.

Файлы

Ссылки

Софт для настройки FT232RL - FT Prog
Софт для настройки CP2103 - Customization Utility Много весит!

Данный материал публикуется впервые, любезно предоставлен для публикации на нашем сайте компанией IC Book Labs и является эксклюзивной собственностью данной компании. Перепечатка без письменного разрешения правообладателя запрещена.


Как известно, для диагностики и перепрограммирования автомобильных систем, в частности ЭСУД, используется диагностическая линия K–Line 12 V (ISO 9141 ), электрически совместимая с последовательным интерфейсом RS232 , применяемым в персональных компьютерах. Но, при сопряжении авто и компьютера возникает проблема, связанная с тем, что обмен с автомобильными системами выполняется на скоростях 200 и 10400 бод, которые нетипичны для компьютеров. В предлагаемой статье рассматривается простое решение данной проблемы для адаптеров USB–to–COM с помощью программного обеспечения, штатно поставляемого разработчиками.


Управление скоростью обмена

Скорость обмена для последовательного интерфейса зависит от установленного делителя. Значение делителя определяется содержимым регистра Baud Rate Divisor. Анализ архитектуры контроллера и несложные расчеты показывают, что нет препятствий для использования интересующих нас скоростей в 200 и 10400 бод. Так в чем же проблема?


При написании операционных систем, драйверов и различных прикладных программ обслуживания последовательного интерфейса, в целях упрощения, использовался стандартный, ставший традиционным для персональных компьютеров, ряд скоростей: 300 , 600 , 1200 , … , 115200 бод. Скорости 200 и 10400 бод, которые использует диагностическая линия автомобиля, не входят в этот ряд.

Наша задача - обеспечить поддержку скоростей обмена, которые поддерживают контроллеры FT232 и CP2102 , но не поддерживает “классическое” программное обеспечение. Идея заключается в том, чтобы переопределить скорости из стандартного ряда новыми значениями, например, заменить 14400 бод на 10400 бод. После такого переопределения, запрос на включение режима 14400 бод будет приводить к включению режима 10400 бод. Смысл в том, что мы добавляем новую скорость, сохранив интерфейс, совместимый с имеющимся программным обеспечением. В принципе, для подстановки можно использовать любую скорость из заданного ряда.

Переопределение скоростей для контроллера CP2102

Рассмотрим реал изацию описанной выше идеи для обеспечения совместимости контроллера USB–to–COM CP2102 с контроллером электронной системы управления двигателем (ЭСУД) автомобиля. Как было сказано выше, для диагностической линии K–Line 12 V типичны скорости в 200 и 10400 бод.

К счастью, производитель контроллера CP2102 предусмотрел возможность гибкого управления режимами работы и снабдил свое устройство утилитой для переназначения скоростей обмена, поэтому сегодня нам не понадобятся дизассемблер и отладчик, наши действия будут очень простыми и сведутся к использованию штатной утилиты поставляемой компанией Silicon Labs.

Также отметим, что результатом наших действий будет изменение содержимого таблицы, хранящей значения делителей частоты для поддерживаемых скоростей. Эта таблица находится во внутренней энергонезависимой памяти микросхемы CP2102 , поэтому изменения сохранятся при выключении питания или переносе перепрограммированного устройства на другой компьютер. Для большинства применений, такой вариант удобнее, чем, например, внесение изменений в драйвер. Для обеспечения совместимости с диагностической линией автомобиля и программным обеспечением, используемым для контроля состояния ЭСУД, нам необходимо осуществить следующие переопределения: 14400 на 10400 и 300 на 200 бод.

Итак, запускаем утилиту CP210 xBaudRateAliasConfig.exe . Появляется окно CP210 x Baud Rate Configuration. Если подключено несколько устройств CP2102 , в верхней строке Connected Devices необходимо выбрать устройство, которое мы будем перепрограммировать. Если устройства подключались уже после того, как утилита была запущена, следует использовать кнопку Refresh для обновления списка задействованных адаптеров.

Нажимаем кнопку Get Configuration и получаем список поддерживаемых скоростей обмена для выбранного устройства.

Если используется один USB–to–COM адаптер, список формируется автоматически, если несколько, - то после выбора устройства обязательно следует нажать кнопку Get Configuration, иначе будет визуализироваться таблица, соответствующая не текущему, а ранее выбранному адаптеру!

Левый столбец под символом # означает условный номер скоростного режима. Столбцы High и Low в графе Application Requested Baud Rate Range содержат верхнюю и нижнюю границу диапазона скоростей, ассоциированного с данным режимом. Если запрашиваемый программным обеспечением параметр попадает в этот диапазон, он используется в текущем режиме. Для поддержки скорости, запрашиваемой программным обеспечением, используется режим, в диапазон которого попадает эта скорость. Столбцы Desired и Actual в графе UART Baud Rate показывают скорость обмена, запрограммированную для данного режима. Desired - идеальное значение (обычно из стандартного ряда скоростей). Actual – фактическое значение, которое в силу особенностей схем тактирования контроллера, не всегда равно идеальному.

Дважды щелкаем мышью на строке, соответствующей редактируемому режиму. Вводим требуемое значение скорости обмена - Desired Baud Rate. При этом автоматически обновляется фактическое значение скорости Actual Baud Rate. С точки зрения стандарта последовательного интерфейса, допустимым является отклонение ±3 %. Точность установки скорости для контроллера CP2102 удовлетворяет этому требованию. Редактируем строку 19 . Исходное значение скорости обмена 14400 бод.


Вводим новое значение – 10400 бод, нажимаем OK и переопределение задано!


Редактируем строку 28 . Исходное значение скорости обмена 300 бод.


Вводим новое значение – 200 бод, нажимаем OK и переопределение задано.

После того, как все изменения внесены, не забываем нажать кнопку Set Configuration в окне CP210 x Baud Rate Configuration и проверить, что значения Desired и Actual в редактируемых строках изменились.

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

Дополнительно отметим, что кнопка Advanced позволяет выполнить более тонкую настройку параметров. Для переопределения необходимо установить флажок Override Recommended.

Параметры Prescaler (коэффициент деления для предварительного делителя частоты) и Reload (значение для загрузки в счетчик основного делителя частоты) определяют скорость обмена Baud Rate в бодах в соответствии со следующей формулой:

Baud Rate = (24 .000 .000 /Prescaler) / (65536 -Reload)

Отметим, что контроллер CP2102 поддерживает скорости до 1 .000 .000 бод в режиме 7 и 8 –битных данных и 921 .600 бод в режиме 5 и 6 –битных данных, для полнодуплексного обмена. При установке скорости, превышающей указанные ограничения, возможны сбои в работе контроллера.

Управление таймаутом при обмене данными по USB осуществляется редактированием параметра USB Receive Timeout. Значение таймаута в секундах определяется по формуле:

Timeout = (65536 – Reload) / 500 .000

Указанный таймаут используется при передаче по USB в компьютер данных, принятых по последовательному интерфейсу. Он определяет промежуток времени, в течение которого контроллер ожидает входных данных. Если в течение заданного промежутка данные не поступают, контроллер завершает передачу по USB. Типовое значение таймаута – 1 ms. Управление таймаутом позволяет устанавливать компромисс при достижении двух взаимно противоречащих критериев:

1 . Минимизация задержки обслуживания USB устройства компьютером, что в данном случае дает увеличение скорости реакции диагностической программы на события в диагностируемом объекте.

2 . Минимизация загрузки компьютера операциями передачи пустых пакетов данных по USB, имеющими место при отсутствии поступления данных по последовательному интерфейсу. От этого зависит общая производительность.
Чем больше таймаут, тем дольше устройство “не засыпает” при отсутствии данных, то есть для улучшения первого критерия, таймаут следует увеличивать, а для второго - уменьшать.

Переопределение скоростей для контроллера FT232

Рассмотрим решение подобной задачи для одного из конкурирующих продуктов – контроллера FT232 компании FTDI. В отличие от выше приведенного примера, здесь нам придется редактировать файл конфигурации драйвера последовательного порта FTDIPORT.INF . Структура этого файла описана в , процедура редактирования полей, устанавливающих скорость обмена для последовательного порта, описана в . Поэтому, в целях компактности изложения, в нашем описании внимание акцентировано только на тех параметрах, которые необходимо изменять. Также отметим, что данный пример соответствует одному из нескольких вариантов представления параметров, все возможные варианты перечислены в , .

Находим в файле FTDIPORT.INF следующую запись:


HKR„«ConfigData»,1 ,01 ,00 ,3 F,3 F,10 ,27 ,88 ,13 ,C4 ,09 ,E2 ,04 ,71 ,02 ,38 ,41 ,9 c,80 ,4 E,C0 ,34 ,00 ,1 A,00 ,0 D,00 ,06 ,40 ,03 ,80 ,00 ,00 ,d0 ,80

Последовательность, начиная с шестого по счету параметра, содержит пары байтов, каждая из которых задает коэффициент деления частоты для делителя, определяющего скорость обмена по последовательному интерфейсу. Каждая пара соответствует определенной скорости. Рассмотрим первую пару параметров 10 h, 27 h .

1 . Так как два смежных байта 16 –битного слова записаны начиная с младшего байта, для получения 16 –битного числа, их нужно обменять местами: 10 , 27 соответствует 2710 h , h - означает, что число записано в шестнадцатеричной системе счисления.

2 . Переводим 16 –ричное число 2710 h в двоичную систему.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0
2 7 1 0

3 . Интерпретируем полученное двоичное значение. Два старших бита 16 –битного числа, а именно биты 15 , 14 определяют дробную часть коэффициента деления частоты согласно следующей таблице:

Бит 15 Бит 14 Дробн ая часть делителя
0 0 0
0 1 0 .5
1 0 0 .25
1 1 0 .125

В нашем случае дробная часть делителя равна нулю. Битовое поле 13 –0 16 –битного числа численно равно целой части делителя, переведем из шестнадцатеричной системы в десятичную 2710 h = 10 .000 .

4 . Тактовая частота на входе делителя равна 3 MHz = 3 .000 .000 Hz. Скорость обмена в бодах (Baud Rate) будет равна входной частоте делителя, разделенной на коэффициент деления.

Baud Rate = 3 .000 .000 / 10 .000 = 300 бод.

Таким образом, первая пара значений задает скорость 300 бод. Пусть нам необходимо переопределить эту скорость на 10400 бод. Вычислим требуемый коэффициент деления (Divisor):

Divisor = 3 .000 .000 / 10 .400 = 288 ,46

Ближайшее доступное значение 288 ,5 . Нам требуется задать целую часть делителя равной 288 , дробную равной 0 ,5 . Согласно таблице 2 , биты 15 ,14 будут равны 01 b, b - означает, что число записано в двоичной системе счисления. Переведем 288 в шестнадцатеричную систему: 288 =120 h. Это значение необходимо поместить в битовое поле 13 –0 . Объединяем биты 15 –14 и 13 –0 , получим 4120 h .

Для переопределения скорости 300 бод на 10400 бод запись должна иметь вид:


HKR„«ConfigData»,1 ,01 ,00 ,3 F,3 F,20 ,41 ,88 ,13 ,C4 ,09 ,E2 ,04 ,71 ,02 ,38 ,41 ,9 c,80 ,4 E,C0 ,34 ,00 ,1 A,00 ,0 D,00 ,06 ,40 ,03 ,80 ,00 ,00 ,d0 ,80

Напомним, что если драйвер устройства FT232 уже установлен, для вступления изменений в силу, программное обеспечение устройства необходимо полностью деинсталлировать и установить повторно из каталога, в котором находится отредактированный INF файл. В силу особенностей операционной системы, функция обновления драйвера или удаление устройства в диспетчере устройств может не дать результата.

Источники информации.