ChA Программатор Как Пользоваться

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

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

Производство чипа было начато году приблизительно в 2006 году, но в поле моего зрения он попал только в 2014, когда I2C/SPI-программаторы на этом чипе наводнили европейский EBAY, причем продавцы предлагали цену от 3,5 евро вместе с доставкой, что при средней стоимости хорошего китайского программатора вроде MiniPro TL886a в 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 они имеются в ядре уже несколько лет.

USB программатор на CH341a (как пользоваться )


Для программирования в Windows используется китайский софт авторства некоего SkyGz, который большинством продавцов с EBAY распространяется нелегально, но работать от этого не перестает. Вот ссылка на него, только не забудьте потом покормить попугая-матершинника и поправить повязку на глазу.

Для 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 в дизайн своих устройств, т.к. его надежность при постоянном применении вызывает некоторые сомнения, а если возникнут вопросы, то задавать их будет некому, ведь даже сайт производителя чипа извне Китая открывается через раз.

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

ссылка на оригинал статьи http://habrahabr.ru/post/262731/

Запись опубликована автором admin в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.

CH341A — USB Programmer – это утилита и драйвера, необходимые для работы одноименного физического программатора.  

Использование

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

USB программатор CH341A

С их помощью можно перенастроить прошивки BIOS, графические адаптеры, «материнки» компьютеров и ноутбуков, память телевизоров и так далее.

CH341A — USB Programmer представляет собой только программу, являющуюся неким пультом управления, но и содержит пакет драйверов, необходимых для функционирования. Начало рабочего процесса должно осуществляться поэтапно – сперва идет подключение адаптера к компьютеру, затем система активирует поиск драйверов, и можно будет инсталлировать и запускать саму программу. Ввиду того, что драйвера уже «вшиты» в комплект, помешать работе программатора ничего не должно. 

Техническая информация и совместимость

Программа CH341A — USB Programmer совместима со всеми актуальными на данный момент версиями Windows. Она поддерживает новую «десятку» и даже устаревшую XP. В меню настроек можно найти китайский, английский и русский языки. Поддержка последнего поможет Вам более комфортно работать с программатором, избежав возможных ошибок из-за незнания языка интерфейса, быстрее и надежнее «прошивая» необходимую технику. 

Среди поддерживаемых типов микросхем можно отметить продукты от ATMEL, EON, ST, NextFlash, Saifun Semiconductors, MXIC, WINBOND и другие. Ознакомиться детальнее с моделями устройств от вышеперечисленных производителей можно в сети, отыскав статьи на соответствующую тематику.

Ключевые особенности

  • обеспечивает работу физического программатора CH341A;
  • предоставляет полный пакет необходимых драйверов;
  • поддерживает последние версий операционной системы Windows;
  • используется для перепрошивки компьютеров, ноутбуков, телевизоров и другой техники; 
  • полностью переведен на русский язык. 

Простой переходник USB — UART TTL

Статья устарела — сейчас уже не найти data-кабели с USB на старенькие телефоны; поэтому готовый переходник можно за недорого заказать на алиэкспрессе (примечание домовенка сайта).

Честно говоря, мы все обленились… наши прадеды могли спаять схему из сотни элементов за один вечер и не обламывались. Нам же подавай все готовенькое. Примером является простой переходник с COM порта на TTL уровень. Кажется схема в 5 деталей, а как лениво паять. Тем более что последовательные порты теперь в большом дефиците. А на ноутбуках так их вообще нет. Можно конечно воспользоваться интерфейсом USB, но, кто-нибудь пробовал его программировать? Жесть! Да и не всякий контроллер его держит. А вот UART есть почти во всех AVR, причем аппаратно реализованный.

Вывод напрашивается сам. Нужен дешевый,  простой и надежный переходник с USB на UART (COM) с уровнями TTL-логики (0-5вольт). И желательно дополнительными цепями питания, чтобы наше устройство можно было запитать прямо от переходника, не подключая дополнительное питание. И такой переходник есть. Причем готов поспорить, что не дальше чем в километре от вас. В любом салоне Евросети можно всего за 300рублей (или 160 как повезет) купить такое чудо. Простой Data-кабель. Переходник с USB на телефон. В большинстве моделей трубок данные передаются именно через TTL-UART. Тоесть последовательный интерфейс с уровнями напряжений 0-5вольт. (я использовал кабели для старых ericsson R-320)

Вот так выглядит это чудо на прилавке. Внутри — проводок и диск с драйвером. Желательно брать именно такого вида, ибо похожие по форме, но без этикетки евросети — полный отстой: работают через одного и не развязаны с компом по питанию. Обратите внимание, что проводок должен быть с небольшой пластиковой коробочкой. В ней вся соль. Это и есть наш переходник.

Итак, раскурочившем наше приобретение. Внутри плата с чипом PL-2303HX компании Prolific и две группы контактных площадок. Одна — это вход USB, вторая это как раз то что нас интересует. UART с TTL уровнями сигнала. Осталось определить какой из контактов кто. В моем варианте это было так:

V-

V+

1

2

3

4

5

GND

+5V

DCD

DSR

RTS

DTR

NC

6

7

8

9

CTS

GND

RxD

TxD

Итак, нам необходимы только GND, RxD, TxD, для особых эстетов можно взять +5V для питания (ток маленький 100мА в прыжке с кепкой) и сигнал DTR если нужно отследить подключено ли устройство к компьютеру (или, к примеру, включить светодиод прямо в коробочке чтобы красиво было, и видно когда устройство в работе) Подключаем землю к земле, приемник к передатчику, передатчик, соответственно к приемнику. Вот и все. Железо готово. Кстати, на диске есть несколько любопытных PDF файлов c описанием схемы и самого чипа. И если ваша плата отличается от моей, то просто проследите к какому контакту какая нога этого чипа подключена.

Теперь инсталлируем софт с диска… каталог F:\2303dirver\pl2303new\newpl2303_setup\DRIVER\SETUP… запускаем «PL-2303 Driver Installer.exe». Если нет диска, то драйверы и дополнительную информацию можно скачать у компании производителя PL-2303 USB to Serial Bridge Controller.

Что очень приятно, для данного устройства есть драйвера под все мыслимые систамы и операционки (Linux,  PDA, Mac OS, итд.) что существенно расширяет круг возможных применений.

В результате при подключении устройства мы получаем дополнительный COM порт, который ОБЯЗАТЕЛЬНО надо настроить. Во первых, во вкладке параметры порта установить режим управления потоком. Правильный — это «нет». Ни в коем случае нельзя устанавливать «аппаратный» (в этом режиме можно только отлаживать конструкции: данные передаются побайтно по фронту на CTS). Далее необходимо установить номер используемого порта.

Пайка переходника для программатора CH341A

Для этого надо войти в окно дополнительные параметры и установить нужный номер из незанятых. Все. Теперь с Вашим устройством может работать любая терминальная программа. Такая например как HiperTerminal.


В следующей главе опишем простой программатор.

Эту статью можно обсудить здесь.

  Муравьев Юрий

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

Закрыть меню