Теория по КМПУ Готовые элементы систем Технологии и хитрости Прочее Магазин Контакты
 


Микросхема CH340N – недорогой преобразователь интерфейса USB в последовательный порт UART


Данная заметка представляет собой вольный пересказ официальной документации на микросхему CH340N – преобразователь интерфейсов USB<=>UART от китайской компании Nanjing Qinheng Microelectronics Co., Ltd. Домашняя страница данного чипа располагается здесь, драйвера для всех доступных операционных систем можно скачать отсюда. Обращаю ваше внимание на то, что документацию на микросхему и драйвер для ОС Windows, актуальные на момент написания заметки (октябрь 2022г.) можно взять и с моего сайта (залил их туда чисто на всякий случай).

Особенности микросхемы

•  совместимость с интерфейсом USB2.0 (работа в режиме «Full-Speed»);

•  поддержка режима приостановки работы USB-устройства («Suspend Mode»);

•  создание на стороне ПЭВМ виртуального COM-порта, аналогичного аппаратному;

•  поддержка операционных систем Windows, Linux, Android, Mac OS;


•  поддержка полнодуплексного последовательного интерфейса UART;

•  наличие встроенного FIFO-буфера для интерфейса UART;

•  диапазон поддерживаемых скоростей UART: 50 бит/с … 2 Мбит/с;

•  возможность работы с сигналом RTS;


•  возможность работы от напряжений питания в диапазоне +3,1В…+5,3В;

•  встроенный источник тактовой частоты;

•  встроенная схема начального сброса при включении питания (Power-On Reset);

•  стандартный корпус SOIC-08, изготовленный по бессвинцовой технологии;

•  низкая стоимость.


Описание выводов






Предельно допустимые параметры

Здесь и далее приведенные значения напряжений измерены относительно общего провода (вывод №3).



1 - номер партии микросхемы указывается на ее корпусе под строкой с наименованием:




Электрические характеристики (+5,0В; +25°C)



Электрические характеристики (+3,3В; +25°C)




Детальное описание

Микросхема CH340N представляет собой недорогой преобразователь интерфейсов USB<=>UART с интегрированным тактовым генератором и схемой начального сброса при включении питания (Power-On Reset). Данный чип позволяет легко подключить микроконтроллер, ПЛИС или другую «умную» логику к любому современному компьютеру при помощи обычного USB-кабеля. При этом на стороне ПК создается виртуальный COM-порт, работа с которым (с точки зрения пользователя и разработчика ПО) полностью аналогична работе с аппаратным COM’ом, что позволяет использовать существующие приложения для COM-портов без изменений и доработок. Кроме того, при помощи CH340N можно подключить к шине USB компьютера устройства, управляемые по интерфейсам RS232, RS422 и RS485. Для этого к рассматриваемому чипу достаточно добавить соответствующий преобразователь уровня сигналов (в случае RS485 потребуется также схема управления приемопередатчиком).

На шине USB микросхема CH340N определяется следующим образом:





Данные получены при помощи мониторинговых программ USBDeview и ChipGenius, для сравнения приведена также информация по породистому чипу FT232RL, у которого (для наглядности) специально выставлено идиотское значение потребляемого тока. Из приведенных рисунков видно, что с точки зрения USB-порта конвертер CH340N является устройством типа «Full-Speed» (скорость передачи данных 500Кбит/с…12Мбит/с) и «Low-Power» (потребление тока не более одной единичной нагрузки). При этом полная поддержка стандарта USB2.0 в рассматриваемом чипе, видимо, отсутствует, поскольку версия USB у него указана «1.1»1, однако, для устройств типа «Full-Speed» это не особо критично. А вот то, что микросхема CH340N относится к классу «Low-Power» – действительно важно, поскольку ее токопотребление от шины USB может быть в любой момент ограничено на уровне 100мА. Понятно, что в реальной жизни данный фактор не мешает плате с CH340N отжирать более 500мА даже от порта USB2.0, но тут вопросы, конечно, не к чипу, а к контроллеру самого́ USB-порта. И еще один момент: внутренняя структура USB-трансивера чипа CH340N разработана в соответствии с требованиями стандарта USB, поэтому содержит подтягивающий резистор и прочий необходимый обвес. В связи с этим, выводы «UD+» и «UD–» микросхемы рекомендуется подключать к USB-разъему напрямую, без использования внешних последовательных резисторов или других согласующих/защитных цепей.

1 - обратите внимание на то, что у микросхемы FT232RL заявлена полная поддержка стандарта USB2.0

Данные, принятые чипом CH340N с шины USB, выводятся на линию TXD, а по линии RXD микросхема считывает информацию, которая впоследствии будет передана в USB-порт. Выдача/считывание данных идет побайтно, начиная со старшего байта посылки, при этом в каждом байте передача битов производится от младшего к старшему. Трансивер UART рассматриваемого конвертера допускает работу в симплексном, полудуплексном и полнодуплексном асинхронном режиме. В состоянии ожидания на линиях TXD и RXD присутствует высокий логический уровень. Количество битов данных может быть равно 5, 6, 7 или 8, количество стоповых битов – 1 или 2, имеется также возможность контроля бита четности (Even/Odd/Mark/Space) или его отключения (None). Перечень скоростей обмена, на которых гарантирована корректная работа чипа, приведен ниже1:



Вообще говоря, в реальной жизни данный перечень будет гораздо шире. Например, в связке с FT232RL микросхема CH340N нормально работает на скоростях 100 000 бит/с, 200 000 бит/с, 300 000 бит/с, 500 000 бит/с и 1 000 000 бит/с, а уж при общении сама с собой (т.е. когда замкнуты контакты TXD и RXD) – вообще на любой скорости из диапазона 50бит/с…2Мбит/с. Однако, для повышения надежности, наверное, всё же лучше придерживаться значений, рекомендованных производителем. Отметим, что при отправке данных по линии TXD отклонение временны́х характеристик от номинальных не превышает 1,2%. При приеме данных по линии RXD максимальная ошибка таймингов не должна быть больше 2%.

Помимо всего прочего, микросхема CH340N позволяет пользователю работать с сигналом RTS. Данная возможность может быть использована для расширения «традиционных» функций шины UART (загрузки прошивки в микроконтроллер при помощи бутлоадера, конфигурации чипа и т.д.). Обратите внимание на то, что сигнал RTS на выходе CH340N является инверсным – если в виртуальном COM-порте линия RTS включена, на выводе 4 чипа будет присутствовать нуль и наоборот.

1 - для работы на скоростях выше 500Кбит/с (режим полного дуплекса) и 1Мбит/с (режимы симплекса и полудуплекса) производитель рекомендует использовать микросхему CH343 с включенным автоматическим управлением потоком данных. Однако, практика показывает, что чип CH340N корректно работает на скоростях вплоть до 2Мбит/с (по крайней мере, при разовой отправке пакетов размером 400 байт).

Напряжение питания (Vcc) микросхемы CH340N может лежать в пределах +3,1В…+5,3В, при этом сам производитель разбивает его на два условных диапазона: «+3,3В» (Vcc = +3,1В…+3,6В) и «+5,0В» (Vcc = +4,0В…+5,3В). При работе в диапазоне «+5,0В» питающее напряжение подается на вывод №5 чипа («VCC»), а между выводами №8 («V3») и №3 («GND») должен устанавливаться блокировочный конденсатор номиналом 0,1мкФ. При работе в диапазоне «+3,3В» выводы №5 и №8 объединяются, и питание подается на точку их соединения (в этом случае блокировочный конденсатор на выходе «V3» не требуется). В обоих случаях между выводами «VCC» и «GND» должна устанавливаться емкость номиналом 0,1мкФ, а напряжение, присутствующее на выводах «TXD», «RXD» и «RTS#» не должно превышать напряжение питания. Исключение составляют чипы, у которых последние три цифры в номере партии больше значения «B40» – насколько я понял, такие микросхемы толерантны к пяти вольтам. Уровень сигнала, формируемого на выводах «TXD» и «RTS#» определяется питающим напряжением чипа – в отсутствие нагрузки он будет равен питанию, при выходном токе в несколько миллиампер может снизиться на 0,5…0,6В. Обратите внимание на то, что неиспользуемые выводы микросхемы должны оставаться неподключенными (здесь, видимо, имеется ввиду, что их нельзя замыкать на «плюс» или на массу без токоограничивающего резистора).

Отдельно хотелось бы отметить одну особенность микросхемы CH340N. Дело в том, что в любом современном преобразователе USB<=>UART есть внутренний понижающий стабилизатор, формирующий питание +3,3В для нужд USB-трансивера. В чипе CH340N этот стабилизатор работает довольно хитро́:

•  если напряжение на выводе «VCC» ниже +3,3В, на выходе стабилизатора (вывод «V3») будет присутствовать та же самая напруга, которая подана на вывод «VCC», т.е. стаб в данном случае фактически выключен;

•  если напряжение на выводе «VCC» больше +3,3В, стабилизатор начинает работать, и на выводе «V3» будут наблюдаться стабильные +3,3В.

Таким образом, если диапазон допустимых питаний CH340N начинается от +3,1В, то на выходе стабилизатора всегда будет присутствовать напряжение выше +3,0В, чего вполне достаточно для функционирования USB-трансивера (см. стандарт USB2.0). Это дает возможность не заморачиваться тем, куда должен быть подключен вывод «V3» в зависимости от напряжения Vcc (как требует производитель), а сделать универсальный вариант – подать питание на выводы №5 и №3, а вывод «V3» оставить свободным (при этом не забываем про блокировочный конденсатор, необходимый для нормальной работы понижающего преобразователя). При таком подходе и стабилизатор на +3,3В будет нормально работать (см. конденсатор), и USB-трансиверу вполне хватит питания, и дергать туда-сюда вывод «V3» не потребуется. По крайней мере, практика подтверждает данные теоретические выкладки – если на ногу №8 повесить конденсатор номиналом 0,1мкФ и забыть про нее, а на ноги «VCC» и «GND» подавать питание от +3,1В до +5,3В, преобразователь CH340N нормально работает на всех доступных скоростях UART при любом разрешенном формате кадра.

В завершение данного пункта отметим, что микросхема CH340N выпускается в стандартном корпусе SOIC-08, обеспечивающем простоту монтажа чипа, а также уменьшающем общие габариты разработки. Наличие встроенного тактового генератора и схемы начального сброса позволяет обойтись без соответствующего внешнего обвеса, что снижает стоимость устройства и тоже уменьшает его размеры. Использование бессвинцовой технологии при производстве CH340N обеспечивает совместимость с требованиями RoHS.


Баги

При работе с интерфейсом UART на сравнительно высоких скоростях необходимо учитывать одну недокументированную особенность микросхемы CH340N. Дело в том, что для BAUD ≈ 634000 Кбит/с и выше чип внезапно начинает вставлять между передаваемыми байтами паузу длительностью порядка 1,5мкс. Вот так выглядят осциллограммы сигнала на выходе TXD при передаче ASCII-посылки «ZAZ» с форматом кадра 8-N-1 на скоростях 633 000 Кбит/с и 634 000 Кбит/с соответственно (полностью показаны только первые два байта):



Поскольку двоичный код ASCII-символа «Z» – это 01011010 (0x5A), а код символа «A» – это 01000001 (0x41), поток битов на линии TXD в данном случае должен выглядеть так (с учетом стартового и стопового бита):

0010110101   0100000101   0010110101

И отмечу, что на верхней картинке так и происходит (правда, там длительность посылки почему-то получилась немного больше расчетной). А вот на нижней картинке отчетливо видны паузы, которые чип вставляет между стоповым битом текущего байта и стартовым битом следующего. Масла в огонь подливает то, что относительная длительность вставляемой паузы существенно зависит от скорости работы UART: если на картинке выше полторы микросекунды соответствуют примерно одному биту, то при BAUD = 2 000 000 бит/с интервал 1,5мкс будет длиться аж три бита, т.е. в этом случае к каждому байту добавится одна треть абсолютно бестолковой тишины:



Откуда берется данная напасть – мне неведомо, поскольку в документации на CH340N про это нет ни слова. Однако, помнить о наличии вышеописанного косяка при работе на высоких скоростях крайне полезно, поскольку он увеличивает время отправки данных по UART. В таблице ниже приведена реальная и расчетная (в скобках) длительность передачи пакета байтов для разных его размеров (формат кадра 8-N-1):



Отдельно хотелось бы отметить, что у микросхемы CH340N для работы с интерфейсом UART есть раздельный буфер типа FIFO, о чем дважды указывается в документации. Однако, нигде нет ни слова о том, какой размер имеет этот буфер, можно ли его поменять и что это изменит. К слову – в настройках виртуального COM-порта, созданного чипом CH340N, есть нечто похожее:



но ни положение ползунков, ни состояние галки «Использовать буферы FIFO» ни на что не влияют. Для иллюстрации данного факта в таблице выше приведена длительность отправки пакета при полностью выключенном буфере (столбцы «Buf. = Off») и при его максимальном размере (столбцы «Buf. = MAX»). Нетрудно видеть, что и в том, и в другом случае время передачи данных абсолютно одинаковое, т.е. по крайней мере на этот параметр буферы UART в чипе CH340N никак не влияют. В связи с этим буду крайне признателен, если кто-нибудь сможет прояснить для меня данный момент.


Схемы включения

▪ Устройства с питанием от шины USB

Ниже приведена базовая схема включения микросхемы CH340N в устройстве, полностью запитываемом от шины USB («Bus-Powered Device»):



Из данного рисунка видно, что благодаря высокой степени интеграции, рассматриваемый чип требует всего двух внешних элементов – блокировочных конденсаторов C1 и C2. Тип данных конденсаторов может быть любым, номинальная емкость должна составлять 0,1мкФ, а рабочее напряжение быть не ниже 6,3В и 4,0В соответственно. Предохранитель FU1 служит для защиты USB-порта и является опциональным элементом (в случае ненадобности его можно тупо закоротить). На приведенной схеме используется самовосстанавливающийся предохранитель MF-USMF010, имеющий гарантированный рабочий ток 0,1А и ток срабатывания 0,3А. Данный выбор – этого своего рода компромисс между нагрузочной способностью порта USB2.0 (0,5А) и максимумом, который, в соответствии со стандартом, может потреблять от шины USB устройство типа «Low-Power» (напомню, что CH340N определяется именно как дывайс, способный отожрать от хаба не более 0,1А). Однако, современные USB-порты далеко не всегда заморачиваются такими мелочами, как «строгое» управление электропитанием, поэтому в ряде случаев в качестве элемента FU1 может быть установлен предохранитель с рабочим током 0,5А (например, MF-NSMF050). Разъем XS1 выбирается исходя из требований разрабатываемого проекта; единственное условие – он должен соответствовать стандарту USB (да и то не всегда).

На выходе базовой схемы будем иметь напряжение питания шины USB (условные +5,0В) и три сигнала TTL-уровня: «TXD» (линия вывода данных из CH340N), «RXD» (линия ввода данных) и «RTS#» (дополнительный управляющий сигнал). Этого вполне достаточно, чтобы подключить рассматриваемый чип, например, к микроконтроллеру:



Так же элементарно CH340N цепляется к преобразователю интерфейса «TTL<=>RS-485»:



В данном случае для управления приемопередатчиком проще всего использовать линию «RTS#», правда, для этого надо будет немного заморочиться с «верхней» программой, которая работает с виртуальным COM-портом на ПК. Отметим, что эту линию можно притянуть к массе резистором номинала 10кОм…100кОм, дабы при оторванном сигнале «RTS#» чип DD2 гарантированно находился в режиме приема и не слал непредсказуемый хлам по интерфейсу RS-485.

Обратите внимание, что на вышеприведенных схемах устройство будет запитано лишь после подключения его к шине USB, при этом значение питающего напряжения составит условные +5,0В. Однако, для многих современных микросхем (тех же ESP8266 и ESP32) такое напряжение смертельно – они умеют работать только от +3,3В. Очевидно, что в таких случаях чип CH340N тоже должен быть запитан от +3,3В, дабы уровень TTL-сигналов «TXD», «RXD» и «RTS#» был автоматически согласован. Это можно реализовать при помощи любого линейного стабилизатора – напряжение питания с шины USB необходимо подать на его вход, а с выхода можно будет питать всю остальную логику устройства. В качестве такого стабилизатора обычно используется широко распространенная микросхема AMS1117-3.3 (DA1 на схеме ниже):



хотя, конечно, никто не запрещает закладывать в схему и более «продвинутые» чипы. Отметим, что при трехвольтовом питании преобразователя CH340N конденсатор 0,1мкФ с его вывода «V3» можно убрать, если данный вывод подключить напрямую к ноге «Vcc» (рекомендация производителя). Однако, практика показывает, что и в базовой конфигурации (выводы №8 и №5 не соединены, на пине «V3» висит блокировочная емкость) рассматриваемая микросхема работает вполне корректно:



Кроме того, напряжение питания CH340N может лежать в пределах +3,1В…+5,3В, поэтому при необходимости вся схема может быть запитана не от +3,3В, а от, скажем, +3,9В (естественно, здесь понадобится стабилизатор не с фиксированным выходом, а с программируемым, например, AMS1117-ADJ). Однако, в документации производителя отсутствует информация о том, как поступать при Vcc = +3,6В…+4,0В, поэтому рекомендуется всё-таки не замыкать выводы «Vcc» и «V3», а использовать базовый вариант схемы – по крайней мере, он точно проверен на практике для всех напряжений питания, а дополнительные затраты при этом составят всего одну емкость номиналом 0,1мкФ.

При разработке печатной платы блокировочные конденсаторы необходимо располагать как можно ближе к выводам «Vcc» и «V3» микросхемы CH340N. Сигнальные линии шины USB («D+» и «D–») должны идти параллельно друг другу, дабы не возникало дополнительных задержек при распространении этих сигналов. Кроме того, производитель рекомендует удалять линии «D+» и «D–» от других сигнальных цепей, а также окружать их земляным полигоном, хотя это, наверное, всё же больше относится к устройствам типа «High-Speed», работающим на частотах до 480Мбит/с.


▪ Устройства, питающиеся от отдельного источника

В том случае, когда разрабатываемое устройство полностью запитывается от собственного отдельного источника (т.е. относится к типу «Self-Powered Device»), питание микросхемы CH340N рекомендуется организовывать от того же самого источника:



Это позволит автоматически согласовать уровни сигналов «TXD», «RXD» и «RTS#», а также предотвратить паразитную запитку преобразователя через защитные диоды на его TTL-выводах в отсутствии подключения к шине USB. Напряжение питания Vcc в данном случае может лежать в пределах от +3,1В до +5,3В (при Vcc = +3,1В…+3,6В производитель всё так же рекомендует экономить на конденсаторе C2 и соединять напрямую выводы «Vcc» и «V3» чипа CH340N). Обратите внимание на то, что питающая линия шины USB («Vusb») здесь вообще не используется, поэтому обычно ее оставляют неподключенной. Исключение составляют проекты, в которых по состоянию данной линии устройство судит о наличии соединения с USB-портом – в этих случаях напряжение «Vusb» вешается на один из входов МК либо напрямую, либо через последовательный резистор или резистивный делитель, осуществляющие роль согласования уровня сигнала:



Рекомендации по разработке печатной платы при этом остаются прежними – блокировочные конденсаторы располагаются как можно ближе к выводам «Vcc» и «V3», а сигнальные линии шины USB должны быть как можно короче и идти параллельно друг другу.


▪ Устройства с раздельным питанием

ВНИМАНИЕ: рекомендую прочесть данный пункт полностью, поскольку в нем описаны недокументированные ньюансы работы схемы из даташыта на CH340N.

Выше были рассмотрены варианты включения микросхемы CH340N, при которых ее напряжение питания равно напряжению питания подключаемого чипа (микроконтроллера, преобразователя «TTL<=>RS485» и т.д.). Отметим, что производитель рекомендует придерживаться именно таких схем – они позволяют автоматически согласовать уровни сигналов «TXD», «RXD» и «RTS#» между двумя чипами, а также предотвратить их паразитную запитку друг от друга через защитные диоды на TTL-выводах. Однако, на практике реализовать подобный вариант системы питания получается не всегда, поэтому для решения вышеупомянутых задач приходится использовать дополнительные аппаратные ухищрения.

На рисунке ниже показана рекомендуемая производителем схема подключения CH340N к микроконтроллеру, когда данные чипы питаются от разных источников (Vcc ≠ Vdd):



В качестве напряжения питания CH340N (Vcc) здесь используются условные +5,0В, взятые напрямую с шины USB, а камень может быть запитан любым напряжением Vdd в диапазоне +1,8В…+5,5В (естественно, если оно не превышает максимально допустимое для используемого кирпича). На полевом транзисторе Q5 и диодах Шоттки D6, D7 реализован простейший преобразователь уровней, позволяющий на стороне МК привести входные сигналы к значению Vdd, а на стороне CH340N – к значению Vcc. Отмечу, что в официальной документации на рассматриваемый чип принцип работы данного преобразователя вообще никак не объяснен, поэтому было принято решение заполнить этот пробел.


▪ ▪ Согласование выхода CH340N и входа МК

Согласователь уровней на диодах D6 и D7 работает следующим образом. Выходы «TXD» и «RTS#» у CH340N построены по обычной двухтактной схеме:



а входы «RXD» и «BOOT#» у микроконтроллера должны быть подтянуты к «плюсу» при помощи внутренних резисторов. Если таковых не имеется, необходимо использовать внешние подтяжки (подобная ситуация возникнет, например, когда CH340N подключается не к камню, а к преобразователю «TTL<=>RS485»). В итоге эквивалентная схема диодного согласователя будет выглядеть так:



(здесь R1 – внешний подтягивающий резистор, а R2 – внутренний; также показаны встроенные защитные диоды на входе МК и его емкость). Из этой схемы видно, что если напряжение питания Vcc больше Vdd, а на выводе «TXD» преобразователя CH340N выставлена единица, диод D6 будет закрыт, и на входе «RXD» камня за счет подтягивающего резистора тоже будет присутствовать единица, причем, уровня Vdd. Если же выход «TXD» переключается в нуль, диод D6 открывается и через него начинает течь ток, поэтому на входе «RXD» получим напряжение около +0,3В, расцениваемое камнем как логический нуль даже при Vdd = +1,8В1. Иными словами, поведение сигнала на входе «RXD» микроконтроллера будет полностью повторять поведение сигнала на выходе «TXD» CH340N, только уровень этого сигнала составит не условные +5,0В, взятые с шины USB, а будет автоматически приведен к напряжению питания камня (Vdd). Понятно, что аналогичным образом работает и согласователь на диоде D7 (отметим, что выход «RTS#» может быть соединен не только со входом «BOOT#», но и вообще с любым портом камня или просто оставаться свободным, если он не используется).

1 - у современных микросхем гарантированный уровень нуля обычно не хуже 0,2‧Vdd, что при Vdd = +1,8В составляет +0,36В. Это, кстати, объясняет, почему в диодном согласователе уровней крайне не рекомендуется использовать вместо Шоттки «обычные» импульсные диоды (BAS16, 1N4148 и т.д.). У таких диодов даже в области малых токов прямое падение напряжения составляет не меньше +0,45В, и никто не даст гарантии, что данный уровень будет воспринят микроконтроллером как логический нуль.


Здесь необходимо сказать несколько слов о напряжении питания микросхемы CH340N (Vcc). Дело в том, что при описании диодных согласователей уровня сигнала, используемых в преобразователях типа «USB <=> UART», обычно считают, что напряжение Vcc равно +5,0В, т.е. оно в принципе не может быть меньше напряжения питания камня. На самом же деле и МК вполне можно запитать от Vdd = +5,5В, и c шины USB может поступать гораздо меньше пяти вольт – в соответствии со стандартом «USB2.0», для запитки устройств типа «Low-Power» должно вполне хватать напряжения Vcc = +4,35В:



(см. пункт «7.2.2 Voltage Drop Budget» стандарта). А при таких раскладах диод D6 (D7) будет открыт всегда, независимо от состояния выхода «TXD» («RTS#»), поскольку разница напряжений Vdd и Vcc оказывается существенно больше +0,3В (и даже +0,7В, если используются обычные диоды). Однако, данный факт не делает диодную схему согласования нерабочей: даже если Vcc = +4,35В и на выходах CH340N установлена единица, напряжение на соответствующих входах МК составит около 4,35В+0,3В = +4,65В, т.е. будет выше гарантированного единичного уровня, который у современных камней уж никак не хуже 0,8‧Vdd. Формирование же нуля при Vcc < Vdd ничем не будет отличаться от ситуации Vcc ≥ Vdd, т.е. здесь всё остается без изменений.

Отметим, что в реальных схемах диодный согласователь будет несколько искажать форму импульсов на стороне микроконтроллера. Вот так выглядит сигнал на входе «RXD», если в качестве камня использовать чип ATTiny2313A-SU (внутренняя подтяжка 20кОм…50кОм), в качестве диода D6 взять SR108 (Шоттки на 1А/80В), а скорость обмена данными установить равной 128000 бит/с (длина одного бита 7,81мкс):



На данном рисунке голубая осциллограмма – это сигнал «RXD» на входе кирпича, желтая – напряжение питания МК (Vdd), а сиреневенькая – сигнал «TXD», формируемый CH340N. Хорошо видно, что при низких значениях Vdd на переднем и заднем фронтах импульсов возникают выбросы, а при Vdd > ≈4,0В они превращаются в завалы. Возникновение выбросов, судя по всему, объясняется наличием у реальных диодов собственной емкости – например, при переходе импульса «TXD» из нуля в единицу напряжение, накопленное на данной емкости (примерно +0,3В), будет сложено с питанием Vcc и подано на вход «RXD» камня. Это спровоцирует резкий бросок напряжения на данном входе, что мы и видим на картинке выше (уровень броска при этом ограничивается внутренним диодом камня). Наличие же завалов на передних фронтах импульсов, видимо, обусловлено входной емкостью порта «RXD» микроконтроллера – после перевода линии «TXD» из нуля в единицу этой емкости требуется определенное время на то, чтобы зарядиться с примерно +0,3В до уровня Vdd через внутреннюю подтяжку камня. Ну а то, что завал фронта идет не с самого начала, можно объяснить тем, что он суммируется с выбросом и эти два процесса до определенной степени компенсируют друг друга. Я повторюсь, что в документации на CH340N про это нет ни слова, поэтому вышеприведенные высказывания – это лишь мои догадки. Однако, они косвенно подтверждаются следующими фактами:

•  если повесить параллельно диоду SR108 емкость номиналом 100пФ (что примерно равно собственной емкости диода), длительность выбросов заметно увеличится. При этом они становятся настолько могучими, что нехило так компенсируют завалы передних фронтов даже при Vdd = +5,0В:



•  если убрать дополнительную емкость 100пФ с диода D6 и повесить ее параллельно входу «RXD» камня, сразу увеличится завал передних фронтов сигнала, причем, настолько, что это практически скомпенсирует выбросы даже при Vdd = +1,8В:



•  если дополнительную емкость 100пФ убрать совсем, а вход «RXD» микроконтроллера дополнительно подтянуть к «плюсу» питания при помощи внешнего резистора (R1 = 10кОм ± 5%), это уменьшит как длительность выброса, так и длительность завала:



Последний факт объясняется тем, что добавление внешнего резюка R1 снижает суммарное сопротивление подтяжки камня (R1||R2), вследствие чего процесс разряда емкости диода и процесс заряда входной емкости МК будут протекать быстрее (см. τ = RC). Поэтому неудивительно, что форма импульсов на входе «RXD» существенно улучшилась. Вообще говоря, с точки зрения минимизации искажений сигнала суммарное сопротивление подтягивающих резисторов лучше делать как можно ниже, однако, здесь есть один ньюанс. Дело в том, что уменьшение подтяжки будет увеличивать ток через диод D6 (D7), вследствие чего вырастет потребление энергии от источника питания, а это далеко не всегда приемлемо (особенно в устройствах, питающихся от батареек). Конечно, согласующий элемент будет открыт не всё время, а только в моменты нуля на выходе «TXD» микросхемы CH340N, однако, при интенсивном обмене данными по шине USB увеличение энергопотребления может стать существенным. Но самое главное – рост тока через диод увеличивает прямое падение напряжения на нем, и при значениях в несколько миллиампер оно вполне может превысить гарантированный уровень нуля. Напомню, что у современных микросхем этот порог обычно не хуже 0,2‧Vdd, т.е. в «универсальном» случае на диоде должно падать не больше VF = 0,2‧1,8В = +0,36В. В связи с этим, в качестве согласующих элементов лучше не использовать не только обычные импульсные диоды с их VF > +0,5В, но и могучие Шоттки, у которых падение запросто может превышать +0,4В. Конечно, эта рекомендация носит общий характер, и в конкретном проекте могут вполне нормально работать те же 1N4148, но всё же для согласования уровней сигналов лучше использовать маломощные диоды Шоттки (BAT54, BAT54C, BAS70 и т.д.). У таких диодов и емкость зачастую будет небольшая, что снизит выбросы напряжения на фронтах импульсов, и по карману они не сильно ударят (на октябрь 2022г. за сотню BAT54C в Китае просят менее ста рублей). Что же касается сопротивления дополнительного резистора R1, то здесь всё будет зависеть от того, на какой скорости работает шина UART. Если эта скорость небольшая, то можно вообще обойтись без внешней подтяжки, ну а в шустрых приложениях элемент R1, конечно, понадобится. Например, вот так изменится форма сигнала на входе «RXD» микроконтроллера при замене диода SR108 на диод BAT54, если используется только внутренний подтягивающий резистор камня:



Как и ожидалось, вследствие меньшей емкости диода BAT54 выбросы на фронтах импульсов практически пропали, что, с одной стороны, вроде бы неплохо. Однако, из-за этого передний фронт сигнала стал настолько пологим, что скорость обмена по UART при такой картине вряд ли сто́ит делать больше 230400 бит/с (на рисунке, напомню, шина работает на скорости 128000 бит/с). А вот если на вход камня повесить внешний резистор R1 = 5,1кОм ± 5%, то бодрейт можно повысить до максимального для CH340N значения (2 000 000 бит/с):



при этом и потребляемый от источника ток увеличится всего на ≈1мА, и падение напряжения на диоде не превысит +0,36В. Если же форма импульсов кажется не особо прямоугольной, нужно просто немного уменьшить номинал подтяжки R1 (при R1 = 1кОм длительность фронта будет не больше 100нс…120нс; правда, на диоде D6 при этом упадет уже́ около +0,40В).

В завершение данного пункта отметим, что наличие диодов D6 и D7 помогает также предотвратить паразитную запитку микроконтроллера от микросхемы CH340N в тех случаях, когда на преобразователь интерфейса напряжение подано, а на камень нет. Такая ситуация может возникнуть, если USB-разъем устройства соединили кабелем с компьютером, а вот в розетку дывайс включить забыли. Нетрудно видеть, что здесь диоды D6 и D7 будут закрыты при любом состоянии выходов «TXD» и «RST#» со стороны CH340N (т.к. Vdd = 0), поэтому микроконтроллер гарантированно останется обесточен. В обратном случае (на камень питание подано, а USB-кабель выдернут) была бы возможна паразитная запитка преобразователя интерфейса через внутреннюю или внешнюю подтяжку МК, однако, тут вообще всё просто – ситуацию спасет встроенная в CH340N схема защиты. Правда, следует отметить, что производитель гарантирует наличие данной схемы только в чипах, у которых последние три символа в номере партии больше «B40» (например, «C02») – в противном случае придется использовать внешний защитный обвес (см. оригинальную документацию на рассматриваемый преобразователь). Однако, судя по всему, в настоящее время практически все микросхемы CH340N, присутствующие на рынке, удовлетворяют этому требованию, так что проблем с их запиткой от камня при Vcc = 0 возникнуть не должно.


▪ ▪ Согласование входа CH340N и выхода МК

Для нормальной работы согласователя уровней на транзисторе Q5 необходимо соблюдать два требования:

•  выход «TXD» микроконтроллера должен быть построен по двухтактной схеме (см. предыдущий пункт);

•  вход «RXD» преобразователя CH340N должен быть подтянут к «плюсу» питания Vcc.

При соблюдении данных требований эквивалентную схему транзисторного преобразователя можно изобразить так:



Отметим, что чип CH340N имеет встроенную подтяжку по входу «RXD» (R4), и на низких скоростях обмена данными вполне можно обойтись только ей. Однако, при высоком бодрейте в схему потребуется включить внешний подтягивающий резистор R3, дабы обеспечить необходимую крутизну фронтов передаваемого сигнала (см. ниже).

Из приведенного рисунка видно, что если на выводе «TXD» микроконтроллера выставлена единица, напряжение на затворе транзистора Q5 будет практически равно напряжению на его истоке, поэтому полевик будет закрыт, и на входе «RXD» CH340N за счет подтягивающего резистора R4 (или R4||R3) тоже будет присутствовать единица, причем, уровня Vcc. Если же выход «TXD» переключается в нуль, исток Q5 замыкается на массу, поэтому между ним и затвором транзистора появляется напряжение Vdd. Вследствие этого полевик открывается и через свой сток притягивает вход «RXD» чипа CH340N к земле. Иными словами, поведение сигнала на входе «RXD» USB-преобразователя будет полностью повторять поведение сигнала на выходе «TXD» микроконтроллера, только уровень этого сигнала автоматически приведется к напряжению Vcc, взятому с шины USB, и не будет зависеть от напряжения питания камня (Vdd).

Следует иметь ввиду, что в реальных схемах транзисторный согласователь несколько искажает форму импульсов со стороны микросхемы CH340N. Вот так выглядит сигнал на ее входе «RXD», если в качестве камня использовать чип ATTiny2313A-SU, в качестве ключа Q5 взять полевик BSS138 (50В/0,2А), подтяжку R3 не устанавливать, а скорость обмена данными сделать равной 128000 бит/с (длина одного бита 7,81мкс):



На данном рисунке голубая осциллограмма – это сигнал «TXD», формируемый кирпичом, желтая – напряжение питания МК (Vdd), а сиреневенькая – сигнал «RXD» на входе CH340N. Хорошо видно, что на переднем фронте импульсов возникают завалы, причем, при более низких значениях Vdd завал выражен намного ярче. Возникновение данного эффекта, судя по всему, обусловлено входной емкостью вывода «RXD» CH340N, а также наличием внутреннего диода у транзистора Q5. В те моменты, когда на выходе «TXD» микроконтроллера присутствует логический нуль, емкость входа «RXD» прижата к массе через низкое сопротивление открытого канала полевика, поэтому напряжение на ней практически равно нулю. После перевода линии «TXD» из нуля в единицу этой емкости требуется определенное время на то, чтобы зарядиться до уровня Vcc. При этом следует отметить, что до напряжения ≈Vdd заряд идет в основном через открытый внутренний диод транзистора Q5, поэтому процесс протекает достаточно быстро, вследствие чего начало переднего фронта на входе CH340N всегда получается довольно крутым. Однако, затем диод закрывается, и емкость может заряжаться только через внутреннюю (R4) или внешнюю (R3) подтяжку USB-преобразователя. Ну а поскольку сопротивление резисторов R4 и R3 существенно больше сопротивления диода в полевике, процесс этот длится гораздо дольше – именно его мы видим на осциллографе как завал фронта.

Еще раз подчеркну, что в документации на рассматриваемую микросхему нет ни слова про искажение формы сигналов в согласователях уровней, поэтому вышеприведенные высказывания – это лишь мои предположения. Однако, они косвенно подтверждаются следующими фактами: если на вход «RXD» чипа CH340N повесить дополнительную емкость, длительность завалов увеличивается:



а если ввести в схему внешнюю подтяжку R3, их длительность уменьшается:



Иными словами, изложенные выше догадки позволяют спрогнозировать реакцию устройства на вносимые изменения. При этом в реальной жизни микроконтроллер и CH340N вполне могут общаться на максимально возможной скорости (2 000 000 бит/с) даже с номиналом резистора R3 = 5,1кОм ± 5%. Ну а если форма импульсов на входе «RXD» USB-преобразователя вам кажется недостаточно прямоугольной, всегда можно уменьшить номинал данного резистора. Причем, здесь, в отличие от диодного согласователя, нам не надо заморачиваться с энергопотреблением внешней подтяжки (один хер, она запитывается от шины USB). Поэтому вполне оправданным будет снизить номинал подтягивающего резистора до R3 = 1кОм ± 5% – в этом случае длительность переднего фронта импульса на входе «RXD» CH340N не превысит 500нс, чего заведомо хватит для обмена данными на максимально возможной скорости:



Отметим, что описанный алгоритм работы согласователя уровней предъявляет определенные требования к параметрам транзистора Q5. Во-первых, он должен иметь такое сопротивление открытого канала, чтобы протекающий ток не создал на нем напряжение больше +0,9В (см. таблицу с электрическими характеристиками CH340N при Vcc = +5,0В). Правда, на практике этот ток настолько мал, что большинство проектировщиков электроники даже не задумывается о существовании данного требования. Например, пусть на входе «RXD» CH340N висит внешняя подтяжка R3 = 1кОм ± 5% – как было сказано выше, этого за глаза хватает для устойчивой передачи данных при максимальном бодрейте. В этом случае при Vcc = +5,0В ток через открытый канал транзистора Q5 будет равен примерно 5В/1кОм = 5мА, поэтому сопротивление «сток-исток» полевика должно быть не выше 0,9В/5мА = 180 Ом. Понятно, что такому условию с лихвой удовлетворяет любой современный полевой транзистор, поэтому на сопротивление открытого канала Q5 обычно никто и не обращает внимание. Однако, при этом не нужно забывать, что протекающий ток создает падение напряжения не только на полевике Q5, но и на нижнем ключе выходного каскада микроконтроллера, а вот у него характеристики обычно не особо хорошие. В качестве примера можно рассмотреть рисунок выше – при R3 = 5,1кОм уровень логического нуля, формируемый камнем (голубая осциллограмма), составляет менее +0,2В, а при R3 = 1кОм – уже́ +0,4В. Конечно, это еще далеко от предельного значения +0,9В, однако, хорошо иллюстрирует, что увлекаться снижением номинала внешней подтяжки особо не следует (там сдуру можно не только нуль сильно поднять, но и вообще сжечь нахер выход камня). При этом обратите внимание – в обоих случаях сиреневая и голубая осциллограммы в нуле примерно одинаковы, т.е. на транзисторе Q5 действительно практически ничего не падает, ибо сопротивление у него и правда невелико.

Как бы то ни было, первое требование всё же больше относится не к самому́ полевику Q5, а к корректному выбору номинала внешней подтяжки. А вот второе требование напрямую связано именно с транзистором, причем, чаще всего неправильная работа согласователя уровней вызвана именно его несоблюдением. Из алгоритма работы схемы понятно, что для ее корректного функционирования полевик должен нормально открываться даже при минимальном питании камня Vdd. Это означает, что транзистор должен уметь пропускать через себя ток около 5мА (см. выше) при напряжении «затвор-исток» +1,8В. А этим могут похвастаться далеко не все современные полевики – например, даже ключ IRLML0030 с логическим уровнем управления имеет порог срабатывания VGS = +2,3В, да и при нем он гарантированно откроется лишь до 25мкА:



Поэтому при выборе транзистора для согласователя уровня параметр «Gate Threshold Voltage» является довольно важным. Однако, обычно он приводится только для тока стока порядка десятков-сотен микроампер, а нам нужны миллиамперы. Вследствие этого, гораздо полезнее в данном случае будет использовать графики зависимости выходного тока транзистора от напряжения «затвор-исток» (ну или хотя бы выходные характеристики ключа). Например, для полевиков марки BSS138 (традиционно применяемых в согласователях уровней) и для полевиков марки 2SK3018 (рекомендуемых производителем CH340N) данные графики выглядят так:



т.е. видно, что выходной ток в 5мА они обеспечат при затворном напряжении даже меньшем, чем +1,8В. Единственный момент – лучше всё же ориентироваться на ключи с меньшей емкостью (зарядом), поскольку они не так сильно заваливают передний фронт импульсов. Например, транзистор IRLML2402 (входная емкость 110пФ, заряд 2,6нКл) прекрасно откроется при Vdd = +1,8В, но форма сигнала при этом будет немного хуже, чем при использовании BSS138 (входная емкость 27пФ, заряд 1,7нКл):



В завершение данного пункта отметим, что наличие транзистора Q5 на входе «RXD» CH340N помогает предотвратить паразитную запитку микроконтроллера от микросхемы CH340N в тех случаях, когда на преобразователь интерфейса напряжение подано, а на камень нет. В этом случае питание с шины USB могло бы проникнуть в кирпич через резистор R4 (или цепь R4||R3) и защитный диод, встроенный в вывод «TXD» МК, однако, этому препятствует внутренний диод полевика (см. эквивалентную схему в самом начале данного пункта). Сам же транзистор при Vdd=0 точно будет закрыт, т.к. напряжение на затворе равно нулю, поэтому микроконтроллер гарантированно останется обесточен. В обратном случае (на камень питание подано, а USB-кабель выдернут) ситуацию, как и в случае диодного согласователя, спасет встроенная в CH340N схема защиты. Напомню, что производитель гарантирует наличие данной схемы только в чипах, у которых последние три символа в номере партии больше «B40» (например, «B49»). В противном случае придется использовать внешний защитный обвес, краткое описание которого дано в оригинальной документации на рассматриваемый преобразователь.

Обсудить эту заметку можно здесь



Место для разного (сдается)

 




Создание, "дизайн", содержание "сайта": podkassetnik
Для писем и газет: Почта России электрическая

Место для © (копирайта, понятно, нет, но ссылайтесь хотя бы на первоисточник)

Since 2013 и до наших дней