Ch341a программатор как пользоваться
Перейти к содержимому

Ch341a программатор как пользоваться

Программатор микросхем PSoC (версия USB)
из дешевой китайской платы.

Плату «CH341A Mini Programmer» можно купить на AliExpress буквально за пару долларов и
приспособить для программирования микросхем серий CY8C21xxx, CY8C24xxx, CY8C27xxx и CY8C29xxx.
Режим «Power-On Reset» пока не поддержан, так что работать с 8-выводными микросхемами не получится.
Программу, работающую с этим железом, можно взять здесь:
Download PSoC Programmer CH341A v1.18 (zip-архив 218 кБ).

Основу программатора составляет плата «CH341A Mini Programmer», которую можно купить на AliExpress за пару долларов. Плата имеет разные модификации (моя отмаркирована как «CH341A MinProgrammer»), существуют также другие платы, выполненные на основе микросхемы CH341A (или CH341).

Эта плата – настоящий подарок гикам и ремонтникам, поскольку позволяет не только читать и переписывать содержимое EEPROM (памяти, используемой в телевизорах и прочей электронной технике), но и получить в свое распоряжение арсенал таких распространенных интерфейсов, как UART, SPI, I2C, EPP parallel и т.д. Энтузиасты приспособили эту плату и для программирования микроконтроллеров, среди которых PSoC – увы! – не значится.

Данный проект восполняет это упущение, давая возможность работать с чипами серий CY8C21xxx, CY8C24xxx, CY8C27xxx и CY8C29xxx. Две первые серии сюда вписаны чисто гипотетически, т.к. возможности проверить работу с ними у меня не было. Программа тестировалась только на микросхемах CY8C27443 и CY8C29466, так что я буду рад любым отзывам. Адрес электронной почты есть на головной странице сайта (antiradio»’narod.ru, тему начинайте словом ANTIRADIO – чтобы обойти спам-фильтр). О программировании CY8C21534 уже есть положительный отзыв. .

Схемы двух версий программатора показаны ниже. Первая предназначена для программирования микросхем в панельке, вторая – в составе устройства. Первый программатор можно выполнить в виде «шилда» (дочерней платы), устанавливаемого на плату «CH341A Mini Programmer», второй – в виде кабеля, соединяющего «CH341A Mini Programmer» с целевым устройством. В обоих случаях добавляются всего два резистора, их назначение – «смягчить» возможные конфликты напряжений. Длина проводов (очень важно!) не должна превышать 10 см, иначе возможны сбои при обмене данными.

Ниже раскрыта часть схемы «CH341A Mini Programmer», которая используется в нашем случае. Это – для тех, кто пожелает спаять программатор с нуля. Схема взята из Интернета и в железе не проверялась. Однако, она может оказаться полезной при сравнении со схемами других плат, где стоит чип CH341A – на предмет возможности их использования. Стабилизатор +3.3 В (чье напряжение выводится на ножку 6 разъема J1) условно не показан.

Для программирования микросхем в устройстве линии P1[0] и P1[1] у PSoC должны быть незадействованы (допустима очень слабая нагрузка, например – подключенный кварц). Кроме того следует корректно выставить переключатель напряжений – если устройство имеет собственный источник питания, переключатель должен быть в выключенном положении! Подача напряжения +5В вместо +3.3В для PSoC не критична, но может оказаться недопустимой для прочих узлов. Следует помнить и об ограниченных токовых возможностях USB порта компьютера, равно, как и о возможностях стабилизатора +3.3В платы «CH341A Mini Programmer». Полезно также знать, что выводы микросхемы CH341A выдают не пяти, а 3-х вольтовые логические уровни (которые, тем не менее, адекватно воспринимаются микросхемой PSoC при ее 5-вольтовом питании), и выдерживают прием сигналов 5-вольтовой логики.

Работа с программой «PSoC Programmer CH341A»

При создании этой программы ставилась цель максимально повторить интерфейс ее предшественника – приложения «CyP», написанного Ajithalayam из Индии (которое работает с «простейшим Программатором микросхем PSoC»). Не скажу, что у него все сделано достаточно удобно, зато процесс перехода потребует минимум привыкания.

После старта программа сама определит оборудование, подключенное в USB порту компьютера, а также тип микросхемы PSoC, с которой будет работать. Потребуется только предварительно установить драйвер, который можно взять из прилагаемого архива. Запрос на установку драйвера возникнет при первом подключении платы «CH341A Mini Programmer» (к слову, существует и другой драйвер, который без труда находится в Интернете, превращающий плату «CH341A Mini Programmer» в адаптер USB-UART. Для этого случая перемычка, соединяющие контакты 1 и 2 на плате, должна быть снята или переставлена в положение 2-3). Признак установки драйвера – наличие файла CH341DLL.DLL в системной папке WINDOWS/system32/

Если программируемое устройство подключалось «нагорячую» (либо имеет собственный источник питания, который выключался), тип микросхемы определится только при выполнении какой-либо из процедур. Чтобы заранее знать, с чем предстоит иметь дело, удобно воспользоваться кнопкой «ChkSum» панели «Target Device» или контекстным меню «Check Again» окна «Device Silicon ID». После любой процедуры программируемое устройство переводится в состояние сброса (останова), а сигнальные линии программатора – в высокоимпедансное состояние. Чтобы стартовать устройство, требуется снять галочку «XRes».

В общем случае последовательность действий будет такая:
«Load» (загрузка файла) –> «Program» (программирование) –> «ChkSum» (быстрая проверка правильности) –> «Secure» (программирование битов защиты).

Команда «ChkSum» может быть заменена (или дополнена) командой «Verify» (сверкой содержимого), а при частых загрузках одного и того же файла, неизбежных при отладке кода, вместо команды «Load» удобнее использовать «Reload».

Содержимое микросхемы читается кнопкой «Read». Если в процессе чтения (или верификации) встретится защищенный блок, операция прервется, а в окне статуса появится сообщение. То же произойдет и при сбое (редко, но случается), так что если вы уверены в отсутствии защиты, просто повторите операцию.

Все операция проводятся с буфером, который помимо загружаемого кода может содержать массив битов защиты. Массив битов защиты содержится, как правило, в файлах формата *.hex (приспособленный фирмой Cypress «Intel Hex формат»). Биты защиты могут быть загружены и с помощью файлов *.txt. Краткая иформация о поддерживаемых форматах приведена в конце статьи. Команды «Load» и «Save» позволяют конвертировать файлы из одного формата в другой (с некоторыми оговорками).

Файлы *.hex и *.rom, создаваемые средой разработи PSoC Designer, содержат один и тот же исполняемый код, однако первые содержат образ ВСЕЙ программируемой памяти, включая неиспользуемый конечный участок (который забивается кодом 0x30 – командой «HALT»), а вторые – код в минимальном объеме, предполагая, что оставшаяся часть памяти заполнится нулями при стирании. В связи с этим программирование с использованием файлов *.rom происходит быстрее.

Команда «Erase» стирает сразу всю память, включая биты защиты, и особо не нужна, т.к. соответствующая процедура вызывается каждый раз при нажатии на кнопку «Program». Аналогично – команда «Clear» заполняет буфер нулями (в объеме последнего загруженного в него кода). С помощью контекстного меню кнопки «Clear» можно заполнить буфер не нулями, а выбранным кодом.

Кнопка «Settings» вызывает дополнительные настройки программы. Их не особо много – способ входа в режим программирования (пока активен только один) и выбор напряжения. Заметьте, что программа не меняет никакие напряжения в устройстве, а только сообщает внутреннему автомату PSoC текущее значение, чтобы тот выбрал оптимальный режим. В чем заключается этот «оптимальный режим» – из документации не ясно. Можно было бы предположить, что меняются длительности импульсов программирования/стирания (что в итоге должно увеличить «живучесть» микросхемы – гарантированное количество перепрограммирований), однако никаких изменений продолжительности процедур замечено не было. Возможно, меняется порог срабатывания защиты по снижению напряжения питания (чтобы автомат уверенно отработал ситуацию и не допустил, когда данные некорректно записались, а сообщения об ошибке не было), но это только предположение. В документации отмечается лишь влияние температуры на «живучесть».

При вызове настроек также отображается состояние линий, с помощью которых осуществляется программирование – P1[0], P1[1] и XRes. Сделано это чисто ради контроля и возможности наблюдать, как запущенная в PSoC программа меняет состояние первых двух линий (пустому квадратику соответствует уровень логического нуля). Теперь для написания учебных программ типа «поморгать светодиодом» пайка становится не нужна, а отладка устройств, не содержащих элементов индикации, в некоторых случаях может упроститься. Помните только, что опрос линий осуществляется 10 раз в секунду, а значит быстроменяющиеся сигналы будут отображаться некорректно.

В качестве тестовой программы, ежесекундно перебрасывающей состояние этих линий на противоположное, может использоваться вот этот код (zip-архив 44 кБ). Там же находится и папка с проектом – хороший вариант начать изучение PSoC. Линия P1[0] для разнообразия управляется аппаратно, P1[1] – программно. Код написан для CY8C27xxx, но будет запускаться и на CY8C29xxx.

Напоследок отмечу одну особенность, которая присуща и другим программаторам. Когда память PSoC защищена от чтения, то единственный способ сравнить два образа – воспользоваться командой «ChkSum». Но при этом в буфер для сравнения могут быть загружены файлы как *.rom, так и *.hex, которые отличаются конечным участком (см. выше). Поэтому при одинаковом исполняемом коде контрольные суммы могут различаться! Аналогичная ситуация возникнет и тогда, когда исполняемая программа модифицирует память (например, пишет в нее данные).

Приложение «PSoC Programmer CH341A» работает в среде Windows (тестировалась Windows XP) и не требует инсталляции – достаточно просто запустить исполняемый файл. Ограничений на использование приложения не даю, равно как и никаких гарантий – все на ваш страх и риск.

Запись образа объемом 32 кБ у микросхемы CY8C29466 занимает около 9 секунд, чтение – около 4.

Форматы файлов

Текстовый файл – перичисляются байты в 16-ричном формате, начиная с нулевого адреса (сами адреса не указываются). Префикс «0x» (как принято в языках программирования) – не ставится. Разделителем является пробел, в строке задаются 8 байтов. Всего идет столько байтов, сколько занимает код, т.е. может быть меньше, чем объем памяти микросхемы.

Программа «PSoC Programmer CH341A» понимает строки из любого количества байтов и такие разделители, как «запятая», «точка с запятой» и «табуляция». Символы, отличные от 16-ричных цифр, игнорируются (выводится предупреждение). При сохранении файлы приводятся к общепринятому виду.

Формат «Intel Hex», немного дополненый фирмой Cypress в части способа описание битов защиты и контрольной суммы. Текстовый файл сложен для восприятия. Редактировать можно, но если не соблюсти некоторые правила, то не будет восприниматься (т.к. усиленный контроль целостности). Детально расписан в документе AN2026b – «In-System Serial Programming (ISSP™) Protocol».

Программа «PSoC Programmer CH341A» понимает строки из любого количества байтов. Если строка не начинается с символа «двоеточие» (как принято в файлах такого формата), то она воспринимается как комментарий. При сохранении файл приводится к общепринятому виду.

Бинарный файл, данные идут с нулевого адреса. Никакие комментарии не позволены, т.к. все считается кодом. Редактируется только специальными редакторами.

Текстовый файл битов защиты. Состоит из массива букв «U», «F», «R» или «W», разделенных пробелами (по 16 букв в строке). Каждая буква соответствует блоку памяти 64 байт и кодирует уровень защиты «Unprotected», «Factory Field», «Read protected» или «Write (Full) protected». Самая первая буква в массиве соответствует блоку с номером 0. Все, что находится справа после символа «точка с запятой», считается комментарием. Буква может быть как заглавной, так и строчной.

Прошивка Flash телевизора DNS через программатор CH341a

В телевизорах DNS или DEXP стоят не самые надежные микросхемы памяти, которые очень часто дают сбой и при включение телевизор зависает, решение этой проблемы прошивка, конечно же лучше всего не прошивать старую микросхему, а заменить ее на новую и желательно «пофирмовей»

снимок экрана 2019-03-28 в 20.png

В рамках данного ремонта мы менять микросхему не будем, а покажем как внутрисхемно прошить микросхему памяти 25Q64, они отличаются от привычной нам 24с64 следующими параметрами

ТИП ПАМЯТИ FLASH EEPROM
ОБЪЕМ ПАМЯТИ 64mbit 64kbit
МАКСИМАЛЬНАЯ ТАКТОВАЯ ЧАСТОТА(СКОРОСТЬ) 80мГц 400кГц
ИНТЕРФЕЙС SPI I2C

снимок экрана 2019-03-28.png

Ключевое отличие на которое я бы хотел заострить Ваше внимание — это различие интерфейсов или протоколов обмена информацией, о которых мы говорили в курсе по прошивки стиральных машин тут https://sw19.ru/courses/12 , но наш программматор поддерживает и SPI и I2C, но естественно есть один момент на который стоит обратить внимание

Если у Вас более менее современная программа то она Вам подскажет, но стоит обратить на это особое внимание.

Внутрисхемное программирование прищепкой

снимок экрана 2019-03-28 в 20.56.25.png

Прищепка очень хорошо подходит для ленивой прошивки, но это не всегда работает корректно из-за особенности схемотехники платы. Так же стоит убедится что первый контакт(ножка) микросхемы приходит в нужное гнездо на программаторе, так как очень часто прищепки приходят в перевернутом виде и можно долго пытаться считать или записать прошивку такой неправильно прищепкой

В самой процедуре ничего сложного нет, считали, сделали резервный бекап, прошили, проверили

Программатор CH341A

Здравствуйте. Поднакопилось вот у меня техники с проблемой с программным обеспечением. Где то прошивка слетела или криво стала и в итоге прибор вполне рабочий превращается в металлолом. И как раз в последнем эксперименте я пытался подобрать прошивку для скалера и залил не то. В итоге скалер перестал принимать флешку, та и вообще перестал пускаться. Хотел уже выбросить, но потом вспомнил, что можно прошить память заново. Что я нашел наверно будет для многих актуально

В общем быстренько полез в интернет изучать этот вопрос, так как с прошивкой дел не имел прежде. Храниться прошивка не в процессоре, как я думал, а в отдельной микросхеме памяти называемой FLESH или EEPROM. Шьется такая память через Com или параллельный порт на ПК, всего 10 деталюх и прошивка на месте. Но засада в том что у меня ноут нового поколения и такого порта не имеет, но есть микросхемы переходник USB-LPT типа CH341A. Схемку я нашел и полез на АлиЭкспресс в поисках цены на нее, но Али предложил кое что получше. Готовый программатор с удобной панелькой под дип микросхемы с переходником на SOT-8. Но поскольку я ленивый и выпаивать микры туда сюда нет желания, нашел вариант комплектации с прищепкой, для прошивки SOT-8 прям на плате. Недолго думая заказал себе комплект всего за 340 рублей, ссылку для вас добавлю в конце статьи

Все пришло всего за две недели, честно я удивился такой скорости. Все хорошо упаковано, сам модуль в антистатическом пакете. Вот как выглядит программатор на CH341A
Программатор CH341AПодключил программатор к ноутбуку, загорелся красный светодиод и винда заругалась что устройство неизвестное, но это не беда. Захожу в Диспетчер оборудования и вижу Неизвестное устройство (два других это отсутствует драйвер на USB3.0).
Установка драйвера для программатора CH341AВыбираю свойства устройства и нажимаю в новом окне обновить драйвер и указываю папку с нужными файлами. Скачал два разных драйвера, ссылка будет внизу статьи. Оказывается эта микра может работать и как COM порт и как LPT, но мне нужен именно LPT или параллельный .

После установки драйвера устройство определилось верноОбновленный драйвер CH341A как параллельный LPT порт
Пора и приступить к шитью �� Собираю комплект программатора с прищепкой
Программатор CH341A
Подключаю прищепку к микросхеме, слежу что бы первая ножка микры обязательно совпала с первой ножкой на панельке. Это удобно сделать если первая ножка будет подсоединяться по красному проводочку, на панельке её можно определить по рисунку ключа на самом программаторе. Так же обязательно нужно проследить, что бы разъем стоял именно на своем месте, ведь там панельки раздельные для 25 и 24 серии
Теперь подключаю программатор к USB и запускаю программное обеспечение.
Настройка программы для прошивкиПервым делом нажимаю Открыть и выбираю нужную прошивку. Следом нажимаю кнопку для Поиска чипа и ищу свой W25Q32FV. И теперь вверху проги нажимаю АВТО. Процесс пошел и на программаторе загорается желтый светодиод
Прошивка памяти 25 серии через программатор CH341A
Прошивка скалера через программатор CH341A
В этот момент чип очищается, записывается новой прошивкой, проверяется и появляется сообщение, что прошивка и тут и там совпадает, но я затупил сфоткать это и поэтому покажу все в следующей прошивке.

Прошью попробую память 24 серии в каком то древнем тюнере, прошивка так же из просторов интернета. Все как в прошлой прошивке, только переставил разъем в панельке на 24 серию.
Прошивка тюнера программатором CH341A
Прошивка памяти 24 серии программатором CH341A
В программе все так же настроил как и в прошлый раз, только вот сделал дамп предыдущей прошивки, это можно сделать кнопкой Читать.
Результат работы видно в низу окна.
Ну в принципе с прошивками все. Все работает, прибор стоит своих денег.
И чуть не забыл ссылки: ссылка на программатор CH341A и ссылка на драйвера и программу

Хочу добавить что этот программатор многофункционален и работает, как вычитал на форумах, конвертером в интерфейсы: UART, EPP, I2C, SPI, но это другая история. Поэтому не пропустите обновления блога и подписывайтесь на обновления Контакте или Одноклассниках

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *