Товары из Китая

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino


Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

EEPROM 25 серии в наше время не редкость. Программаторы на основе CH341 для них — тоже, и стоят недорого, но не всегда оказываются под руками в нужный момент.

Что делать, когда прошить микросхему надо срочно, а нечем?

Можно собрать программатор под LPT порт:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

Он прост и предельно дешёв, вот только LPT в современном компьютере встречается уже примерно никогда.

Если под руками есть старый ПК с таким портом — повезло, иначе придётся искать другие варианты.

Например, можно воспользоваться Arduino.

Обычно для такого применения рекомендуют использовать довольно редкую Arduino Micro Pro на основе МК ATMega32U4, но можно обойтись и намного более дешёвой китайской Arduino Nano V3:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

Так как память 25 серии рассчитана на питание напряжением 3,3В, а МК в Arduino питается напряжением 5 В, то плату придётся немного доработать, чтобы не сжечь микросхему памяти:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

Перевернём плату Arduino нижней стороной вверх:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

Диод Шоттки, обозначенный на принципиальной схеме D1, нужно аккуратно отпаять и заменить на стабилизатор напряжения 3,3В типа 1117 или аналогичный:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

Стабилизатор напряжения можно добыть из негодной ЖК матрицы от настольного монитора, вырезав его оттуда вместе с куском платы и обвязкой из конденсаторов. Только предварительно проверьте его выходное напряжение — иногда они в матрицах попадаются на 1,8В или 2,5В — нам такое не пойдёт. Матрица от ноутбука тоже не подойдёт — она вся питается напряжением 3,3В и дополнительного внутреннего стабилизатора этого напряжения в них нет.

Припаиваем провода к контактам D10, D11, D12, D13, 5V, GND платы Arduino, дополнительный стабилизатор изолируем и прикрепляем к ней каптоновым скотчем:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino:

Интерфейс SPI довольно скоростной, поэтому провода длиннее 5-7 см делать не надо — меньше будет проблем с помехами.

На этом аппаратная часть программатора готова — пора переходить к программной.

Создаём на жёстком диске папку, в которую кидаем прошивку программатора, распаковываем программу XLoader, прошивку целевого устройства и программу FlashROM.

Запускаем XLoader, указываем в нем тип используемого в Arduino МК, порт, к которому она подключена и файл «frser-duino.hex»:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

Нажимаем кнопку Upload и, если все в порядке, в нижней строке будет сообщение «1368 bytes uploaded». Загрузчик Arduino при этом затирается и если захотите вернуть плату в исходноесостояние — его надо будет восстанавливать.

Для проверки программатора сначала нужно измерить напряжение на выводах D10 и D11, оно должно равняться напряжению питания(3,3В).

Затем запускаем командную строку и вводим следующее:

c:rcvmingw32-w64-flashrom-r1781.exe --programmer serprog:dev=COM3:115200

Если все работает нормально, должен получиться ответ:

flashrom v0.9.7-r1781 on Windows 6.1 (x86)

flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OK.
serprog: Programmer name is "frser-duino"
Found Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI) on serprog.
===
This flash part has status NOT WORKING for operations: PROBE READ ERASE WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom@flashrom.org if any of the above operations
work correctly for you with this flash part. Please include the flashrom
output with the additional -V option for all operations you tested (-V, -Vr,
-VE, -Vw), and mention which mainboard or programmer you tested.
Please mention your board in the subject line. Thanks for your help!
No operations were specified.

Наличие строки «serprog: Programmer name is „frser-duino“ свидетельствует о том, что программатор воспринимается программой и можно отключить его от USB и подключать его к целевому устройству.

Если прошиваемая микросхема припаяна напрямую к плате, то провода от программатора можно паять напрямую к её выводам согласно рисунку:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

Если она съёмная, то к проводам для программатора можно припаять панельку:

Внутрисхемный программатор 3.3V SPI EEPROM из Arduino

При этом надо дополнительно соединить на панельке перемычками выводы 3,7 и 8.

Подключив программатор к микросхеме и USB, набираем в командной строке:

c:rcvmingw32-w64-flashrom-r1781.exe --programmer serprog:dev=COM3:115200 -c MX25L1605 -w c:rcvfirmware.hex

Наименование микросхемы памяти надо указывать точно, иначе программа откажется её прошивать.

Результат работы должен быть таким:

flashrom v0.9.7-r1781 on Windows 6.1 (x86)

flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OK.
serprog: Programmer name is "frser-duino"
Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on serprog.
Reading old flash chip contents... done.
Erasing and writing flash chip...
Warning: Chip content is identical to the requested image.
Erase/write done.

После этого можно отключать питание и отпаивать провода — процедура прошивки успешно завершена.


СМОТРИ ТАКЖЕ

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

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