Использование адаптера usb–to–com для подключения контроллера эсуд автомобиля к pc. Использование адаптера usb–to–com для подключения контроллера эсуд автомобиля к pc Установка драйвера на базе операционных систем Windows

Классический конвертер 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

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

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

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 Много весит!

$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 имеет право на жизнь.

Обзор конвертера 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 и драйвера под свои проекты
К покупке рекомендую
Понравилось? Лайкни нас на Facebook