Виртуальный СОМ-порт 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

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

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


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

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

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

Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

CDC-232 для ATtiny45U1
МК AVR 8-битATtiny451
LED1
СветодиодКрасный1
R1
Резистор1.5 кОм1
R2, R3
Резистор68 Ом2
R4
Резистор10 кОм1
R5
Резистор470 Ом1
C1
Конденсатор0.1 мкФ1
CN1
USB-коннекторXM7B-04421
CDC-232 для ATtiny2313U1
МК AVR 8-битATtiny23131
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-04421
CDC-232 для ATmega8/48/88U1
МК AVR 8-битATmega81
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-04421
Подключение к RS-232C каналуQ1
Биполярный транзистор2SC18151
Q2
Биполярный транзистор2SA10151
D1
Выпрямительный диод1N41481
R1-R3
Резистор10 кОм3
R4
Резистор3.3 кОм1
Когда целевой микроконтроллер имеет другое напряжение питанияD1, D2
Выпрямительный диод1N41482
R1, R2
Резистор3.3 кОм2
10 кОмДобавить все

Скачать список элементов (PDF)

Оригинал статьи

Добавить комментарий

Ваш адрес email не будет опубликован.