Uart usb – UART(RS-232) to USB – простой преобразователь. — USB-устройства — Компьютер и электроника к нему!!!

Преобразователь интерфейса USB UART :AVR devices

  • Автор
    Medved
  • Дата 7 апреля 2010 19:50

Рано или поздно перед разработчиком какого либо устройства на микроконтроллере появляется потребность в стыковке его с компьютером. Самое простое и очевидное решение — это заюзать COM или LPT порт компьютера. А как быть тем у кого нет COM и LPT ? Например владельцам ноутов?  Решение есть!  Встречайте этот чудесный девайс. Это преобразователь интерфейсов USB-UART.

Преобразователей подобного рода существует великое множество. Наибольшую популярность получили преобразователи FTDI. Они конечно хороши но у них есть три недостатка:

  • Стоимость. Например у нас FT232RL стоит 155 р. Довольно таки дорого
  • Корпус . Она жутко мелкая! Корпус SSOP-28 не для новичков.
  • Доступность. Достать её не так то просто. Во всяком случае у нас

Я предлагаю собрать аналогичный преобразователь на микроконтроллере Atmega8. Скажу сразу что схема и прошивка не моя. Я лишь разработал печатную плату и доработал схему. (добавил стабилитроны на 3.3 в). Итак схема :

Как видно, схема особой сложности не представляет.  Хочу обратить внимание на то что нумерация указанная на схем подходит только для микроконтроллера в DIP корпусе. Я же использовал TQFP для экономии места. Получилось у меня примерно следующее:

Скачать всё необходимое можно по ссылкам ниже. Готов ответить на все вопросы в комментариях 🙂

Первоисточник.  Тут можно найти драйвера и прошивки

Печатная плата. В формате ARES Professional

Прошивка для Atmega8

Драйвер COM порта

Рубрика:
Полезняшки

avrdevices.ru

UART — USB преобразователь на AVR своими руками

Обновлено 19.09.2015. Всем привет.  В  прошлой статье мы с Вами рассмотрели устойство для восстановления микроконтроллеров Atmega fusebit doctor (Шаг №7). Сегодня мы рассмотрим еще одно не менее важное а даже более полезное устройство UART—USB  преобразователь на микроконтроллере ATtiny2313. Если Вы увлекаетесь  электроникой и прикладным программированием, то данный девайс станет вашим верным инструментом для наладки проектируемого устройства и передачи данных на компьютер.  Что такое интерфейс UART Вы можете ознакомится в статье № 40. А вот сам преобразователь нам необходим что бы мы смогли связать ПК и наше устройство, для наладки и передачи данных. Такая необходимость всегда возникает перед разработчиком, так что будьте готовы обзавестись ним. Конечно очень просто передать на COM порт (RS232) или LPT, но не у всех есть данный порт например ноутбуки.

Есть много преобразователей, например на схеме MAX232 (RS232-UART) и другие. Но мы с Вами рассмотрим преобразователь на микроконтроллере. Если Вы увлекаетесь  электроникой и прикладным программированием, то данный девайс станет вашим верным инструментом. Ниже приведена схема преобразователя. Даная схема и драйвера были взяты из следующего ресурса http://www.recursion.jp/prose/avrcdc/, где описываются различные варианты передачи данных на ПК, а также драйверы и открытые исходники предоставленные неким автором Osamu Tamura.

Слева UART — USB  преобразователь. Как видим из схемы на ней линии передачи/приема данных TXD/RXD, резисторы R4 — ограничитель тока, R5 — защита  TXD от короткого на землю, стабилитроны на схеме для защиты сигнальных линий, резистор  R1 – питание на линии, С3 – сглаживает помехи,  R2  R3 — токоограничители. Сам микроконтроллер  ATtiny2313 в роли преобразователя. Скорость передачи конфигурируется автоматически и равняется от  600 — 38400bps, стандарт протокола  8N1. Сборка не представляет сложности все исходники, шаблоны платы, все в свободном доступе на данном ресурсе. Ниже представлены фото моей сборки этого девайса:

 

 

 

 

На схеме присутствует интерфейс для внутрисхемного программирования (5-ть штырьков внизу и 1 возле микроконтроллера).

Добавлю инфомацию, от себя для проверки на работоспособность некоторых деталей:
—  стабилитрон, для его проверки на целостность  анод на минус, — плюс через 10кОм на катод, подаем 5 В – должны получитьь заданное падение напряжения ;
—  проверяем генератор тактовой частоты – здесь необходимо в микроконтроллере выставит фьюз CKOUT,т.е.  разрешить выводить меандр задающего генератора на ножу 6  (мк ATtiny2313 – PD2). Меряем частоту. Также можно измерить напряжение, которое должн быть = половине питания = 2,86В. (у меня было так). Помните мк работает от внешнего генератора, поэтому заливаете сначала программу, а потом меняете фьюзы на внешний генератор.

Дальнейший шаг наладки этого устройства – установить драйвер на компьютер — «Virtual Communications Port» для Win — качаем архив avrcdc_inf.zip. В даном архиве 4-ри папки: raw — для (Windows 2000/XP), w2k — для Windows 2000 (bulk mode only), xpvista7 — для Windows XP/Vista/7 x32, vista64 — для Windows Vista x64. Драйвер выбирается после подключения нашего устройства. Вообщем стандартная схема. Далее для загрузки прошивки в наш контроллер качаем cdc232.2011-06-24.zip, где и выбираем прошивку под наш контроллер. Выставляем фьюзы H = 0xCD, L=0xFF. Все готово. Ниже схема взаимодействия преобразователя и ПК.

Устройство работате следующем образом: при подключении к ПК  появляется виртуальный COM- порт.  Далее происходит передача по интерфейсу RS232C, без упраляющих линий  DTR, DTS, RTS, CTS.
После этого необходимо проверить работоспособность с помощью программы Terminal — качаем там же. Результат работы преобразователя можно просмотреть на примере передачи данных по UART с DoctorAVR и контроллера сбора данных (логгера).

В следующей статье№9 рассмотрим основу работы барьера на микроконтролере, программную и аппаратную часть. На этом все. Всем пока.

Просмотрено 10447 раз.

www.ap-impulse.ru

055-UART to USB – простой преобразователь на ATtiny2313 (Версия 2). — GetChip.net

Как я уже писал раньше, спалил я дорожку питания на плате преобразователя UART-USB (на ATtiny2313) и, так как все равно решил травить новую, было принято решение внести изменения в разводку платы.

Что нового в измененной разводке?
1 Появился светодиод, светящийся при подключении к USB. Отсутствие какой либо индикации подключения очень напрягало.
2 Появилась возможность подтянуть ножку сброса к плюсу питания. Конечно, сброс можно подтянуть и внутренним резистором, но для очень «шумных» условий, я думаю, будет не лишним подтянуть внешним резистором (5-10 кОм).
3 Сделав плату немного шире, добавил к выходному разъему «землю» и плюс 5 вольт от USB. Если внешнее устройство необходимо будет запитать от USB, будет удобно это делать с одного разъема.
4 Ножки 11, 12, 13 выведены на отдельные площадки. Это сделано для того, чтобы плату можно было использовать как универсальную для различных устройств с использованием USB (термометры, даталогеры, устройства управления, сигнализации и т.д.).

Все остальное (прошивка, фьюзы, драйвер) осталось прежними.

Думаю не лишним будет еще раз описать процедуру установки драйвера и работу с преобразователем.

Этот преобразователь взят с сайта  www.recursion.jp/avrcdc/ .  Я немного модифицировал оригинальную схему, добавил стабилитроны в линии USB, что улучшило совместимость с подключаемыми схемами. На схеме красным показаны изменения.

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

055-T2313-SMD-2 v2.0 — Рисунок печатной платы UART-USB на ATtiny2313

Готовая плата имеет вот такой вид:

2 Далее нужно прошить микроконтроллер. Программатор подключается прямо на разъем.  Штырек сброса Рядом с UART разъмом. При программировании преобразователь нужно запитать напряжением 5v от внешнего источника. Через USB нежелательно.

041-T2313.hex v1.0 — Прошивка преобразователя UART to USB для ATtiny2313
041-T2313-FuseBit — Фьюзы для микроконтроллера ATtiny2313 (преобразователь UART to USB)

 

3 После того как устройство собрано и прошито необходимо установить драйвер виртуального COM порта.
Качаем архив и выбираем нужный драйвер
040-avrcdc_inf.zip v1.0 — Драйвер «Virtual Communications Port» для Win
В архиве есть папки для разных Win:
/raw — для (Windows 2000/XP)
/w2k — для Windows 2000 (bulk mode only)
/xpvista7 — для Windows XP/Vista/7 x32
/vista64 — для Windows Vista x64 (так же работает и на Win7 x64)

Установить драйвер очень просто:


3.1 Вставляем «флешку-преобразователь» в USB порт;

 

3.2 Получаем в трее сообщение о том, что найдено новое устройство «USB-232»;

 


3.3 Запустится «Мастер нового оборудования», выбираем «Установка из указанного места», жмем «Далее»;

 


3.4 Выбираем «Включить следующее место для поиска» и в окошке указываем нужный путь к выбранному драйверу;
3.5 Жмем «Далее», драйвер установится, жмем «Готово»

Теперь в «Свойствах» «Моего компьютера» в закладке «Оборудование» нажимаем кнопку «Диспетчер устройств». В окошке диспетчера устройств в разделе «Порты (COM и LPT)» увидим новое устройство — «Virtual Communications Port (COM5)» — это и есть наш виртуальный COM порт.


Для каждого USB порта будет назначен свой виртуальный COM порт (COM5, COM6, COM7 и т.д.).

 

4 Готово! Теперь можно пользоваться преобразователем.

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

На нужные штырьки цепляем «джампер-перемычку». Запускаем программу для работы с COM портом. Можно использовать стандартный виндовский гипертерминал, но мне больше нравиться другая программка — маленькая, портативная и функциональная.

Terminal v1.0 — Программа для работы с COM портом

Запускаем программу, устанавливаем нужный порт (смотрим номер порта в диспетчере устройств), скорость и другие параметры оставляем как есть, нажимаем «Connect», в окошке возле кнопки «->Send», пишем сообщение, нажимаем «->Send» и сморим результат. Нижнее окно — отправленное сообщение, большое окно — принятое сообщения. Если все работает — сообщения будут одинаковыми.

Преобразователь работает. Теперь можно подключить любое устройство с UART выходом к компьютеру через USB порт.  Очень удобно!

 

Файлы к статье:
055-T2313-SMD-2 v2.0 — Рисунок печатной платы UART-USB на ATtiny2313
041-T2313.hex v1.0 — Прошивка преобразователя UART to USB для ATtiny2313
041-T2313-FuseBit — Фьюзы для микроконтроллера ATtiny2313 (преобразователь UART to USB)
040-avrcdc_inf.zip v1.0 — Драйвер «Virtual Communications Port» для Win
Terminal v1.0 — Программа для работы с COM портом

Смотрим также:
041-UART to USB – простой преобразователь на ATtiny2313. — первая версия (есть TH вариант платы).
040-UART(RS-232) to USB-простой преобразователь. — расширенная версия преобразователя на ATmega8/48/88/168

(Visited 20 366 times, 13 visits today)

www.getchip.net

041-UART to USB – простой преобразователь на ATtiny2313. — GetChip.net

Честно признаться, поначалу я не планировал повторять на микроконтроллере ATtiny2313 схему преобразователя UART to USB из прошлого поста, так как функциональность варианта на ATmega8/48/88/168 лучше, больше возможностей, небольшой размер. Но в виду большей доступности и меньшей стоимости микроконтроллера ATtiny2313 решил, все-таки, сделать еще один преобразователь. Начав делать новый преобразователь понял, что принял правильное решение. Разводка печатной платы для СМД компонентов получилась очень удачной (самому нравиться !) – односторонняя, компактная, без перемычек. Кроме того, неожиданно, для данного преобразователя нашлось необычное применение (об этом будет отдельный пост). Как и в предыдущей схеме для преобразователя будут варианты прошивок для SPI to USB, IN-OUT то USB, а попозже, когда разберусь с более срочными проектами, будут еще варианты применений. Короче – продолжение следует …

Внимание! Появилась новая версия печатной платы преобразователя. 055-UART to USB – простой преобразователь на ATtiny2313 (Версия 2). Внесены изменения делающее преобразователь еще удобнее, прошивка и драйвер остались прежними.

Итак, для начала схема преобразователя

Схема взята с сайта источника (там же можно найти описание).

Поразмыслив над вариантами применения схемы, решил немного модифицировать схему (на схеме красными показаны изменения).


Зачем мне понадобилось менять схему?
USB порт имеет выход питания 5v, в то же время уровни сигнальных линий 3.3v. При питании микроконтроллера напрямую от USB порта уровни сигнала на ножках будут 5v. Для сигнальных линий USB порта это много.
В оригинальной схеме для приведения уровней сигналов микроконтроллера к нужным 3.3v микроконтроллер запитывается через светодиод. В результате падения напряжения на светодиоде напряжение питания на микроконтроллере выходит в пределах 3-с-чем-то вольт (зависит от потребления микроконтроллера и типа светодиода). Соответственно и уровень на сигнальных линиях будет те самые 3-с-чем-то вольт.
Достоинство такого решения – простота. Недостатки – заниженное питание микроконтроллера (хотя можно опускать и до 2.8v, но с уменьшением питания возможны проблемы при такой частоте задающего генератора). Еще один недостаток несоответствие уровней преобразователя и устройства, к которому он должен будет подключаться (в большинстве случаев в устройствах питание 5v). При соединении линий с разными уровнями напряжений в них появляются уравнивающие токи. Их можно уменьшить, поставив в разрыв ограничительный резистор (схема становится более восприимчива к помехам) или собрав схемку согласования.

Я выбрал другой вариант — запитать микроконтроллер напрямую от USB порта (5v) и поставить на сигнальные линии стабилитроны. Стабилитроны уменьшают напряжение на линиях до необходимого уровня. Но нужно поставить стабилитроны немного большего напряжения (достаточно 3.6v), иначе через стабилитрон будет замыкаться на «землю» выходной сигнал USB порта.
Достоинства схемы – микроконтроллер работает от штатных 5v и при этом не требуется согласования с подключаемым устройством. Вот исходя из этих соображений я и поменял схему.

Собираем преобразователь.
Как и в предыдущем посте не плате предусмотрен стандартный разъем USB-папа. С таким разъемом не будут возникать проблемы с подключением. Можно воткнуть прямо в комп, а если нужно преобразователь приблизить к устройству – используем USB-удлинитель.
041-T2313-SMD.lay v1.0 [25.03 KB] — Печатная плата в формате Sprint-Layout для SMD компонентов
Печатная плата получилась компактная, односторонняя и без перемычек. Есть, правда, одна перемычка – резистор с нулевым сопротивлением, но он нужен как защита от перегрузок порта. При возникновении короткого замыкания питающих линий USB порта резистор с нулевым сопротивлением перегорит и разомкнет цепь.

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

Плата в сборе:

Как видно на плате не установлены все резисторы – они не нужны для преобразователя UART – USB, но могут понадобится для других целей. Позже под конкретные цели мы их припаяем.

Разъемы я припаял угловые, чтобы меньше торчали. Сзади платка тоже выглядит довольно аккуратно.

На плате есть разъемы для программатора. Программировать можно прямо в USB порте, но лучше запитать плату от внешнего источника.
041-T2313.hex v1.0 [2.54 KB] — Прошивка преобразователя UART to USB для ATtiny2313

041-T2313-FuseBit [3.55 KB] — Фьюзы для микроконтроллера ATtiny2313 (преобразователь UART to USB)
После прошивки нужно установить драйвер для виртуального COM порта. Драйвер берем здесь или с предыдущего поста (он один и тот-же), там-же описано как его установить.
040-avrcdc_inf.zip (20444)
После установки драйвера преобразователь будет видеться компьютером как COM порт, и соответственно работать с ним будут все программы работающее с COM портом.

Для проверки работоспособности собранного устройства замыкаем вход с выходом и посылаем сообщения в COM порт с программы терминала. Отправленные сообщения должны вернуться как принятые. В предыдущем посте смотрим как это сделать.
Terminal (18447)

Есть печатная плата для варианта микроконтроллера в DIP корпусе и TH-компонентами:

041-T2313-TH.lay [16.63 KB] — Печатная плата UART to USB в формате Sprint-Layout для TH компонентов
Собранная плата выглядит вот так:

Устройство готово!

P.S. Немного тормозю с постами — отпуск.

 

(Visited 14 823 times, 8 visits today)

www.getchip.net

AVR272: пример USB CDC моста UART USB | avr-working-with-usb

Перевод апноута Atmel «AVR272: USB CDC Demonstration UART to USB Bridge» [1].


Мост USB <—> UART может быть реализован на любом микроконтроллере AVR с аппаратной поддержкой USB. Возможности моста:

  • Поддержка Windows 2000 и более поздними версиями Windows.
  • Не нужна установка драйвера.
  • Энумерация USB-устройства в качестве виртуального COM-порта (Virtual COM Port).
  • Мост USB <—> RS232 с динамически изменяемой скоростью.
  • Реализовано питание от интерфейса USB (внешний источник питания не нужен).

[Введение]

Интерфейс RS232, несмотря на свою популярность и простоту использования для разработчиков, постепенно исчезает на PC и вытесняется интерфейсом USB. Чтобы соответствовать переменам, все приложения, ранее основанные на UART, должны мигрировать на USB. Миграция на USB может означать довольно большие проблемы разработки программного обеспечения как со стороны аппаратуры (firmware), так и со стороны ПО хоста (программа, работающая на компьютере, software). Чтобы избежать этих проблем в разработки, Atmel предлагает решение в виде класса CDC (Communication Device Class) со следующими достоинствами:

  • Не нужно менять ПО хоста (приложение software, работающее на PC).
  • Незначительные, хорошо документированные изменения со стороны аппаратной реализации устройства (firmware и hardware).

Назначение этой статьи — подробное описание процесса быстрого старта и реализации приложения CDC (Virtual COM Port и мост UART <—> USB) на примере стартер-кита STK525 (примечание переводчика — можно использовать чип AVR AT90USB162 и макетные платы AVR-USB162 и AVR-USB162MU) и программного обеспечения Flip (система прошивки firmware чипа через USB). Подразумевается, что пользователь знаком о существовании USB Software Library for AT90USBxxx Microcontrollers (Doc 7675, которая имеется на CD-ROM и WWW-сайте Atmel), так как примеры кода находятся там.

[Требования к аппаратуре (hardware)]

Приложение USB CDC требует следующего аппаратного обеспечения:

1. Отладочная плата AVR USB (STK525, AT90USBKey, STK526 или Ваша собственная плата, на которой установлен чип AVR с аппаратной поддержкой USB. Примечание переводчика: подойдут также платы teensy, AVR-USB162, AVR-USB162MU, userial).
2. На отладочной плате либо в вашей аппаратуре должен стоять микроконтроллер AVR USB (т. е. микроконтроллер AVR с аппаратной поддержкой USB. Примечание переводчика: в случае макетных плат AVR-USB162, AVR-USB162MU, userial это будет микроконтроллер AT90USB162, AT90USB162MU или AT90USB647 соответственно).
3. Обыкновенный соединительный кабель miniUSB (с одной стороны стандартная вилка типа A, с другой стандартная вилка Mini B).
4. Стандартный скрестный кабель RS232 (DB9 папа DB9 мама или аналогичный).
5. Компьютер PC с установленной операционной системой Windows (версия 2000, XP или более поздняя), и с поддержкой хоста USB 1.1 или USB 2.0.

[Программирование чипа прямо в системе — In system programming, Device Firmware Upgrade]

Чтобы прошить чип AVR USB программой firmware, в общем случае Вы можете воспользоваться следующими методами:

  • Интерфейс JTAG, используя в качестве программатора JTAGICE mkII (см. [4]).
  • Интерфейс SPI (ISP), используя в качестве программатора JTAGICE mkII или AVR Dragon.
  • Кабель USB благодаря записанному в чип уже на заводе DFU bootloader и программному обеспечению Flip.
  • Параллельное высоковольтное программирование (HVSP), используя в качестве программатора STK500 или STK600. В этом случае нужно иметь чип отдельно, т. е. чип, не установленный в систему (не впаянный в плату).

Внимательно ознакомьтесь на документацию по Вашему аппаратному обеспечению, чтобы выбрать нужный способ программирования чипа, который стоит на Вашей плате (если Вы используете стартер-кит от Atmel). Примечание переводчика — для плат AVR-USB162, AVR-USB162MU, userial самым удобным методом будет использование DFU bootloader и программы Flip — чип можно прошить прямо через USB, никакой дополнительный программатор не нужен. Как устанавливать и использовать программу Flip подробно описано в [5]. Вам нужно только установить саму программу и драйвер для DFU bootloader (драйвер находится в папке, куда установлена программа Flip).

[Быстрый старт]

Как только Вы запрограммировали в Ваш чип программу firmware usb_cdc.a90 (это бинарная прошивка в формате HEX, см. [2]), нажмите на кнопку Start Application в программе Flip, либо переподключите интерфейс USB с Вашим устройством с AVR USB. Система Windows обнаружит новое устройство, и запустится Мастер установки драйвера. Укажите мастеру на папку с inf-файлами driver из архива [2]. После окончания процесса энумерации устройства USB CDC операционная система подключит его как виртуальный COM-порт, см. скриншот.

На фото показан стартер-кит STK525, на котором может быть запущен код устройства USB CDC, и показаны коннекторы USB и RS232, между которыми будет получен мост. Джойстик нужен как устройство ввода внешних событий, по которым в виртуальный COM-порт будут посылаться данные.

Демонстрация передачи данных в программу PC через виртуальный COM-порт

Назначение виртуального демонстрационного COM-порта (USB CDC), код которого записан в память чипа — показать, как может старое приложение PC без своей переделки обмениваться информацией с устройством USB. Следуйте дальнейшим инструкциям для запуска демо.

1. Запустите программу Hyper Terminal (она входит в состав стандартного пакета приложений Windows), и выберите в ней тот COM-порт, который появился в Диспетчере Устройств (для нашего примера предположим, что это COM5).

2. Покачайте джойстик, и Вы увидите в консоли вывод информации, соответствующей положению джойстика.

Демонстрация работы моста USB <—> RS232

Еще одна задача демонстрационного примера — показать, как могут передаваться данные в полнодуплексном режиме между UART (RS232) и интерфейсом USB. Выполните следующее, чтобы запустить это демо.

1. Соедините порт RS232 стартер-кита STK525 с портом PC RS232 (коннектор DB9).

Примечание: если на Вашем PC нет интерфейса RS232, то Вы можете использовать еще одну плату STK525 — соедините скрестным кабелем DB9 — DB9 обе платы между собой, и подключите по USB обе платы в PC.

2. Запустите сразу две программы Hyper Terminal, и в одной откройте порт RS232 (один COM-порт), а во второй откройте Virtual COM Port устройства USB CDC (другой COM-порт). Установите при этом одинаковые параметры подключения (скорость baudrate, количество бит данных data bits, четность parity, количество стоп-битов stop-bits, управление потоком flow control).

3. Напечатайте что-нибудь в одном окне терминала программы Hyper Terminal, и Вы увидите печатаемые данные в другом окне программы Hyper Terminal.

Примечание переводчика: для запуска примера в режиме моста Вы можете использовать две макетные платы AVR-USB162 (или AVR-USB162MU, или userial), записав в них одинаковое firmware демонстрационного USB CDC, и обе подключив к компьютеру по USB. Соедините также сигналы приема/передачи TXD и RXD двух плат крест-накрест, т. е. TXD UART от первой платы подключите к RXD UART второй платы, и RXD первой платы подключите к TXD второй.

[Обзор приложения firmware USB CDC]

Приложение firmware USB CDC позволяет пользователю симулировать порт RS232, используя аппаратуру USB. Устройство USB появляется в операционной системе как COM-порт. Это позволяет использовать без изменений приложения PC, рассчитанные на работу с COM-портом. Со стороны аппаратуры требуются некоторые изменения — нужно заменить в firmware и hardware драйвер UART на драйвер UART-USB. Пользователь будет теперь применять функции UART-USB вместо функций UART, чтобы связаться с PC. После того, как устройство USB CDC прошло энумерацию, приложение получит возможность полнодуплексной связи для передачи данных между PC и периферийными устройствами. На рисунке показана схема миграции.

[Описание компонентов firmware, архитектура USB CDC]

Эта секция посвящена только модулю CDC. Модификация и настройка под себя файлов, описанных здесь, позволит пользователю построить свое собственное приложение firmware устройства USB CDC (виртуальный COM-порт). На диаграмме внизу в качестве примера показана структура алгоритма демо-приложения USB CDC, работа которого описана в статье.

[cdc_task.c]

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

cdc_task_init

Эта функция выполняет инициализацию параметров CDC и ресурсов аппаратуры (например, портов ввода для кнопок джойстика).

cdc_task

Эта функция управляет потоком данных для двух демонстрационных функций приложения (Virtual COM Port и мост UART <—> USB).

[uart_usb_lib]

uart_usb_test_hit

Эта функция делает проверку — принят ли хотя бы один символ через USB.

uart_usb_getchar

Эта функция возвращает байт, принятый через FIFO конечной точки OUT.

uart_usb_putchar

Эта функция записывает байт, переданный в параметре, в FIFO конечной точки IN. Она также заменяет собой функцию putchar, которая входит в состав библиотеки UART. Например, функция printf может использовать для вывода функцию uart_usb_putchar вместо функции putchar.

uart_usb_tx_ready

Эта функция делает проверку — можно ли записать байт в FIFO конечной точки IN.

uart_usb_flush

Эта функция отправляет хосту данные, накопленные в конечной точке IN.

[stk_525.c]

Этот файл содержит все подпрограммы для управления ресурсами платы STK525 (джойстик, потенциометр, датчик температуры, светодиоды и проч.).

Описанное демонстрационное устройство USB CDC использует драйверы, которые изначально встроены в операционную систему Windows. Для установки устройства в систему нужен только INF-файл, который Вы можете найти в [2]. Это устройство USB CDC не будет работать на Windows 98 и Windows ME, так как в них нет встроенного драйвера устройства CDC. Также устройство может работать под управлением операционных систем семейства Linux OS в зависимости от конфигурации операционной системы.

[Описание содержимого архива [2]]

Содержимое архива разбито на 4 папки appnotes, bin, driver, USB CDC Virtual Com Port.

appnotes — апноуты AVR272 doc7619.pdf (материал этой статьи) и AVR4907 doc8447.pdf.

bin — скомпилированный код демонстрационного примера USB CDC, описанного в этой статье, для разных серий микроконтроллеров AVR USB (Series2, Series4, Series6). Для макетной платы AVR-USB162 с частотой кварца 16 МГц берите бинарник Series2\STK526-AVR-USB162-series2-cdc-at90USB162-16MHz(GCC).hex.

driver — INF-файл для Мастера установки оборудования Windows.

USB CDC Virtual Com Port — исходный код для демонстрационного устройства USB CDC, который Вы можете скомпилировать сами, имея GCC (WinAVR или WinAVR + AVR Studio) или IAR.

[Как компилировать исходный код USB CDC Atmel]

В папке USB CDC Virtual Com Port архива AVR272_USB_CDC_Virtual_Com_Port.zip содержатся еще 3 архива:
series4-cdc-2_0_3-doc.zip, STK526-series2-cdc-2_0_3-doc.zip, USBKEY_STK525-series6-cdc-2_0_6-doc.zip. Как можно понять по названию, они предназначены для разных макетных плат и серий AVR USB (все микроконтроллеры Atmel AVR USB условно разделены по сериям — Series2, Series4, Series6, Series7).

STK526-series2-cdc-2_0_3-doc.zip

Здесь находится код примера USB CDC для микроконтроллеров AVR USB серии 2 (Series2) и макетной платы Atmel STK526. К этой серии относятся самые маломощные микроконтроллеры AVR с аппаратным интерфейсом USB: AT90USB82, AT90USB162, ATmega8U2, ATmega16U2, ATmega32U2. Этот пример нужно брать за основу USB CDC для макетных плат AVR-USB162, AVR-USB162MU (на них стоит чип AT90USB162), и потребуются минимальные доработки кода.

Как компилировать код через GCC (WinAVR):
1. Распаковать содержимое STK526-series2-cdc-2_0_3-doc.zip в любую папку.
2. Перейти в папку STK526-series2-cdc-2_0_3-doc\demo\STK526-series2-cdc\gcc\.
3. выполнить команду make clean и затем make.
4. После успешной компиляции получите файл STK526-series2-cdc.hex — это и есть код firmware для демонстрационного примера USB CDC устройства.

Опции компиляции настраиваются в отдельном файле config.mk — там можно настроить имя проекта (PROJECT), и тип микроконтроллера (MCU). Тактовая частота микроконтроллера задается в файле STK526-series2-cdc-2_0_3-doc\demo\STK526-series2-cdc\conf\config.h значением переменной FOSC (частота в килогерцах). Для того, чтобы скомпилировать код для макетной платы AVR-USB162 или AVR-USB162MU, нужно перед компиляцией (make clean, make) поменять в файле config.mk тип процессора на at90usb162, и в файле conf\config.h поменять частоту процессора FOSC на 16000:

[config.mk]
MCU = at90usb162

[config.h]
#define FOSC 16000

series4-cdc-2_0_3-doc.zip

Здесь находится код примера USB CDC для микроконтроллеров AVR USB серии 4 (Series4) и макетной платы Atmel EVK527. К этой серии относятся микроконтроллеры средней мощности с аппаратным интерфейсом USB: ATmega16U4, ATmega32U4.

Опции компиляции настраиваются точно так же, как и для STK526-series2-cdc-2_0_3-doc.zip, компиляция делается стандартно — make clean, make. После успешной компиляции получите файл EVK527-series4-cdc.hex — это и есть код firmware для демонстрационного примера USB CDC устройства.

USBKEY_STK525-series6-cdc-2_0_6-doc.zip

Здесь находится код примера USB CDC для микроконтроллеров AVR USB серии 6 (Series6) и макетных плат Atmel USBKEY, STK525. К этой серии относятся самые мощные микроконтроллеры AVR с аппаратным интерфейсом USB: AT90USB646, AT90USB1286. Для микроконтроллеров AT90USB647 и AT90USB1287 нужно взять библиотеку кода USB для серии 7 (Series7), см. AVR USB Series7 Software Packages на сайте Atmel.

Опции компиляции настраиваются точно так же, как и для STK526-series2-cdc-2_0_3-doc.zip, компиляция делается стандартно — make clean, make. После успешной компиляции получите файл USBKEY_STK525-series6-cdc.hex — это и есть код firmware для демонстрационного примера USB CDC устройства.

Если Вы взяли код не по ссылке [2], а скачали прямо с сайта Atmel, то при компиляции (относится ко всем примерам кода Series2, Series4 и Series6) может произойти ошибка:
../main.c: In function ‘main’:
../main.c:105: error: expected expression before ‘do’
../main.c: In function ‘__low_level_init’:
../main.c:124: error: expected expression before ‘do’
make: *** [../main.o] Error 1

Это может произойти потому, что неправильно определен макрос Clear_prescaler (см. файл lib_mcu/power/power_drv.h):
#define Clear_prescaler() (clock_prescale_set(0))
исправьте на
#define Clear_prescaler() clock_prescale_set(0)

[Ссылки]

1. AVR272: USB CDC Demonstration UART to USB Bridge site:atmel.com — оригинал статьи на английском языке.
2. 120206AVR272_USB_CDC_Virtual_Com_Port.zip — исходный код firmware демонстрационного устройства USB CDC, описанного в статье, и бинарники, скомпилированные для макетных плат AVR-USB162, AVR-USB162MU (микроконтроллер AT90USB162). В папке driver находится INF-файл, который нужно предложить Мастеру установки оборудования Windows при первом подключении демо-устройства USB CDC.
3. AVR276: USB Software Library for AT90USBxxx Microcontrollers.
4. Atmel AVR JTAGICE mkII.
5. Макетная плата AVR-USB162 — здесь подробно описывается работа с утилитой USB бутлоадера Flip.

microsin.net

6-ти пиновый конвертер USB/UART CP2102 для тех кто не любит давить ресет на Arduino

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

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

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

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

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

Я заказываю в различных зарубежных интернет магазинах.
Данный модуль заказал у проверенного продавца на Ebay по этой ссылке за $1.79

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

  • Чип 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. Защита конфигурационных данных.

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

Для этого скачиваем утилиту для настройки драйверов

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

Итог

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

Полезные ссылки

Кот Тимофей помогает разбираться с конвертером CP2102

 

со своего сайта.

samopal.pro