Сегодня на рынке существует недорогая микросхема Ch440G мост USB-UART, которая является заменой для PL2303.
Китайская микросхема Ch440G (изготовитель – компания WCH) не просто добавилась на рынок, но и претендует на то, чтобы стать самым популярным компонентом сопряжения интерфейсов USB и UART.
Этому способствует:
В серию китайских микросхем Ch440 входят:
Название | Корпус | Назначение | Официальная техническая документация |
Ch440T | SSOP-20 | Мост USB — UART | Ch440.pdf |
Ch440R | SSOP-20 | Мост USB — IrDA | |
Ch440G | SO-16 | Мост USB — UART | Ch440G.pdf |
Техническую информацию о микросхемах Ch440T и Ch440R можно загрузить в формате PDF по этой ссылке Ch440.pdf.
Но последний вариант из таблицы – микросхема Ch440G оказался наиболее удачным благодаря корпусу с меньшим числом выводов. Именно он получил широкое распространение. Его я и буду описывать. Технические характеристики и параметры я взял из официальной документации производителя – китайской компании WCH. Информацию можно загрузить в формате PDF по этой ссылке Ch440G.pdf.
На базе этой микросхемы разработан модуль — преобразователь интерфейсов.
Микросхема предназначена для преобразования интерфейса USB в UART. Позволяет создать на компьютере дополнительный UART порт. Подробно о технологии конвертирования интерфейсов USB и UART можно прочитать по этой ссылке.
Микросхема Ch440G:
Вывод | Обозначение | Направление | Описание |
1 | GND | Питание | Общий провод (земля). Должен быть соединен с общим проводом шины USB. |
2 | TXD | Выход | TXD сигнал UART. |
3 | RXD | Вход | RXD сигнал UART. |
4 | V3 | Питание | Внутреннее опорное напряжение для USB интерфейса. При питании 3,3 В вывод должен быть соединен с Vcc. При напряжении питания 5 В, к нему необходимо подключить относительно земли блокировочный конденсатор емкостью 4,7 – 20 нФ. |
5 | UD+ | Аналог. | D+ сигнал USB. |
6 | UD- | Аналог. | D- сигнал USB. |
7 | XI | Вход | Вход кварцевого генератора. К нему подключается кварцевый резонатор и конденсатор. |
8 | XO | Выход | Выход кварцевого генератора. К нему подключается кварцевый резонатор и конденсатор. |
9 | CTS# | Вход | CTS сигнал UART. |
10 | DSR# | Вход | DSR сигнал UART. |
11 | RI# | Вход | RI сигнал UART. |
12 | DCD# | Вход | DCD сигнал UART. |
13 | DTR# | Выход | DTR сигнал UART. |
14 | RTS# | Выход | RTS сигнал UART. |
15 | R232 | Вход | Включение инверсии входа RXD. Активный уровень – высокий. Вход имеет внутренний резистор, подключенный к земле. |
16 | VCC | Питание | Питание. |
Превышение значений этих параметров может привести к выходу из строя микросхемы.
Обозначение | Название | Минимальное значение | Максимальное значение | Единица измерения |
Ta | Рабочая температура | — 40 | 85 | °C |
Ts | Температура хранения | -40 | 125 | °C |
Vcc | Напряжение питания (относительно вывода GND) | — 0,5 | 6,5 | В |
Vid | Напряжение на цифровых выводах (относительно вывода GND) | — 0,5 | Vcc + 0,5 | В |
Обозначение | Название | Мин. | Тип. | Макс. | Ед. изм. | |
Vcc | Напряжение питания | Питание 5 В | 4,5 | 5 | 5,5 | В |
Питание 3,3 В | 3,3 | 3,3 | 3,8 | В | ||
Icc | Потребляемый ток | 12 | 30 | мА | ||
Islp | Потребляемый ток в режиме сна | Питание 5 В | 150 | 200 | мкА | |
Питание 3,3 В | 50 | 80 | мкА | |||
Vil | Входное напряжение низкого уровня | — 0,5 | 0,7 | В | ||
Vih | Входное напряжение высокого уровня | 2,0 | Vcc + 0,5 | В | ||
Vol | Выходное напряжение низкого уровня | 0,5 | В | |||
Voh | Выходное напряжение высокого уровня | Vcc – 0,5 | В | |||
Iup | Ток внутренней подтяжки к питанию | 3 | 150 | 300 | мкА | |
Idn | Ток внутренней подтяжки к земле | — 50 | — 150 | — 300 | мкА | |
Vr | Напряжение сброса по питанию | 2,3 | 2,6 | 2,9 | В |
Обозначение | Название | Мин. | Тип. | Макс. | Ед. изм. |
Fclk | Тактовая частота | 11,98 | 12 | 12,02 | мГц |
Tpr | Время сброса по включению питания | 20 | 50 | мс |
Микросхема Ch440G содержит внутренние подтягивающие резисторы для шины USB и цепи подавления отраженного сигнала. Поэтому выводы UD+ и UD- должны быть подключены непосредственно к соответствующим сигналам USB (выводам разъема USB).
Микросхема имеет встроенную логику сброса по включению питания.
Для нормальной работы микросхемы необходимо сформировать на выводе XI сигнал частотой 12 мГц.
Микросхема поддерживает два напряжения питания: 5 В и 3, 3 В.
Конвертер Ch440G поддерживает все сигналы управления передачей данных стандартного интерфейса RS233: CTS, DSR, RI, DCD, DTR, RTS. Программное обеспечение также поддерживает все эти сигналы.
С помощью вывода R232 можно включить инверсию сигнала RXD. Инверсия включается высоким уровнем на входе R232. Состояние сигнала запоминается при включении питания. Вход R232 имеет внутренний резистор, поэтому если в режиме инверсии RXD нет необходимости, то можно оставить вывод R232 неподключенным.
Типовая схема использования Ch440G в преобразователе интерфейсов USB – UART выглядит так.
Микросхема получает питание 5 В от интерфейса USB. При питании от напряжения 3,3 В необходимо соединить выводы Vcc и V3.
У микросхемы Ch440G есть встроенный буфер типа FIFO.
Ch440G поддерживает симплексный, полудуплексный и полнодуплексный асинхронные режимы обмена.
Микросхема поддерживает все стандартные режимы передачи данных:
Скорость обмена может быть выбрана из следующих значений:
Скорость обмена, бод | |||
50 | 900 | 19 200 | 128 000 |
75 | 1 200 | 28 800 | 153 600 |
100 | 1 800 | 33 600 | 230 400 |
110 | 2 400 | 38 400 | 460 800 |
134,5 | 3 600 | 56 000 | 921 600 |
150 | 4 800 | 57 600 | 1 500 000 |
300 | 9 600 | 76 800 | 2 000 000 |
600 | 14 400 | 115 200 |
Микросхема полностью эмулирует работу стандартного COM порта. Все приложения для реальных COM портов работают с конвертером интерфейсов Ch440G без изменения кода.
С помощью Ch440G можно подключать существующие периферийные устройства к компьютерам, не имеющим COM портов. Для реализации таких распространенных интерфейсов как RS232, RS422 и RS485 достаточно добавить преобразователи уровней сигналов.
Вот пример схемы для подключения устройств с интерфейсом RS232.
Ch440G может быть использована для реализации USB инфракрасного адаптера (интерфейс IrDA). Типовая схема USB — IrDA адаптера выглядит так.
iarduino.kz
Это значит драйвер установлен корректно и можно переходить к примерам работы.
Модуль позволяет прошивать управляющие платформы без собственного USB-порта.
Преобразователь уровней идеально подойдёт для настройки модулей с выходным последовательным интерфейсом UART.
Разъём micro-USB предназначен для питания и коммуникации модуля с компьютером c помощью кабеля USB (A — Micro USB)
Преобразователь USB-UART на микросхеме CP2102 от Silicon Laboratories обеспечивает связь с USB-портом компьютера.
Понижающий DC-DC NCP1529 с выходом 3,3 вольта, обеспечивает питание на выходе модуля. Максимальный выходной ток составляет 1 А.
На модуле выведено две пары Troyka-контактов.
Нижняя группа
Сигнальный (TX) — цифровой выход USB-UART
преобразователя. Используется для передачи данных из USB
в микроконтроллер. Подключите к пину RX
микроконтроллера.
Питание (V) — соедините с рабочим напряжением микроконтроллера.
Земля (G) — Соедините с пином GND
микроконтроллера.
Верхняя группа
Сигнальный (RX) — цифровой вход USB-UART
преобразователя. Используется для приёма данных из микроконтроллера в USB
. Подключите к пину TX
микроконтроллера.
Сигнальный (R) — пин сброса.
Выходное напряжение на линии питания USB-UART преобразователя можно выбирать установкой джампера:
V=5V
— на линии питания V
будет присутствовать напряжение 5 вольт с micro-USB разъёма. Это удобно при подключении модуля к управляющим платам с рабочим напряжением 5 вольт. Например Iskra Mini или Iskra Neo.V=3.3V
— на линии V
будет присутствовать напряжение 3,3 вольта с понижающего DC-DC преобразователя. Это удобно при подключении модуля к управляющим платам с рабочим напряжением 3,3 вольта. Например Iskra JS или ESP-01.Имя светодиода | Назначение |
---|---|
Сдвоенный RX/TX | TX мигает красным цветом при посылки данных от USB в UART .RX мигает зелёным цветом при посылки от UART в USB . |
Чип: CP2102
Входное напряжение питания: 5 В от USB
Выходное напряжение питания: 3,3 / 5 В
Напряжение логический уровней: 3,3 В (уровни толерантны к 5 вольтам)
Буфер: чтения 576 байт / записи 640 байт
Объём EEPROM-памяти: 1 КБ для хранения параметров идентификации USB-устройства
Габариты: 25,4×25,4 мм
wiki.amperka.ru
Это – преобразователе интерфейса USB в UART. Эта микросхема приобретает все большую популярность, успешно конкурируя с конвертером интерфейсов PL2303.
Ch440 уже стала стандартным преобразователем интерфейсов для китайских клонов контроллеров Ардуино. На базе этой микросхемы был разработан модуль, аналог модуля PL2303 USB UART BOARD. Вернее несколько типов модулей. В этом материале будет рассказано о самом популярном варианте конвертера Ch440.
С помощью модуля Ch440 легко подключить любое устройство, имеющее интерфейс UART к компьютерному порту USB. При несложной доработке (требуются только преобразователи уровней сигналов) к компьютеру могут быть подключены устройства с интерфейсами: COM, RS232, RS422, RS485, IrDA. Схемы подключения к некоторым из этих интерфейсов приведены в предыдущей публикации о микросхеме Ch440G.
Самое приятное, что такой способ преобразования интерфейсов не требует изменения кода программ верхнего уровня. Даже программы, разработанные для компьютерного COM порта в те времена, когда интерфейс USB еще не существовал, работают с мостами интерфейса USB.
Конвертер эмулирует работу стандартного COM порта. На компьютер устанавливается драйвер микросхемы Ch440. При каждом подключении модуля к USB порту компьютера в системе появляется виртуальный COM порт. Программа для стандартного COM порта может работать с этим портом, не подозревая, что он виртуальный. Таким образом, в системе появляется еще один COM порт, физически расположенный вне компьютера.
На разъеме модуля 6 контактов, через которые подключается UART устройство.
№ | Название | Направление, тип | Назначение |
1 | 5 V | питание | Питание 5 В от интерфейса USB. Может быть использовано для питания устройства UART. |
2 | VCC | питание | Питание микросхемы Ch440G.
|
3 | 3V3 | питание | Опорное напряжение для USB интерфейса.
|
4 | TXD | выход | Передача данных |
5 | RXD | вход | Прием данных |
6 | GND | питание | Общий провод (земля) |
Для подключения UART устройства к модулю необходимо:
Выбрать режим питания;
Рядом с разъемом модуля размещены светодиоды отображающие:
Самая распространенная схема выглядит так.
Микросхема Ch440G включена по стандартной схеме. Питание 3,3 В формируется из сигнала 5 В интерфейса USB за счет падения напряжения на открытых диодах LL4148. Больше пояснять нечего.
Под Windows 7 драйвер устанавливается в следующей последовательности.
Открываем диспетчер задач Windows. Для этого нажимаем Пуск -> Панель управления -> Диспетчер устройств.
Открываем закладку Порты (COM и LPT).
Подключаем модуль Ch440 к порту USB компьютера. В диспетчере устройств появляется новое устройство USB.2-Serial с предупреждающим желтым знаком. Операционная система не смогла установить драйвер для модуля.
Скачиваем и запускем файл установщика драйвера ch441ser.exe. Файлы автоматически разархивируются. Появляется окно.
Нажимаем кнопку INSTALL.
После непродолжительной установки появляется сообщение об ее успешном завершении.
В диспетчере устройств появляется новое устройство USB-SERIAL Ch440. Это и есть новый COM порт, в примере это порт с номером 5.
При желании номер порта можно изменить.
Для этого нужно нажать на нужный COM порт в «Диспетчере оборудования» правой кнопкой мыши, выбрать пункт Свойства.
Дальше переходим на вкладку Параметры порта.
Нажимаем кнопку Дополнительно
Теперь остается выбрать сыободный номер порта.
Теперь при каждом подключении модуля Ch440 к компьютеру в системе будет появляться виртуальный COM порт.
Внимание!!! Надо только помнить, что при подключении модуля к другому USB порту может измениться номер и виртуального COM порта.
iarduino.kz
В условиях, когда современные компьютеры стремительно теряют 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-порта) и, как следствие, к их неработоспособности.
Скачать печатную плату (DipTrace 2.3)
Драйвера для описанного преобразователя можно скачать с сайта silabs.com (производитель микросхемы cp2102).
Тестировать собранный девайс удобно программой RH_COM_tester, которую можно скачать здесь (исходники — там же).
Если возникли сложности с самостоятельной сборкой или напрочь отсутствует свободное время — этот девайс можно заказать у нас на сайте.
radiohlam.ru
Сначала решил свалить все в одну кучу, но потом передумал — будет несколько небольших постов.
В первом — описание функционала FT232 и её тюнинга с помощью FT Prog. Интересен будет наверное, лишь начинающим.
Дальше CBUS битбанг, синхронный и асинхронный битбанг. На дельфи и LabView.
Начнем с альтернативных функций пинов CBUS. Их аж 13 штук:
TXDEN — сигнал разрешения передачи (Transmit Enable) для интерфейса RS-485. Может быть выведен на любую из ножек CBUS. Если поглядеть на распиновку, видно что удобнее всего его выкинуть на CBUS2..4 — они на той стороне микросхемы, где и остальные линии RS-232.
PWREN — Сигнал о том, что комп благополучно ушел в спящий режим. Для нас это значит, что надо отключить всю мощную нагрузку. В даташите советуют прицепить на этот пин p-канальный полевик и включать всю нагрузку через него.
TXLED, RXLED и TX&RXLED — три варианта включения светодиодной индикации. TXLED светится, когда данные передаются через USB. То-есть, когда FT232 принимает данные по UART. В RXLED все наоборот. А последний — порождение двух предыдущих режимов. Подключать их надо катодом к FT232 (анодами на питание).
SLEEP — противоположность PWREN (в смысле полярности). Предназначен для уведомления МК о том, что комп уснул. В обычно режиме он находится в высоком лог. уровне. В спячке — в низком. Его тоже можно использовать для отключения нагрузки в спящем режиме.
CLK48, CLK24, CLK12, CLK6 — выход тактового сигнала. Да еще и с разными частотами! Просто сказка для строителей программаторов. На практике первые два-три варианта мало применимы, а вот последний можно удачно использовать в программаторе. Только позвольте отговорить вас от идеи сделать из этого внешний так для МК — при переходе компа в спящий режим этот тактовый сигнал так-же отрубится. Так-же следует помнить, что тактовый сигнал FT232 всегда будет не больше 3.2 Вольт.
CBitBangI/O — Превращает ножку CBUS в GPIO, управляемый с компа. Работает только на CBUS0..3 по причине того, что разработчики засунули направление линий (вход/выход) и уровень (высокий/низкий) в один байт. Это первый вариант реализации bit bang. О нем будет следующая статья.
BitBangWRn, BitBangRDn — сигналы записи и чтения для двух других режимов bit bang — Синхронного и Асинхронного. Тоже работает на CBUS0..3
Вот такая компания.
Возникает резонный вопрос — как все это настраивать? Для этого есть утилита FT_prog, которая умеет прошивать EEPROM память FTшки. Выглядит она вот так:
При запуске тут-же нажимаем на кнопку «Scan and Parse» (c лупой) или F5 и получаем список подключенных FTDI устройств.
У меня подключен только один модуль. Пробежимся по его настройкам:
Chip Details -> Type Здесь у нас название чипа. Менять ничего нельзя. Идем дальше.
USB Device Descriptor — тут PID (Product ID), VID (Vendor ID). Их можно изменять. Но для домашних разработок это все-равно никакого значения не имеет.
USB Config Descriptor — тут уже больше вкусных настроек:
Bus powered \ Self Powered — режим питания устройства (сомостоятельно или от шины USB).
Max Bus Power — максимальный ток, который наше устройство собирается кушать от линии USB. Что характерно, превышение тока не наказуемо. При заявленом значении в 10мА моё устройство съедало все 120мА а хрюша даже «еггог» не сказала. Но все-же нарушать не стоит.
USB remote Wake Up — Если этот режим активирован, то дерганье вниз ноги RI выводит комп из спящего режима. Но работает только на FT245. Fail.
Pull down I/O Pins in USB Suspend — если включено, то при переходе в спящий режим, выводы UART должны подтягиваться к земле с целью уменьщения потребления. У меня так и не заработало. Наверно чип такой попался 🙁
USB String Descriptor — тут можно написать название производителя, описание устройства и задать параметры генерации серийника. Вот тут есть один прикол — по умолчанию FT Prog генерит новый серийник при каждой прошивке. Видна, соответственно думает что это новое устройство и назначает ему другой виртуальный COM порт. Так, через несколько итераций номер порта сдвинется непойми-куда, поэтому генерацию серийника я запретил.
Последний пунт — Hardware Specific. Там описаны настройки железа.
High Current IO — позволяет пинам двигать большей нагрузкой. 12мА, против 4мА в обычном режиме. Но это отрицательно сказывается на энергопотреблении.
Load D2XX Driver — если поставить галочку, то загрузка D2XX драйвера будет предпочтительнее, чем обычного драйвера VCP (Virtual Com Port). На практике, никаких изменений я не заметил — виртуальный COM порт по прежнему доступен сразу при подключении устройства.
Use External Oscillator — переключиться на внешний кварц. ВНИМАНИЕ! Если включить этот режим без внешнего кварца, труп FT232 станет неплохой возможностью поиметь с NXP халяву, но не более того (Кто не в теме — НХП раздает демоплаты за фото/видео зверской расправы над МК. Мертвая FT232 вполне сойдет за какой-нибудь МК… 🙂 ).
Invert RS-232 Signals — инверсия любой из 8 линий COM порта. В некоторых случаях позволяет избавится от лишней микросхемы-инвертора.
IO Control — те самые дополнительные возможности, список которых приводился выше.
После того, как конфигурация будет настроена — тыкаем кнопку с молнией или нажимаем Ctrl+P. Нам показывают краткое описание настроек.
Нажимаем program, дожидаемся завершения операции (надпись ready в левом нижнем углу основного окна) и передергиваем FT232 — новые настройки вступают в силу только после сброса.
Вторая часть будет про реализацию CBUS-битбанга в delphi.
Useful appnotes:
AN100 — Подлючение внешнего кварца.
AN119 — Установка дров под Вин7 (сам не читал, но может кому пригодится)
AN124 — руководство по FT Prog
AN146 — общие правила разработки устройств с FTDI
Useful software:
FT Prog — программа для настройки FTDI чипов.
USB View — показывает подключенные USb устройства. Тоже самое но для linux.
we.easyelectronics.ru
Скачал плату, немного поправил, кое-чего добавил, вот что получилось:
Но после травления платы и запайки SMD деталюх, меня ждал небольшой косячок. Незнаю, почему DI HALT так развёл печатку, что при запаянной FT232RL, запаять один индикаторный светодиод практически нереально — он расположен слишком близко к корпусу FT232RL. Так как микросхема достаточно «толстая», вывод светодиода оказывается заблокирован для пайки.
Вобщем запаял кое-как, а позже плату переразвёл по нормальному, чтобы в ледующий раз не испытывать подобный геморрой… До кучи ещё и парочку резисторов на RX и TX врезал, на всякий случай. Вот что из этого вышло:
А вот какой девайс получился в итоге:
Схему приводить не буду — стандартная из даташита. Ну а для желающих повторить сборку девайса, выкладываю супер-пупер плату, вернее сборник плат в одном файле. Там и плата от DI HALT-а, и моя доработанная версия в нескольких вариантах (с косячками и без))))).
На этом позвольте откланяться, ваш Zlodey, 13 сентября 2014г.
P.S. Строго не судите, на супер конструктив не претендую. Мало ли кому пригодится…
P.P.S. Первоначально материал размещал тут.
UPD. Приклеил подсказочку-напоминалочку 🙂
we.easyelectronics.ru
APU-2,
APU-2N (Narrow),
APU-2M (Module USB)
Продолжаю цикл заметок «проекты-малыши»
На днях собрал себе еще один вариант USB программатора для микроконтроллеров AVR на базе чипа FT232RL (назвал я этот программатор APU-2MM):
Данное устройство совмещает в себе функции программатора и преобразователя USB-UART. Т.е., при использовании рассматриваемого модуля через один и тот же интерфейсный шнур (в данном случае, видимо, USB A – Mini USB B) можно:
— осуществить связь компьютера с исполняющим устройством, выполненном, в частности, на базе микроконтроллера AVR (т.е., преобразовать данные шины USB в данные «шины» UART),
— прошить микроконтроллер AVR, на базе которого выполнено исполняющее устройство.
Сразу хочу оговориться, что в камень заливается «оригинальная» прошивка, т.е. hex-файл, сгенерированный (обычно) средой разработки. Никаких шифрований и прочих изысков не подразумевается. Прошивка микроконтроллера по USB идет точно так же, как если бы мы просто вставили программатор в разъем “ISP” на таргет-плате.
Важное Примечание: далее на сером фоне идет Лирическое Отступление. Никакого отношения к собственно работе рассматриваемого программатора/преобразователя оно не имеет, и его можно смело пропустить. Данное отступление было написано лишь с одной целью – объяснить нахера мне вообще понадобился такой дывайс.
Идея создания модуля подобного рода засела в моей башке довольно давно и прочно. Суть идеи – отправлять заказчикам устройства, которые можно бы было прошивать прямо через интерфейсный разъем (т.е., через который устройство общается с компом). У меня обычно бывает как – собрали некую систему, в состав которой входит моя поделка. Система уехала куда-нибудь далеко-далеко (например, в Ленинград или Германию). А через пару лет звонит заказчик и говорит – все работает нормально, но надо бы чуток подправить/улучшить вот то-то и то-то. И вроде бы не вопрос – изменить прошивку камня под эти новые требования обычно не составляет особого труда (и не отнимает много времени). Но вот как этот код залить в микроконтроллер?Люди знающие сразу скажут – раз устройство общается с компом, то 99 из 100 за то, что для этого используются линии UART’а микроконтроллера. А раз так – пользуй бутлоадер, не ошибешься. Но, во-первых, насколько я понимаю – бут можно прикрутить далеко не к каждому кирпичу AVR. А во-вторых (и самых важных) – я настолько ленив, что за пять с лишним лет так и не удосужился разобраться с тем, как бутлоадер работает и как им пользоваться. Ибо у меня под рукой всегда был/есть программатор, и проблема прошивки камней у меня лично никогда не возникала. Ну а заказчик… А что заказчик? Заказчик в довесок к моим поделкам просто получал до кучи еще и отдельный LPT-программатор. Вот таким вот образом я обманул свою лень. Правда, использование заказчиком отдельного программатора тянуло за собой целую вереницу стандартных вопросов: а куда его совать, а если неправильно воткнули, а как разобрать дывайс и т.д. Но за несколько лет я настолько ловко научился на них отвечать, что проблемой данные вопросы не были.
Ну и в-третьих (обычно, не очень важных) – бутлоадер таки отжирает небольшую часть флэша микроконтроллера.
К слову сказать, уже тогда я начал задумываться – а не встраивать ли мне программаторы прямо в устройства? Однако, в то время я еще использовал для прошивки только порты LPT и COM. Но, как известно, программаторы на COM-порте больно уж укуренные, а разъем для LPT-порта больно уж огромен. Можно, конечно, было решить проблему, поставив на переднюю панель устройства какой-нибудь хитрый маленький разъем. Но это потянуло бы за собой изготовление переходника типа «LPT-хитрый разъем» или «СОМ-хитрый разъем», делать который пришлось бы опять же мне, и данная концепция не получила дальнейшего развития (см. врожденная лень).
Однако, как известно, теперь в нашу жизнь прочно вбили интерфейс USB. Да так прочно, что материнки (особенно дешевые) с LPT или COM портами встретить можно далеко не везде и далеко не всегда. Масла в огонь подливают коварнейшие ноутбуки, у которых данных портов нет в принципе (всё из-за глобальной миниатюризации). И поэтому вопрос о способе прошивки заказчиком микроконтроллеров, прилежно трудящихся в моих поделках, для меня встал особо остро. Ибо, вместе с программатором отсылать заказчику до кучи еще и отдельный системник для заливки кода в камень – как-то больно уж круто.
Пришлось переходить на USB-программаторы. Собирал я AVR910 и USBasp. Но как-то мне с ними не повезло – дурковали они частенько не по-детски. Это только потом я узнал, что виноват, по-ходу, был кривой прошивающий софт (или прошивка исполняющих камней программаторов, я в этом особо не разбирался). А в то время посылать заказчику программатор, который с 60-70%-ной вероятностью толком не заработает, было как-то негоже. И еще чуть-чуть – и я бы заставил-таки себя засесть за тщательное изучение бутлоадеров, но тут свершилось чудо.
Я внезапно узнал, что простой USB программатор для микроконтроллеров AVR может быть собран на основе микросхемы FT232RL. А еще он будет неглючный и шустрый. Немедленно собрал себе такой (по ссылке также указаны причины, по которым мне вообще пришлось интересоваться данным вопросом). И ходил-ходил довольный как слон, пока по башке не ударила мега-мысль: «Ты ж и так раньше использовал FT232RL для переходников USB-UART (я всё же следил за модой, да). А в новом программаторе линии RXD и TXD для прошивки камней не используются. Возьми осциллограф и посмотри, что происходит на «прошивающих» линиях в момент передачи «полезной» информации по USB. А потом посмотри, что творится на RXD и TXD в момент прошивки». Я обычно слушаю свою голову, поэтому послушно побрел за осциллоскопом. И оказалось, что в момент прошивки на «интерфейсных» линиях – тишина. И в момент передачи «полезной» инфы по USB на «прошивающих» линиях – тоже тишина. Т.е., работа устройства по «прошивающим» и «интерфейсным» линиям идет независимо, и эти линии не мешают друг другу. И вот тут я сперва потерял дар речи, а затем хитро улыбнулся – по-ходу, моя давнишняя мечта сбудется. А мечтал я, напомню, о маленьком (желательно – встраиваемом в основную плату устройства) модуле, через который можно было бы как обмениваться информацией с компом в «обычном» режиме, так и прошивать микроконтроллеры AVR, на базе которых и выполнено устройство.
Если сравнить ее со схемой программатора APU-2, то можно заметить, что с точки зрения именно схемы эти два устройства практически идентичны. Поэтому для описания работы схемы я позволю себе просто скопировать кусок из старой заметки:
Ничего нового здесь не придумано, никаких Америк не открыто. Описание работы схемы неоднократно приводились в Интернете. В принципе, здесь и описывать-то особо нечего. Данная схема просто направляет сигналы MOSI, MISO, SCK и RESET, которые формируются на выводах RTS, DCD, DTR и RI микросхемы DD1 (FT232RL) соответственно, на нужные выводы прошиваемого микроконтроллера. Причем, делает это только в момент программирования камня, в остальные моменты времени программатор отключен от прошиваемой платы за счет 4-х буферных элементов микросхемы DD2 (74HC125D). Состояние линий MOSI, MISO, SCK и RESET устанавливается/считывается специальным прошивающим софтом на компьютере. Передача данных для прошивки микроконтроллера между компом и микросхемой FT232RL идет по шине USB. В остальные моменты времени (когда камень не прошивается) м/с DD1 работает в «штатном» режиме, т.е. в качестве преобразователя USB-UART.
И у читателя может возникнуть закономерный вопрос – а чем тогда эти два программатора вообще отличаются? Отличие их – в конструктивном исполнении. Если программатор APU-2 задумывался и был выполнен как отдельное устройство, то рассматриваемый преобразователь APU-2MM разработан в виде модуля, встраиваемого в основную плату. В качестве небольшого бонуса идет возможность установки APU-2MM в макетные платы стандартного типа.
Особого рассмотрения заслуживает схема подключения рассматриваемого модуля к основной плате микроконтроллера. Если с сигнальными линиями, в принципе, все ясно («прошивающие» — по стандартному ISP, «интерфейсные» — по стандартному UART), то на питающих цепях хотелось бы остановиться поподробнее.
Дело в том, что при работе устройства питание на вывод 20 (Vcc – напряжение питания ядра) микросхемы DD1 должно подаваться постоянно. В противном случае, если микроконтроллер запитан (Vdd), буфер программатора и выходной драйвер FT232RL запитаны (Vccio), а ядро обесточено (Vcc), на всех выводах интерфейса UART (RXD, TXD, RTS, CTS и т.д.) будем наблюдать логические нули (а не третье состояние). Соответственно, буфер программатора (DD2) «откроется» и сигнал RST будет удерживаться в состоянии логического нуля (за счет состояния вывода RI), что не даст стартануть микроконтроллеру. Так он и будет ждать у моря погоды, пока на ядро FT232RL кто-нибудь добрый не подаст напряжение питания.
В случае, когда устройство, в которое встроен программатор APU-2MM, не имеет собственного источника питания и питается от шины USB всё просто – схема подачи напряжения на микросхему FT232RL стандартна:
Данный факт обусловлен тем, что питание на м/с DD1 модуля подается постоянно (если шнур USB выдернуть из устройства, работать оно перестанет). К слову – если программатор не дуркует (что обычно может происходить, когда шнур USB достаточно длинный), дроссель MI0805K400R-10 вполне можно заменить обычной перемычкой.
А вот когда устройство, в составе которого работает программатор APU-2MM, имеет свой собственный источник питания, схема подключения модуля, очевидно, приобретет следующий вид:
Ибо модуль не должен мешать работе микроконтроллера (т.е., напряжение питания на ядро FT232RL должно подаваться) даже в том случае, когда шнур USB из устройства выдернут. При подобной схеме подключения модуля можно использовать как «обычные» диоды, так и диоды Шоттки. Необходимо только помнить о том, что напряжение на выводе 20 (Vcc) микросхемы FT232RL должно составлять не менее +4,0В и не более +5,25В.
Вот и все нюансы подключения. Под вышеприведенную схему программатора была незамедлительно разведена
и изготовлена
печатная плата (ПП). На рисунках выше слева изображена сторона TOP платы, справа – сторона BOTTOM. Из-за того, что модуль APU-2MM является встраиваемым, габариты его было желательно уменьшить по максимуму. Этим фактором и обусловлено применение двухстороннего монтажа при изготовлении печатной платы и, соответственно, количество токопроводящих слоев ПП, равное двум.
Габаритные и присоединительные размеры модуля APU-2MM показаны на рисунке ниже:
После сборки модуль не требует никакой настройки. Можно ставить дрова, шить камни (более-менее подробно этот вопрос рассмотрен в описании программатора APU-2) и общаться с микроконтроллерами через, например, терминальную программу. Прошивка микроконтроллеров осуществляется при помощи графической оболочки SinaProg (версия, подправленная под APU-2MM) для программы AVRDUDE. В списке программаторов необходимо выбрать APU_2MM.
Вот, собственно, и всё. Удачной работы с микроконтроллерами!
APU-2MM_Hardware.zip (также архив прилеплен к заметке):
APU-2MM.pdf – схема электрическая принципиальная программатора;
APU-2MM_ЛУТ.LAY – файл печатной платы для «утюжников»;
APU-2MM_ФР.LAY – файл печатной платы для «шаблонщиков»
Печатная плата нарисована в программе «Sprint Layout 5.0»
APU-2MM_Software.rar:
SinaProg — программа-прошивальщик с поправленными файлами конфигурации.
we.easyelectronics.ru