CH341A, USB-UART-конвертер и I2C/SPI-программатор за $5

    Когда-то давным-давно я писал пару статей о широко известном в узких кругах чипе FTDI FT232H и различных его применениях. Всем хорош был FT232H для DIY, но и у него нашлось несколько недостатков — относительно неприятный для ручной пайки корпус LQFP48 (для истинных любителей хардкора есть еще вариант в QFN48, паяй — не хочу, DIHALT не даст соврать), цена за оригинальный чип от 250 рублей, вероятность проблем с драйверами на поддельных чипах и некоторая функциональная избыточность, к примеру, поддержка JTAG нужна далеко не всем.

    Решение, как обычно, пришло из Поднебесной, в которой после нескольких лет тупого передирания творческой адаптации чужих чипов наконец выпустили свой собственный конвертер USB-TTL — WinChipHead CH341A в корпусе SOP-28 (не DIP, но тоже паяется без проблем).

    Производство чипа было начато году приблизительно в 2006, но в поле моего зрения он попал только в 2014, когда I2C/SPI-программаторы на этом чипе наводнили европейский EBAY, причем продавцы предлагали цену от 3,5 евро вместе с доставкой, что при средней стоимости хорошего китайского программатора вроде MiniPro TL866A в 50 евро оказалось настолько заманчивым предложением, что устоять не получилось.

    Если вам все еще интересно, что умеет этот китайский чип за 1$ и стоит ли платить больше, если не видно разницы — прошу под кат.

    Коротко о чипе


    CH341 — мультифункциональный конвертер из USB 2.0 в UART, EPP, I2C и SPI.
    В режиме UART поддерживаются не только RX/TX, но и остальные сигналы управления, поэтому на чипе можно сделать USB-модем. В режиме параллельного порта реализован интерфейс EPP и эмуляция принтера (позволяющая подключать принтеры с интерфейсом LPT напрямую к USB без написания дополнительных драйверов). В последовательном режиме поддерживаются интерфейсы I2C и SPI.

    Чип требует минимальной дополнительной обвязки (внешний кварц и несколько конденсаторов). Возможно использование внешней EEPROM для хранения пользовательских Vendor ID, Device ID и некоторых настроек чипа. Питание от 5 В (через встроенный LDO-регулятор), либо от 3.3 В напрямую.

    Кроме CH341A в корпусе SOP-28 имеются два варианта в SSOP-20 — CH341T и CH341H, первый лишен поддержки SPI, в второй — I2C, поэтому рассматривать их в этой статье я не стану.

    Возможные применения


    Описаны в статье про FT232H, повторяться не стану, только замечу, что на CH341A я проверял только работоспособность TX и RX, а не всего UART-интерфейса целиком, если вдруг найдутся какие-то внезапные подводные грабли, как это было с I2C на FT232H — напишите комментарий, буду рад добавить его в статью.

    Готовые изделия


    Китайская промышленность предлагает миллион и один вариант универсального I2C/SPI-программатора на этом чипе, один другого дешевле.

    Доставшийся мне за 3,5 евро вариант, по заверениям его производителя умеет программировать чипы серий 24хх (I2C) и 25xx (SPI), которые предполагается вставлять в ZIF-сокет (если они в корпусе DIP-8-300), либо прижимать/припаивать к посадочной площадке на обратной стороне платы (если они в SOIC-8 или SOIC-16), либо подключать проводами. На гребенку выведены только UART и SPI, а I2C придется брать из ZIF-сокета, если нужен (эта недоработка устранена в более новых версиях, но они дороже).


    Схема программатора отличается от референсной из даташита только использованием внешнего LDO-регулятора вместо встроенного, видимо, встроенный оказался не очень надежным. На моем экземпляре сэкономлено на всем подряд, и кроме CH341A на плате 2 светодиода (Power и Run), 2 резистора, 5 конденсаторов (2 для кварца и 3 для LDO-регулятора), кварц на 12 Мгц, LDO-регулятор AMS1117 на 1 А и ZIF-сокет на два чипа в корпусе DIP-8-300. Из настроек имеется единственный джампер, переключающий программатор между I2C/SPI и USB-UART, при этом у него меняется Device ID.


    В Windows 8.1 драйверы для обоих режимов подтягиваются из сети автоматически, а в Linux они имеются в ядре уже несколько лет.

    Для программирования в Windows используется китайский софт авторства некоего SkyGz, который большинством продавцов с EBAY распространяется нелегально, но работать от этого не перестает. Вот ссылка на него — malthus.mooo.com/download/file.php?id=893 — только не забудьте потом покормить попугая-матершинника и поправить повязку на глазу.

    Для Linux имеются открытые проекты ch341prog (SPI) и ch341eepromtool (I2C), оба работают достаточно хорошо, но весьма неплохо было бы добавить поддержку обоих режимов в flashrom (гляди, xvilka, народные программаторы по цене грязи, а FR их до сих пор не умеет).

    Я проверял работу программатора в Windows 8.1 x64 и Xubuntu Core 15.04 x64 на I2C-чипе OnSemi 24C16 и SPI-чипе Winbond W25Q64CV, работа с I2C занимает секунды (т.к. на чипе 2 Кб памяти и его, при желании, можно читать и писать чуть ли не руками), а вот восьмимегабайтный SPI-чип читается за минуту, а пишется за две, что, конечно, далеко не рекорд, но и не слишком долго для устройства за 5 долларов.

    Заключение


    Если вам не нужна поддержка JTAG, десятков тысяч различных чипов и ICSP, зато нужно средство быстрого резервного копирования/восстановления прошивок различных устройств от роутеров до ПК и серверов — рекомендую программатор на CH341A к приобретению, свои 5 баксов он отрабатывает сполна. А когда его поддержку добавят в flashrom — станет совсем хорошо.

    С другой стороны, я бы не стал закладывать CH341A в дизайн своих устройств, т.к. его надежность при постоянном применении вызывает некоторые сомнения, а если возникнут вопросы, то задавать их будет некому, ведь даже сайт производителя чипа извне Китая открывается через раз.

    Спасибо читателям за внимание, и пусть ваши прошивки никогда не падают.
    Поделиться публикацией

    Похожие публикации

    Комментарии 12

      +1
      А подскажите софтину, чтобы читать/писать 24cXX с помощью ft232
        0
        Можно попробовать TinyBitBang, но в ней I2C реализован через ногодрыг, и потом работает медленнее, чем аппаратные реализации, но зато даже на FT232RL и прочих копеечных FTDI'шках без MPSSE.
        0
        А что там с драйверами под OS X?
          0
          В наличии с сайта производителя или отдельно (нужно будет включить kext-dev-mode в 10.10), упомянутые в статье утилиты ch341* должны собираться и работать и в OSX, но я этот момент не проверял.
          0
          на x64 системы драйвер без цифровой подписи, поэтому для установки драйверов на x64 в стартовом меню необходимо выбрать соответствующий пункт.
            0
            Драйвер из Windows Update уже подписан, так что это не обязательно, в случае если загрузка драйверов из сети не отключена.
            +1
            Только вчера такой приобрел :)
            Нужно было на работе удалить пароль с UEFI на ПК (остался от предыдущего админа). Свои 170 грн — он уже оправдал.
              0
              Еще работу с флешками фирмы MX поправили бы — вообще бесценный программатор был.
                0
                А что с ними, номера команд отличаются от общепринятых?
                Если так, что можно модифицировать код проекта ch341prog и выслать pull request. А еще лучше написать ребятам из проекта flashrom о том, что очень хотелось бы видеть этот чип в списке поддерживаемых, есть шанс, что они услышат.
                  0
                  Чипы поддерживаются, но ооочень долго пишутся, проблема известная, но что-то не исправляют.
                0
                Не подскажете где можна скачать CH341A.exe без трояна RDN/Generic.dx!dqv. PS: McAfee на корпоративном компютере.
                  0
                  Программу качать отсюда: http://remont-aud.net/load/programmy/ch341a_1_30_rus/13-1-0-43423

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое