Виртуальный СОМ-порт CDC-232 на AVR-микроконтроллере

AVR-CDC предназначена для конвертации RS232 и USB  данных с применением AVR-микроконтроллеров, без использования какого-либо специализированного USB-чипа. Данная технология основывается на Object Deveopment’s V-USB (Software-USB на AVR), и CDC (Communication Device Class) протоколах. AVR-CDC позволяет компьютеру взаимодействовать с USB-устройствами через виртуальный COM-порт. В этом проекте я хочу привести несколько вариантов реализации виртуального COM-порта на AVR-микроконтроллерах.

CDC-232 создает виртуальный COM-порт на ПК, который не имеет физического порта RS- 232C. Он обеспечивает соединение RS-232C (без управляющих линий) после подключения устройства и установки драйвера.

Использование

Запишите программу в AVR, соберите схему и подсоедините устройство к USB порту ПК. Установите драйвер под ОС Windows. Подключитесь к устройству через появившийся виртуальный COM-порт с помощью программного обеспечения терминала или вашего приложения. Управляющие линии (DTR, DTS, RTS, CTS) не используются хост приложением. Запрограммируйте терминальное приложение как «no flow-control» (без управления потоками данных).

ОС Windows повторно запросит установку драйвера при подключении к другому USB порту. Далле произойдет автоматическое обнаружение ранее установленного драйвера. После этого будет назначен другой номер COM-порта. Если вы введете номер последовательного порта в AVR (обновите с измененным файлом usbconfig.h), тогда вы получите тот же самый COM-порт на любом USB порте. Однако нельзя подключить несколько CDC устройств к одному и тому же последовательному порту.

Перед отключением устройства закройте вручную COM-порт с помощью программного обеспечения терминала или вашего приложения. В противном случае вы не сможете подключиться к устройству снова из-за повреждения индекса файла. Далее перезапустите программное обеспечение терминала или ваше приложение. Переключитесь в режим быстрой передачи, используя файл «lowcdc.vbs». Это позволит получить скорость передачи данных выше, чем 9600 бит/сек.

Циклический тест для версии ATtiny45

Схемные решения

Данные схемы предназначены для ATtiny45/85, ATtiny2313/AT90S2313, и ATmega8/48/88/168. Их микропрограммное обеспечение можно загружать через ISP-разъем. Красный светодиод понижает USB напряжение с 5В до 3.3В, затем оно подается на AVR. Ток составляет около 10мА, и его недостаточно для управления другой схемой. При подключении к другому микроконтроллеру, подсоедините вывод Gnd, а также перекрестно TxD и RxD. R4 ограничивает утечку тока, когда напряжение питания микроконтроллера Vcc составляет 5В. Резистор можно не использовать, если Vcc совпадает. R5 защищает вывод TxD, если он будет закорочен на Gnd. Поэтому вы можете не использовать оба резистора R4 и R5, если подключитесь к RS- 232C драйверу через MAX232. Используйте кварцевый генератор. Хотя керамический резонатор отлично работает в большинстве случаев, он становится нестабильным, когда отклонение частоты увеличивается.

ATtiny45/85 использует внутренний RC-генератор и PLL. Он калибруется USB сигналом при подключении устройства. Универсальный асинхронный интерфейс UART реализован программным методом. Этого недостаточно для скоростной передачи данных. Если TxD и RxD инверсные (обновите с помощью опции DUART_INVERT), вы сможете напрямую подключаться к линии RS-232C. Скорость 1200 – 4800бит/сек, протокол 8N1.

CDC-232 для ATtiny45-20
CDC-232 для ATtiny45-20

Пример ATtiny45 при использовании мини-B коннектора

ATtiny2313/AT90S2313 имеет программную память величиной 2кБ. Хотя скорость передачи данных конфигурируется автоматически, некоторые функции не используются. Скорость 600 – 38400бит/сек, протокол 8N1.

​CDC-232 для ATtiny2313-20
CDC-232 для ATtiny2313-20

Внутренний Универсальный асинхронный интерфейс UART ATmega8/48/88 конфигурируется с помощью ПК. Поддерживается управление потоком данных (RTS/CTS).

Скорость 600 – 38400бит/сек, данные 7/8, контроль по четности N/E/O, стоп 1/2.

CDC-232 для ATmega8/48/88-20
CDC-232 для ATmega8/48/88-20

Подключение к RS-232C каналу требует инвертирования полярности и подбора уровня TxD и RxD. Используйте выделенную ИС, такую как MAX232. Вы сможете заменить ей эту простую схему.

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

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
CDC-232 для ATtiny45
U1 МК AVR 8-бит ATtiny45 1
LED1 Светодиод Красный 1
R1 Резистор 1.5 кОм 1
R2, R3 Резистор 68 Ом 2
R4 Резистор 10 кОм 1
R5 Резистор 470 Ом 1
C1 Конденсатор 0.1 мкФ 1
CN1 USB-коннектор XM7B-0442 1
CDC-232 для ATtiny2313
U1 МК AVR 8-бит ATtiny2313 1
LED1 Светодиод Красный 1
R1 Резистор 1.5 кОм 1
R2, R3 Резистор 68 Ом 2
R4 Резистор 10 кОм 1
R5 Резистор 470 Ом 1
C1, C2 Конденсатор 18 пФ 2
C3 Конденсатор 0.1 мкФ 1
X1 Кварцевый резонатор 12 Мгц 1
CN1 USB-коннектор XM7B-0442 1
CDC-232 для ATmega8/48/88
U1 МК AVR 8-бит ATmega8 1
LED1 Светодиод Красный 1
R1 Резистор 1.5 кОм 1
R2, R3 Резистор 68 Ом 2
R4 Резистор 10 кОм 1
R5 Резистор 470 Ом 1
C1, C2 Конденсатор 18 пФ 2
C3 Конденсатор 0.1 мкФ 1
X1 Кварцевый резонатор 12 Мгц 1
CN1 USB-коннектор XM7B-0442 1
Подключение к RS-232C каналу
Q1 Биполярный транзистор 2SC1815 1
Q2 Биполярный транзистор 2SA1015 1
D1 Выпрямительный диод 1N4148 1
R1-R3 Резистор 10 кОм 3
R4 Резистор 3.3 кОм 1
Когда целевой микроконтроллер имеет другое напряжение питания
D1, D2 Выпрямительный диод 1N4148 2
R1, R2 Резистор 3.3 кОм 2 10 кОм