Установка драйвера CP210x USB to UART Bridge VCP driver. Установка драйвера CP210x USB to UART Bridge VCP driver Программа для изменения скорости ком порта cp2102

В условиях, когда современные компьютеры стремительно теряют COM-порты, преобразователь USB <-> COM — штука для радиохламера очень полезная и нужная. Но и преобразователь USB <-> UART — тоже штука полезная и нужная. Мне, естественно, захотелось иметь и то, и другое, и ещё чего-нибудь, и чтобы всё это не слишком дорого.

Купить или собрать любую из подобных штуковин сегодня не проблема. В сети — куча схем, в магазинах — куча девайсов. Однако, как оказалось, — купить их можно только отдельно друг от друга! И это не смотря на то, что все, рассмотренные мной, преобразователи USB <-> COM преобразуют уровни сигналов сначала в TTL, а уже потом в RS-232. Разумеется ни одно из подобных решений не устроило меня в плане универсальности. Зачем я буду покупать отдельно преобразователь USB <-> UART, если он уже есть в составе USB <-> COM? Размышляя подобным образом, я решил, что лишних денег у меня нет и лучшим решением будет сделать свой собственный универсальный преобразователь.

В качестве основы, была взята хорошо известная микросхема cp2102. Во-первых, она позволяет эмулировать полноценный COM-порт (все линии, а не только Rx, Tx), во-вторых, она имеет минимум обвеса и позволяет сделать плату минимальных размеров, ну и в-третьих, у неё оказалась самая привлекательная цена. Схема преобразователя практически без изменений была взята из даташита к этой микрухе, я только разрезал её напополам, чтобы при необходимости иметь возможность отделить USB to UART от UART to RS-232.

Схема преобразователя USB to UART :

Схема преобразователя UART to RS232 :

В итоге получилось даже не два (как изначально замышлялось) а целых три устройства в одном. Обе части разработанного девайса можно использовать как самостоятельные преобразователи USB <-> UART и UART <-> RS232 (жаль только, что последнему требуется внешнее питание). Соединив две части вместе, получаем преобразователь USB <-> COM. Для сопряжения частей преобразователя я использовал разъёмы IDC-14F и BH-14, которые при правильной разводке очень удачно припаиваются к двухсторонним платам (ниже на фото можно увидеть, как именно).

Фото готового устройства :

Единственный трудный момент — пайка микросхемы cp2102, поскольку она выпускается в QFN корпусе. Паять её нужно феном, предварительно облудив припаиваемые контакты на микросхеме и площадки на плате. При этом вовсе не обязательно использовать какие-то специальные дорогие флюсы. Достаточно обычной сосновой канифоли, только её нужно растворить в спирте и потом наносить на площадки шприцом или специальной кисточкой. Если спирта нет — растворить канифоль можно в водке, однако в этом случае после нанесения раствора придётся немного подождать, поскольку вода испаряется значительно хуже спирта.

Разъём USB специально соединён с платой гибким проводом, а не жёстко к ней припаян. Как показывает практика, такие преобразователи очень часто используются для подключения к компьютеру различных конвертеров (COM to HART, COM to RS485 и тому подобных) и при жёсткой пайке USB-разёма именно он чаще всего отламывается, не выдерживая веса всего подключенного к преобразователю оборудования.

Отдельно хотелось бы остановиться на вопросе выбора конденсаторов. В даташите указаны номиналы конденсаторов по питанию 4,7 мкФ и 1 мкФ. Зачастую для экономии места на плате или по каким-то другим причинам вместо них ставят конденсаторы поменьше. Опять же, как показывает практика, это может привести к нестабильности питания подключаемых к преобразователю устройств (которые не имеют внешнего питания и должны питаться от COM-порта) и, как следствие, к их неработоспособности.

Данный материал публикуется впервые, любезно предоставлен для публикации на нашем сайте компанией 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 файл. В силу особенностей операционной системы, функция обновления драйвера или удаление устройства в диспетчере устройств может не дать результата.

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

$6,3 (сейчас 1,43)

Arduino Pro Mini в комплекте с переходником USB-UART на чипе CP2102 я купил 1,5 года назад (с тех пор цены на них значительно упали) и они все это время пролежали у меня на полке. Все руки не доходили сделать что-нибудь на этом контроллере. Не последнюю роль в этом сыграло и то, что прошить скетч в Arduino Pro Mini хоть и не сложно, но немного сложнее чем в Arduino UNO, Mega или Nano.

И вот я все же решил применить этот контроллер в одном из своих проектов, все равно лежит без дела.

Arduino Pro Mini DETAILS

ATmega168 или 328

Operating Voltage

3.35 -12 V (3.3V model) or 5 — 12 V (5V model)

Digital I/O Pins

14 (of which 6 provide PWM output)

Analog Input Pins

DC Current per I/O Pin

16 KB (of which 2 KB used by bootloader)

8 MHz (3.3V model) or 16 MHz (5V model)

У меня оказалась 16MHz 5-вольтовая модель на чипе ATmega 328. Как оказалось при анализе данных из интернет, есть платы контроллеров, у которых не разведен сигнал DTR. В моем случае все разведено правильно. В комплекте шел преобразователь USB-UART.

Платформа содержит 14 цифровых входов и выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов, резонатор, кнопку перезагрузки и отверстия для монтажа выводов. Блок из шести выводов может подключаться к плате-конвертеру USB-UART.

Arduino Pro Mini по своим техническим характеристикам и параметрам очень близка с Arduino Nano. По размерам они одинаковые в ширину, но в длину Arduino Pro Mini короче примерно на 1 см.

10 мм это немало. Но вот только если в плату запаять пины для подключения USB-UART, все преимущества этой платы перед Nano пропадают. На данный момент Arduino Pro Mini стоит на $0,25 дешевле чем Arduino Nano. Это несущественно. Больше преимуществ и достоинств нет, одни недостатки.

И главный недостаток — более сложная загрузка скетчей.

Прошить скетч можно несколькими способами.

Один из способов — использовать Arduino UNO в качестве USB-UART . В интернет много инструкций как это сделать, поэтому я не буду на этом останавливаться.

Второй способ — использовать сам переходник USB-UART. Он у меня есть, причем «правильный», поэтому я и решил им воспользоваться. Как работает переходник? Arduino общается с микросхемой преобразователя по обычному UART, к компьютеру же подключается по USB. Компьютер распознает подключенный переходник как как COM-порт.

Загрузить скетч в Arduino Pro Mini, как оказалось впоследствии, совсем не сложно. Нужно только соединить проводами из комплекта 5 выводов на переходнике и Arduino:

(Преобразователь) <-> (Arduino)

DTR <-> GRN
TXD <-> RXI
RXD <-> TXO
GND <-> GND
5V <-> VCC

На моей Arduino Pro Mini сигнал DRT отмаркирован как GRN. Догадаться что есть что было непросто, тем более что на одном из сайтов «добрый» советчик написал что GRN нужно соединить с GND. Что ж, Интернет — большая помойка и я не первый раз убеждаюсь что на форумах охотнее всего дают советы совсем не те , кто действительно разбирается в обсуждаемом предмете. Так вот, GRN это DTR.

Для тех кто не знает что такое DTR:
Data Terminal Ready (DTR) — управляющий сигнал в последовательном протоколе передачи данных, передаваемый от терминального оборудования (DTE) к принимающему данные обору дованию, чтобы указать, что терминал готов к связи.

В Arduino сигнал DTR инициирует сигнал Reset в момент начала передачи скетча.

Можно вместо соединения DTR <-> GRN соединить DTR переходника через конденсатор 0,1мкФ с Reset Arduino Pro Mini. Так тоже работает, проверено. Именно через конденсатор. Несмотря на то, что на форумах и многих сайтах написано что нужно соединять DTR и RESET напрямую, при прямом соединении передача скетча не происходит. По крайней мере у меня при прямом соединении ничего не работало.

Теоретически, как пишут в интернет, можно записать скетч и без DTR, нажав точно в момент начала записи ресет на плате контроллера. Я попытался несколько раз поймать этот момент — у меня не получилось. Тренировать свои навыки в попытках попасть ресетом в нужное время я не стал, проще доверить подачу сигнала Reset микросхеме преобразователя CP2102.

Но не все CP2102 одинаково полезны. На eBay и AliExpress продется очень много дешевых подделок, с которыми народ мучается и которые часто приходится дорабатывать, чтобы они могли записать скетч в Arduino Pro Mini. В этих переходниках не разведен сигнал DTR c 28 вывода микросхемы CP2102. В некоторых перепутана маркировка Rx и Tx. Поэтому в сети на форумах так много инструкций, противоречащих друг другу и иногда просто вводящих читателей в заблуждение. Я потратил около двух часов на чтение этих бредней (не хотелось изобретать велосипед, думал сэкономить время) и попытки записать скетч в контроллер по этим инструкциям. В итоге все инструкции оказались нерабочими для моего переходника CP2102. Он у меня оказался «правильным», в котором нанесена правильная маркировка и правильно разведены все сигналы.

Достаточно было только подключить все провода и все заработало.

Поэтому, если вы столкнетесь с необходимостью записи скетча в Arduino Pro Mini через USB-UART первым делом проверьте, разведен ли сигнал DTR на плате Arduino Pro Mini. Я читал что есть такие платы, на которых он не разведен. В таком случае можно воспользоваться вариантом подключения сигнала DTR с платы переходника USB-UART к пину RESET Arduino Pro Mini через конденсатор 0,1-0,15мкФ.

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

Правильность маркировки Rx и Tx на поддельной плате CP2102 можно определить опытным путем, тут всего 2 варианта.

Я так же читал в интернет инструкцию, что через USB-UART переходник CP2102 записывать скетч нужно в режиме «Загрузить через программатор», якобы только так все работает. Я не знаю, намеренно ли автор этого опуса вводит читателей в заблуждение, или у него был не USB-UART переходник CP2102 а что-то другое, но этот совет НЕПРАВИЛЬНЫЙ !

Через USB-UART переходник CP2102 компьютер видит Arduino Pro Mini как будто он подключен к COM-порту, то есть точно так же как другие Arduino, у которых переходник USB-UART на борту.

Поэтому скетчи в Arduino Pro Mini заливаются точно так же, как в другие модели Arduino. Нужно только в среде программирования Arduino выбрать модель Pro Mini, затем в появившемся дополнительном пункте выбрать один из 4 возможных видов процессора (ATmega168 или 328, 3,3 или 5V) и виртуальный COM-порт, который появился после установки драйверов переходника USB-UART. Дальше можно пользоваться кнопкой загрузить или Ctrl-U. Если все правильно подключено, не имеет значения тип и модель переходника, скетчи заливаются по UART. Просто выбираем COM-порт которым определился переходник.

После 2 часов чтения форумов и сайтов с «руководствами» и «советами», котрые на 99% оказались неверными, по крайней мере они не подошли для конкретно моих моделей Arduino Pro Mini и USB-UART переходника CP2102, мне удалось все правильно подключить и залить в контроллер слегка модифицированный скетч мигания светодиодом. Я заставил его моргать SOS азбукой Морзе.

Вот скетч, вдруг кому будет интересно:

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
delay(100); // wait
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300);
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(300); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(300); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(300); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
delay(1500); // wait 1,5 sec.
}

Выводы:

Если бы я не пытался сэкономит время на «изобретении велосипеда» и не потратил время на чтение бесполезных (даже скорее вредных) советов и руководств на форумах и сайтах, подключение и прошивка Arduino Pro Mini заняла бы не 2 часа, а максимум минут 5-10.

Свой комплект из Arduino Pro Mini и USB-UART переходника CP2102, по сегодняшним меркам я купил дороговато. Правда меня утешает то, что переходник правильный и на нем разведены все сигналы.

Аrduino Nano идентичная по параметрам и возможностям Arduino Pro Mini, стоит совсем чуть-чуть дороже (максимум на 25-50 центов), в размерах проигрывает 1 см (а с распаянными пинами у Arduino Pro Mini и вообще не проигрывает), но гораздо удобнее в использовании за счет встроенного USB-UART и распространенного разъема MicroUSB.

Arduino Pro Mini не самая востребованная плата, наберите в поиске на eBay «Arduino Nano» и отсортируйте по цене по возрастанию и вы увидите как ушлые китайцы совсем дешево сбывают в этом разделе много Arduino Pro Mini, выдаваемых за Nano? в надежде что покупатель не разберется и, покусившись на низкую цену, купит эти контроллеры. У них вся надежда только на покупателей-лохов.

Посоветую ли я покупать Arduino Pro Mini? Новичку — нет. Да — человеку, который точно знает что это такое, какие имеет недостатки и стоят ли они той мизерной экономии.

Еще раз повторю, что прошить Arduino Pro Mini несложно, но стоит ли эта возня с подключением проводков или Arduino UNO разницы в цене $0,2-$0,25. Особенно если придется подключать контролер к компьютеру для отладки много раз, а если в корпусе? Если вы считаете что десять-пятнацать раз подсоединить-отсоединить 5 проводков выгоднее, чем заплатить 20 центов — этот контроллер для вас.

Вот собственно и все. Я поделился своим опытом и высказал свое мнение, решать — вам.

P.S. Прошло немного времени и я несколько изменил свое мнение о Arduino Pro Mini. Даже экономия в 25-50 центов это немало, особенно если собирается небольшая партия изделий, использующих этот контроллер. Понятно, что по-хорошему для небольшой партии желательно интегрировать контроллер непосредственно на плату, а не использовать готовый Arduino (это все же скорее отладочная плата). Но варианты бывают разные, иногда уже есть готовые платы и можно их модернизировать и расширить функционал, интегрировав Arduino. Это окажется дешевле чем разводить новые платы.

А наличие переходника USB-UART на борту изделия, передаваемого пользователю, совсем не нужно и даже вредно. Так что Arduino Pro Mini имеет право на жизнь.

Программировать различные ардуино- и не адуино- образные контроллеры, получать информацию на компьютер со всего, что имеет последовательный интерфейс с 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. Защита конфигурационных данных.

Адаптер RS232 порта для последовательной универсальной шины (USB to UART Bridge) представляет собой высокоскоростное USB-устройство предназначенное для подключения периферийных устройств, соответствующих стандарту TIA/EIA232.

Адаптер выполнен на основе контроллера Silicon Labs CP2102 и предназначен для использования в системах, оснащенных шиной USB. Подключение периферийных устройств выполняется с помощью стандартного разъема DB9.

  • поддержка спецификации USB 2.0;
  • полный набор сигналов интерфейса RS232;
  • амплитуда сигнала RS232 не хуже ±5.5В;
  • питание от шины USB.

Установка и подключение адаптера

  1. Перед установкой и подключением адаптера CP2102 убедитесь в том, что внешние устройства обесточены и подключены к контуру заземления.
  2. Затем, подключите внешнее устройство к разъему DB9.
  3. Установите адаптер в свободный USB-разъем, визуально контролируя посадку контактных площадок до упора в разъеме.
  4. подачи питающих напряжений на устройство ввода-вывода система готова к работе.

Приступая к установке адаптера CP2102, следует принять во внимание, что спецификация USB предполагает возможность «горячего» подключения, но ее действие не распространяется на периферийные устройства последовательного ввода-вывода. При работе с адаптером необходимо подключать только обесточенное периферийное оборудование! Несоблюдение этих правил может привести к выходу из компонентов компьютерной системы!

Установка драйвера на базе операционных систем Windows

После подключения адаптера CP2102 к USB разъему в среде операционных систем Windows 2K/XP он обнаруживается следующим образом:

Теперь необходимо скачать драйвер CP210x USB to UART . Запускаем его установку:

В процессе работы пре-инсталлятора пользователь может указать каталог, в котором будут храниться драйвера устройства CP210x :


Если операционная система затребует информацию о размещении драйверов устройства, пользователь обязан будет указать путь к ним. Программная модель адаптера CP2102 состоит из композитного устройства и моста USB to UART, каждая из которых описана собственным inf -файлом.

Поэтому в процессе автоматического обнаружения операционная система последовательно запрашивает оба файла.

Драйвера адаптера должны быть предложены системе для установки из каталога, указанного в процессе пре-инсталляции, если иное не предусматривает сам пользователь. Первоначально операционная система устанавливает драйвера для композитного устройства (USB Composite Device):

Если текущая версия драйверов USB Composite Device не подтверждается цифровым сертификатом компании Microsoft, пользователь предупреждается об этом следующим сообщением:

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

Следующий этап инсталляции – драйверы моста USB to UART. Как и на предыдущем шаге рекомендуется автоматическая установка.

Если текущая версия драйверов USB to UART Bridge Controller не подтверждается цифровым сертификатом компании Microsoft, пользователь предупреждается об этом со общением. Путь к необходимым файлам выбирается исходя из условий пре-инсталляции:

После инсталляции в свойствах системы появляется контроллер универсальной последовательной шины CP210x USB Composite Device, и последовательный порт COM3, реализованный с помощью CP210x USB to UART Bridge Controller, а список устройств при обретает следующий вид:

Все, драйвер установлен!