пятница, 15 марта 2019 г.

Программатор CH341A MinProgrammer описание, драйвера, инструкция

Этот программатор почему-то все называют Mini Programmer, несмотря на то, что надпись на нем все таки иная. Этим грешат даже поисковики.
Даайте посмотрим, что это такое, как установить и как пользоваться.


Вот так выглядит сам программатор. Исполнение довольно качественное, всё пропаяно на совесть.

Описание
В основе программатора лежит микросхема CH341A. Эта микросхема позволяет использовать программатор в качестве обычного USB-UART преобразователя.
Помимо этого, программатор поддерживает SPI, что дает дополнительные возможности, например прошивку AVR-микроконтроллеров.
Так же есть два светодиода, один выступает в роли индикатора питания, второй - индикатор активности линии данных.
На плате установлен стабилизатор питания AM31117 на 3.3 v, что дает возможность питать подключаемые микросхемы этим напряжением. Основным же удобством я считаю наличие ZIF (Zero Insertion Force) разъема для DIP-8 микросхем.
Так же есть контактные площадки для микросхем в sop8 или sop16 корпусах, к которым можно подпаять микросхему или прижать.


Функционал
С помощью MinProgrammer можно считывать, стирать и записывать (прошивать) микросхемы Flash-памяти 25-той серии и EEPROM 24-той серии, 93-тей серии, используя стандартное программное обеспечение. И в вопросе какую память поддерживает программатор уместнее будет делать ставку на программное обеспечение к программатору, а не к железу. Сам программатор - это всего лишь конвертер шин данных.
Стоит помнить о том, что программатор предназначен для работы с микросхемами с питанием 3.3 вольта, если сунуть в него микросхему рассчитанную для работы от 1.8 вольт - она сгорит. Прошить микросхему 1.8 вольт можно с помощью специального адаптера, который покупается отдельно от программатора.

MinProgrammer умеет SPI, I2C и UART. С помощью SPI можно прошивать микроконтроллеры AVR, например, а с помощью UART подключаться к роутерам и прочим девайсам с линией UART на борту. То и другое выведено на гребенки по обеим сторонам ZIF панели. I2C при необходимости придется брать с панельки.
ZIF панелька рассчитана на работу с микросхемами в DIP корпусе, но используя переходник DIP-SOP можно работать с микросхемами в SOP корпусе. Контактные площадки, которые находятся на нижней части программатора, и предназначены для припаивания либо прижимания микросхем, я использовать не рекомендую. В случае прижимания есть риск плохого контакта, в результате которого память может быть прошита или считана неправильно. В случае пайки, если это единичный случай, то в принципе ничего страшного быть не должно кроме риска перегреть и сжечь микросхему, если же паять часто и много - площадки быстро износятся.

Давайте посмотрим зачем нужен джампер возле ZIF панели. Он служит для переключения режима работы программатора, в положении, когда замкнуты контакты 1-2, MinProgrammer работает в режиме программатора SPI и I2C, когда замкнуты контакты 2-3 - в режиме USB TTL UART переходника. Положения джампера можно посмотреть на фото ниже.


Программное обеспечение. Установка и настройка
Первым делом нужно скачать драйвер для CH341A, подключить программатор в USB порт и, дождавшись когда устройство определится системой, установить скачанный драйвер. В Windows сделать это можно через диспетчер устройств, найдя в нем "неизвестное устройство" после подключения программатора. Сам driver CH341A можно легко найти в интернете, но можно скачать и тут, помимо драйвера в архиве так же программа на русском языке.
Драйвер для CH341A и программа для программатора.
Программа для программатора работает без установки, в режиме Portable, может работать и с флешки. На этом установка и основная настройка будет закончена, можно приступать к прошивке.
В операционных системах Linux поддержка микросхемы заложена на уровне ядра, так что ничего устанавливать не надо. Проверял на Debian.



Прошивка микросхем памяти
Аппаратная часть
С микросхемами в дип корпусе все просто - вставляем микросхему в ZIF панельку, следим, чтоб вставили правильной стороной и в нужную часть, на программаторе все нарисовано. Но используются DIP8 микросхемы памяти довольно редко, в основном это планарные микросхемы в корпусах SOP8 или SOIC8. И с ними все не так просто, они есть разной ширины. Стандартные 150mil SOP8 и более широкие 200mil (если быть точным и брать информацию из даташитов - то 208mil).
Давайте разберемся какая разница между 150mil и 200mil. На фото ниже показаны оба вида размеров микросхем, можно наглядно увидеть разницу.



Если брать точные размеры SOP8 корпусов обеих типов в миллиметрах, для 150mil (это размер в дюймах) ширина корпуса без выводов составит 3.9 мм, с выводами - 6 мм. Для 200mil ширина корпуса будет 5.2 мм без выводов и 7.9 мм с выводами. В обоих случаях шаг между выводами 1.27 мм.

Как я уже и говорил, программатор предусматривает прошивку микросхем в корпусах SOP и SOIC, для этого есть площадки к которым можно припаять или прижать микросхему, такое пройдет и для 150 и для 200 mil, но лучше так не делать.

Для обеих типов есть переходники, или адаптеры, с помощью которых можно прошивать микросхемы в sop8 корпусах. Ниже на фото представлены два таких переходника, DIP8-SOP8 150mil и DIP8-SOP8 200mil.



Фото сбоку, видно что одна панелька не очень качественно выполнена и гребенка немного не до конца посажена. Тем не менее, на работоспособности это не сказывается.



Вот так выглядит программатор с переходником DIP8-SOP8 200mil и установленной в него микросхемой mx25l3206e. Джампер в этом случае должен быть установлен в первое положение и замыкать контакты 1-2 на гребенке.



Программная часть
Давайте теперь перейдем к программной части и посмотрим как прошить микросхему на примере вышеупомянутой mx25l3206e. В архиве с драйверами есть файл CH341A_130.exe, в установке он не нуждается, просто запускаем его. Слева вверху выбираем "Поиск Чипа", откроется вот такое окно.



В него пишем название нужной нам микросхемы, в данном случае 25l32, программа предложит нам несколько вариантов, из них выбираем наш mx25l3206e, после чего нажимаем "Выбрать". Слева вверху заполняться поля "Тип", "Имя", а так же объем памяти.
Сверху ищем кнопку "Читать", жмем. Содержимое памяти будет считано и показано в виде HEX-кода. Если память до этого была чистая, то будут только символы F. На считывание микросхемы потребуется некоторое время, около 30-ти секунд в моем случае. Я считывал микросхему с прошивкой роутера, так что память там была заполнена.



Для того, чтоб сохранить считанный дамп памяти, просто жмем кнопку "Сохранить" вверху. Программа предложит выбрать куда сохранить и как подписать файл
Для прошивки микросхемы нужен сам файл прошивки. Слева вверху жмем "Открыть", выбираем нужный файл. После чего либо жмем "Авто", либо сначала жмем "Стирание", ждем окончания процедуры стирания, после чего жмем "Записать чип". Это важно, перед записью прошивки микросхему памяти нужно сначала очистить от старой прошивки. И даже в случае, если она новая, только купленная, лучше перестраховаться и сначала очистить её память.

По такому же алгоритму можно прошивать и другие микросхемы. Например 93с46, только нужно использовать переходник DIP8-SOP8 150mil, я шил микросхему AT93с46 с маркировкой на корпусе atmel552. Стоит только обращать внимание на шину данных, которую использует память. Так же нужно следить за тем, чтоб не вставить микросхему в панельку не той стороной, всегда обращать внимание на ключ.
Полный список поддерживаемых программатором микросхем приводить не буду, так как он очень длинный. На этом с прошивкой микросхем пока закончим и перейдем к микроконтроллерам. Я хотел было описать, как с помощью MinProgrammer прошить Attiny13, но статья и так получилась немаленькая, потому решил вынести эту информацию в отдельную статью, а тут сделать на нее ссылку.
Статья пока пишется, как закончу - на этом месте размещу ссылку.