Ttl usb что это
Конвертер USB-TTL на микросхеме CH340. Схема, характеристики. Установка драйвера.
USB-TTL конвертер построенный на микросхеме CH340G
Это – преобразователе интерфейса USB в UART. Эта микросхема приобретает все большую популярность, успешно конкурируя с конвертером интерфейсов PL2303.
CH340 уже стала стандартным преобразователем интерфейсов для китайских клонов контроллеров Ардуино. На базе этой микросхемы был разработан модуль, аналог модуля PL2303 USB UART BOARD. Вернее несколько типов модулей. В этом материале будет рассказано о самом популярном варианте конвертера CH340.
С помощью модуля CH340 легко подключить любое устройство, имеющее интерфейс UART к компьютерному порту USB. При несложной доработке (требуются только преобразователи уровней сигналов) к компьютеру могут быть подключены устройства с интерфейсами: COM, RS232, RS422, RS485, IrDA. Схемы подключения к некоторым из этих интерфейсов приведены в предыдущей публикации о микросхеме CH340G.
Самое приятное, что такой способ преобразования интерфейсов не требует изменения кода программ верхнего уровня. Даже программы, разработанные для компьютерного COM порта в те времена, когда интерфейс USB еще не существовал, работают с мостами интерфейса USB.
Конвертер эмулирует работу стандартного COM порта. На компьютер устанавливается драйвер микросхемы CH340. При каждом подключении модуля к USB порту компьютера в системе появляется виртуальный COM порт. Программа для стандартного COM порта может работать с этим портом, не подозревая, что он виртуальный. Таким образом, в системе появляется еще один COM порт, физически расположенный вне компьютера.
Сигналы интерфейса UART модуля.
На разъеме модуля 6 контактов, через которые подключается UART устройство.
Для подключения UART устройства к модулю необходимо:
Выбрать режим питания;
Рядом с разъемом модуля размещены светодиоды отображающие:
Принципиальная схема модуля CH340.
Самая распространенная схема выглядит так.
Микросхема CH340G включена по стандартной схеме. Питание 3,3 В формируется из сигнала 5 В интерфейса USB за счет падения напряжения на открытых диодах LL4148. Больше пояснять нечего.
Установка драйвера преобразователя интерфейсов CH340.
Под Windows 7 драйвер устанавливается в следующей последовательности.
Открываем закладку Порты (COM и LPT).
Подключаем модуль CH340 к порту USB компьютера. В диспетчере устройств появляется новое устройство USB.2-Serial с предупреждающим желтым знаком. Операционная система не смогла установить драйвер для модуля.
Скачиваем и запускем файл установщика драйвера ch341ser.exe. Файлы автоматически разархивируются. Появляется окно.
Нажимаем кнопку INSTALL.
После непродолжительной установки появляется сообщение об ее успешном завершении.
В диспетчере устройств появляется новое устройство USB-SERIAL CH340. Это и есть новый COM порт, в примере это порт с номером 5.
При желании номер порта можно изменить.
Для этого нужно нажать на нужный COM порт в «Диспетчере оборудования» правой кнопкой мыши, выбрать пункт Свойства.
Дальше переходим на вкладку Параметры порта.
Нажимаем кнопку Дополнительно
Теперь остается выбрать сыободный номер порта.
Теперь при каждом подключении модуля CH340 к компьютеру в системе будет появляться виртуальный COM порт.
Внимание. Надо только помнить, что при подключении модуля к другому USB порту может измениться номер и виртуального COM порта.
Рекомендуемые товары
Многофункциональный переходник USB-TTL на основе микросхемы CH340G. Имеет выходы 3.3В и 5В для питан..
Обзоры USB TTL конвертеров
USB TTL конвертер – небольшой адаптер-программатор, который используется для передачи на компьютер информации с разных типов датчиков – температуры, влажности, движения и прочих. Также может использоваться для обновления прошивки различных устройств, платы которых работают на микроконтроллерах ARM, так что является своеобразной «универсальной шиной» для передачи данных.
Чтобы пользоваться адаптером USB TTL, его подключают к соответствующему порту компьютера, в результате чего устройство определяется как USB to Serial COM Port. Далее автоматически начинается поиск и установка драйверов для конвертера, но рекомендуется предварительно самостоятельно скачать подходящие, так как в автоматическом режиме процесс не всегда имеет положительный результат.
После установки драйверов на ПК устанавливаются программы для работы с конвертером и устройствам, которые будут подключаться. К выводам адаптера подключается датчик или прибор, который нужно программировать, и можно начинать с ними работать.
На плате USB TTL конвертера есть 4 вывода:
• TXD для передаваемых данных;
• RXD – принимаемые данные;
• GND – общий контакт;
• 5V для выходного напряжения 5 В.
При необходимости передачи других сигналов на плате конвертера предусмотрены отдельные контактные площадки.
Обзор конвертера USB — UART TTL на CP2102
Зачем он нужен
Программировать различные ардуино- и не адуино- образные контроллеры, получать информацию на компьютер со всего, что имеет последовательный интерфейс с TTL логикой.
Я в своих проектах использую его с Arduino Pro MIni, Gboard/Iboard и самодельными контроллерами.
Дополнительным выводом DTR, который можно напрямую подключить к входу RESET на контроллерах не имеющих USB на плате. После этого при программировании давить кнопку RESET не нужно. Для меня это очень удобно, когда контроллер спрятан недрах моей поделки и доступ к кнопке бывает очень затруднительным.
Поддержкой производителя, совместимостью с оригинальными драйверами и ПО, в отличие от поддельных FTDI, у которых проблемы с родными драйверами
Дополнительными выводами (дырками под контакты) на плате, например, позволяющими уводить USB в энергосберегающий режим.
Интересной возможностью менять VID, PID и текст, с которым опознается плата, собирать свой драйвер со требуемыми параметрами, что довольно интересно в коммерческих проектах. Об этом я расскажу дальше.
Тех, кого заинтересовал, пожалуйста под кат
Программаторы, ISP, фьюзы
Загрузка прошивки
В этом уроке мы рассмотрим загрузку прошивки в ардуино через внешние “программаторы”. Давайте вспомним, о чем уже говорили в одном из первых уроков: загрузка прошивки в Arduino возможна двумя способами:
Загрузчик (bootloader)
Загрузчик живёт в самом конце Flash памяти МК и позволяет записывать прошивку, отправляемую через UART. Загрузчик стартует при подаче питания на МК, ждёт некоторое время (вдруг кто-то начнёт слать код прошивки по UART), затем передаёт управление основной программе. И так происходит каждый каждый раз при старте МК.
Программатор
Помимо записи прошивки во flash память, программатор позволяет:
Программатор – ваш единственный друг при работе с “голым” микроконтроллером, то есть для его низкоуровневой настройки и загрузки прошивки.
USB-TTL (UART)
Этот способ реализован прямо на платах Arduino при помощи USB-TTL (USB-UART) преобразователя, именно поэтому мы можем подключить плату к компьютеру и загрузить код. USB-TTL позволяет только загрузку данных во flash, остальные возможности (как у ISP программатора) ему недоступны. В то же время он ограничен только возможностями загрузчика, но в этом уроке мы рассматриваем только стандартные. Также USB-TTL мост позволяет микроконтроллеру общаться с компьютером по последовательному соединению (тот самый Serial и монитор com порта). Есть платы без бортового USB-TTL, например Arduino Pro Mini. Для работы с ними нужно купить внешний USB-TTL преобразователь. Также загрузка прошивки через UART возможна и в “голый” микроконтроллер при условии наличия там загрузчика, который запишет принятый код во flash. Про запись загрузчика мы поговорим ниже. UART “загружатор” подключается к пинам RX и TX Ардуино (или микроконтроллера), RX->TX и TX->RX, также обязательно подключается земля GND. Если у прошиваемой платы нет своего питания, то подключается и питание. Загрузчик отрабатывает при запуске МК, поэтому непосредственно перед загрузкой прошивки МК должен быть сброшен (перезагружен), и для этого на платах USB-UART есть вывод DTR (Data Terminal Ready), который подключается к пину RST Reset и собственно выполняет сброс перед перед загрузкой прошивки. На платах Pro Mini есть отдельный пин DTR.
USB-TTL | Arduino |
DTR | DTR |
RX | TX |
TX | RX |
GND | GND |
VCC/5V/3.3V | VCC |
Китайцы выпускают USB-TTL модули в широком ассортименте, но в целом они все одинаковые по своей сути. Ссылка на результат поиска на aliexpress, и ссылка на все USB-TTL в моём любимом магазине WAVGAT. Что использую я? В основном платку на CP2102. Перед заказом модуля обязательно убедитесь в том, что у него есть выход DTR, иначе этот модуль можно будет использовать только для “общения” с контроллером через COM порт.
Для работы с таким преобразователем нужно установить драйвер для чипа, на базе которого собран модуль, это может быть CP2102, CH340/341, FT232, PL2303 и другие. Прошивка загружается как обычно: выбираем порт, на котором сидит преобразователь, версию загрузчика и жмём загрузить, всё! Важный момент: на некоторых китайских версиях плат Arduino Pro Mini не распаян пин DTR, т.е. он не идёт на RST и автоматический сброс перед загрузкой прошивки не выполняется. В этом случае сброс нужно производить вручную, кнопкой RST, непосредственно перед загрузкой прошивки… Загрузка прошивки посредством загрузчика (bootloader) возможна с любого UART устройства, даже через Bluetooth. Но об этом мы поговорим в отдельном уроке.
Фьюзы (Pro)
Фьюзы (фьюз-биты) являются низкоуровневыми настройками микроконтроллера, которые хранятся в специальном месте в памяти и могут быть изменены только при помощи ISP программатора. Это такие настройки как выбор источника тактирования, размер области памяти под загрузчик, настройка отсечки по напряжению и прочее. Фьюз-биты собраны по 8 штук в байты (т.н. байты конфигурации), как типичный регистр микроконтроллера AVR. Таких байтов может быть несколько, они называются low fuses, high fuses, extended fuses. Для конфигурации байтов рекомендуется использовать калькулятор фьюзов (например, вот такой), в котором просто ставятся галочки на нужных битах, и на выходе получается готовый байт в hex виде. Рассмотрим на примере ATmega328p:
Важный момент: в AVR биты у нас инверсные, то есть 1 это выкл, 0 это вкл. Расставляя галочки в калькуляторе, мы формируем байт, галочка стоит – бит включен, но в результирующем байте включенные биты являются нулями. Об этом стоит задумываться при ручном составлении фьюз-байта, при использовании калькулятора можете об этом даже не вспоминать. Что позволяют настроить биты?
* – прошивка возможна при помощи высоковольтного программатора
Лок-биты (Pro)
Лок-биты (lock-bits) позволяют управлять доступом к памяти микроконтроллера, что обычно используется для защиты устройства от копирования. Лок-биты собраны опять же в конфигурационный лок-байт, который содержит: BOOTLOCK01, BOOTLOCK02, BOOTLOCK11, BOOTLOCK12, LOCKBIT1, LOCKBIT2 (для ATmega328). Калькулятор лок-битов можно использовать этот. BOOTLOCK биты позволяют запретить самому МК запись (самопрограммирование) во flash память (область программы и область загрузчика)
А вот локбиты LOCKBIT позволяют запретить запись и чтение flash и EEPROM памяти извне, при помощи программатора, т.е. полностью защитить прошивку от скачивания и копирования:
Таким образом включив LOCKBIT1 (лок-байт будет 0x3E) мы запретим внешнюю запись во Flash и EEPROM память, т.е. при помощи ISP программатора, а включив LOCKBIT1 и LOCKBIT2 (лок-байт: 0x3C) полностью заблокируем заодно и чтение данных из памяти микроконтроллера. Повторюсь, всё описанное выше относится к ATmega328p, для других моделей МК читайте в соответствующих даташитах.
ISP программатор
USBasp
Дешёвые ISP программаторы также есть в ассортименте у китайцев, рекомендую брать USBasp как самый распространенный. Поискать на алиэкспресс, мне нравится версия в корпусе. USBasp имеет не очень удобный выход 10-пин на шлейфе, поэтому рекомендуется купить также переходник 10-пин на 6-пин, который позволяет сразу подключаться к ISP header’у, который есть на большинстве плат Arduino. Внимание! Очень часто встречается брак в виде непропая контактов, поэтому во избежание проблем рекомендуется пропаять переходник и отмыть флюс (зубная щётка + бензин калоша).
Решение проблем
Решение большинства проблем с загрузкой через программатор (независимо от того, что написано в логе ошибки):
Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):
Основные ошибки в логе Arduino IDE
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor=’www.fischl.de’ product=’USBasp’ Причина – компьютер не видит USB ASP
avrdude: error: program enable: target doesn’t answer. Причина – usbasp не видит подключаемый микроконтроллер
Arduino as ISP
Почти любая другая плата Arduino может стать ISP программатором, для этого нужно просто загрузить в неё скетч ArduinoISP:
ISP программатор подключается к четырем пинам микроконтроллера, не считая питания: один из пинов передает сброс, остальные – для передачи данных. Чтобы плата-программатор не сбрасывалась при загрузке, на неё нужно:
Решение проблем
Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):
Работа в Arduino IDE
Прошивка загрузчика
Из Arduino IDE при помощи ISP программатора мы можем записать другой загрузчик (по факту загрузчик + фьюзы) и загрузить скетч, а также настроить/прошить фьюзы и лок-биты, но не очень удобным способом. Когда мы выбираем плату в Инструменты > Плата и загрузчик в Инструменты > Плата (загрузчик, bootloader), Arduino IDE автоматически делает “активным” нужный загрузчик. Нажимая Инструменты > Записать загрузчик мы прошиваем загрузчик, соответствующий выбранной плате и её настройкам. Также одновременно с загрузчиком прошиваются фьюзы и лок-биты, соответствующие выбранной плате в Arduino IDE. Как и где их поменять, смотрите чуть ниже. Рассмотрим на примере записи загрузчика для atmega328, стоящей на китайской плате Arduino NANO. На данный момент китайцы прошивают в МК старую версию загрузчика, которая называется old bootloader в меню платы. Оригинальные платы идут с более современным загрузчиком, поэтому при работе с китайскими платами нам приходится выбирать old bootloader для загрузки прошивки через бортовой usb порт. Подключим usbasp по схеме выше, выберем его как программатор в Инструменты > Программатор, выберем плату Arduino NANO, загрузчик для atmega328 (первый в списке). Нажмём записать загрузчик. Всё! Теперь плату можно шить через бортовой usb порт, выбирая первый загрузчик. Он кстати легче, быстрее “прошивает” и сама прошивка быстрее “запускается”.
Как убрать загрузчик?
В стандартном “ядре” Arduino не предусмотрен вариант “без загрузчика”. Для того, чтобы вручную убрать поддержку загрузчика, нужно уметь работать с boards.txt и фьюзами: нужно будет изменить фьюз BOOTRST и подправить максимальный размер скетча. Есть более простой вариант – найти и установить ядро, в котором реализован выбор загрузчика с вариантом “без загрузчика”, например для ATmega328 это miniCore и наше GyverCore. Нужно установить поддержку ядра по рассмотренной ранее инструкции, выбрать плату, указать вариант “без загрузчика” и нажать “Записать загрузчик”. В МК будут прошиты соответствующие фьюзы.
Загрузка скетча
Фьюзы
Файл конфигурации называется boards.txt и найти его можно в папке с ядром Arduino: C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt. Документацию на boards.txt можно почитать здесь. При желании можно вывести нужные фьюзы через калькулятор (читайте выше), изменить их в boards.txt (главное не запутаться, для какой выбранной конфигурации платы делается изменение) и прошить в МК, нажав Инструменты > Записать загрузчик.
Такая работа с фьюзами максимально неудобна, но есть и другие варианты:
Avrdudeprog
Видео
6-ти пиновый конвертер USB/UART для тех кто не любит давить ресет на Arduino
Обзор конвертера USB — UART TTL на CP2102
Зачем он нужен
Программировать различные ардуино- и не адуино- образные контроллеры, получать информацию на компьютер со всего, что имеет последовательный интерфейс с TTL логикой.
Я в своих проектах использую его с Arduino Pro MIni, Gboard/Iboard и самодельными контроллерами.
Дополнительным выводом DTR, который можно напрямую подключить к входу RESET на контроллерах не имеющих USB на плате. После этого при программировании давить кнопку RESET не нужно. Для меня это очень удобно, когда контроллер спрятан недрах моей поделки и доступ к кнопке бывает очень затруднительным.
Поддержкой производителя, совместимостью с оригинальными драйверами и ПО, в отличие от поддельных FTDI, у которых проблемы с родными драйверами
Дополнительными выводами (дырками под контакты) на плате, например, позволяющими уводить USB в энергосберегающий режим.
Интересной возможностью менять VID, PID и текст, с которым опознается плата, собирать свой драйвер со требуемыми параметрами, что довольно интересно в коммерческих проектах. Об этом я расскажу дальше.
Тех, кого заинтересовал, пожалуйста под кат
Товар ехал целых 54 дня. Ну к нашей почте я уже привык, чего не скажешь о курсе доллара к рублю (((
Обычный желтый пакет. Внутри платки в запаянных прозрачных пакетиках. Все как обычно.
На плате есть дополнительные отверстия, куда можно впаять выводы дополнительного модемного контроля и перевода USB в режим SUSPENDED
Характеристики
Плата FOCA 2.2 взята для коммерческого проекта с GBoard и IBoard
Перед использованием платы необходимо установить драйвера с официального сайта Si-Labs
Для соединения к контроллеру нужны 5 проводов:
GND — GMD
VCC — V5.0 (V3.3) в зависимости от используемой платы
TX — RX
RX — TX
RESET контроллера — DTE
Теперь контроллер можно программировать не нажимая кнопку RESET.
Плата опознается в системе как
Silicon Labs CP210X USB to UART Bridge (COM35)
Иногда в коммерческих проектах необходимо, чтобы устройство при программирование имело свое коммерческое название. Чип CP2102 и плата на нем дают большие возможности для этого
Для начала скачиваем и запускаем Утилита для конфигурирования параметров EEPROM CP1202″> (мне для запуска утилиты потребовалось еще скачать Java Runtime)
И после нехитрого мастера-диалога получаем дистрибутив драйверов с требуемым набором VID и PID и желаемым названием в системе
Данная плата одна из самых дешевых конвертеров USB/UART не использующих поддельные чипы.
Имеет вывод DTR, позволяющий автоматически посылать RESET для загрузки ПО в контроллер
Позволяет настраивать VID, PID и драйвера под свои проекты
К покупке рекомендую
Полезные ссылки
О всех моих проектах можно прочитать в моем блоге