Прошивка микросхем своими руками

Добавил пользователь Алексей Ф.
Обновлено: 04.10.2024

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

Итак, для начала несколько распространенных заблуждений:
1. Перепрошивать микросхемы памяти умеют только профессионалы, потому что программатор - это сложное устройство.
Большинство современных программаторов действительно собраны из множества радиокомпонентов и/или построены на базе микроконтроллеров. Однако вовсе не обязательно собирать программатор самостоятельно - можно купить готовый.
2. Программатор - дорогостоящее устройство. Если вы решили купить профессиональный универсальный программатор, цена его может оказаться не оправданной даже при заказе напрямую из Китая. Хотя в большистве случаев продвинутый универсальный программатор вам не понадобится, достаточно купить простой и дешевый CH341A

Обязательно ли выпаивать микросхему памяти, чтобы её "прошить"? Это зависит от устройства, в котором она расположена. Во многих случаях микросхема памяти не припаяна к плате напрямую, а находятся в специальной панельке.
Таким образом, чтобы запрограммировать микросхему памяти вам понадобиться всего лишь:

1. Посмотреть внимательно на то, где расположен ключ микросхемы памяти - это своего рода метка показывающая, как (какой стороной) установить чип.
Обычно ключ микросхемы памяти - это точка или выемка на её корпусе. По ней и определяется расположение первого вывода.
На печатной плате обычно также есть соответствующая метка - перед тем как доставать/выпаивать микросхему убедитесь, что ключи (метки) совпадают!

2. В большинстве программаторов также есть ключ-метка, показывающая, как правильно вставить микросхему в его панель! Причем для разных типов микросхем этот ключ может быть разным!
Например обратите внимание на ключи метки первого вывода микросхем программатора CH341A.

Итак, если у вас возник вопрос, как правильно вставить микросхему в программатор CH341A, посмотрите прежде всего на то, какой серии она соответствует - что написано на её корпусе!
Ключ метка микросхемы должна соответствовать ключу метки программатора (см. фото).

Обратите внимание, что в зависимости от версии/модификации программатора CH341A расположение микросхемы в панели может отличаться и быть не таким как в софте (программе) для CH341A.
Ориентируйтесь прежде всего по ключам-меткам на корпусе программатора и микросхемы!

3. Важно знать, что CH341A может работать в двух режимах, поэтому обязательно убедитесь, что перемычка (джампер) программатора CH341A стоит в положении (1-2) - режим программатора, а не (2-3)- режим USB-UART конвертера!

4. После фиксации микросхемы в панельке программатора вставить его в USB порт - напрямую или через USB удлинитель.

5. Запустить программу (софт) для CH341A. Проверить правильно ли опознан программатор и "видит" ли его программа. Если да, то в строке вы можете увидеть надпись "Device state: connected", то есть "Состояние устройства: подключено"!

Хотя в большинстве случаев программатор работает нормально и так, то есть запускать его софт с правами администратора нет необходимости!
Внимание: файл запущенный от имени администратора может сделать с вашим компьютером всё, что угодно! Никогда не запускайте программы, которым не доверяете, от имени администратора!

7. Выбор микросхемы через интерфейс программатора. Удобнее и быстрее найти её через поиск, нажав на кнопку "Chip Search".

Микросхема найдена в списке(см. рис.).

Проверить, записаны ли в неё данные, или микросхема пустая можно через пункт меню: "Operate" -> "Blank Check".

Работу с программатором микросхем памяти можно разделить на несколько видов:
- так называемый бекап (backup) - это создание и сохранение резервной копии данных. Считать и сохранить содержимое большинсва микросхем памяти программатором элементарно просто.

Для программатора CH341A в меню его программы есть пункт "Read chip" - прочитать чип (микросхему).

После того, как содержимое микросхемы памяти считано, его легко сохранить в файл, выбрав пункт "File" -> "Save" или просто нажав одновременно две клавиши Ctrl+S.

При сохранении выбрать для файла любое осмысленное имя (лучше латиницей)! Расширение дописывать не нужно!

Программа для программатора CH341A добавит его сама!

- очистка (стирание) памяти микросхемы. В меню программы CH341A выбрать пункт "Erase Сhip" - стереть чип!

- запись файла "прошивки" в микросхему памяти состоит из нескольких действий:
1. Выбор файла с "прошивкой" через пункт меню "File" -> "Open" (открыть файл).

Выбрать файл с подходящим расширением, например сохраненный ранее backup файл "прошивки"


2. Запись данных кнопкой "Write Chip".

Проверка правильности записи файла "прошивки" выполняется нажатием кнопки "Verify Chip".

Как видите, "прошить" микросхему памяти программатором совсем не сложно. Купить заказать программатор CH341A можно здесь.

Микросхемы памяти серий 24хх (EEPROM), 25хх (Serial Flash) широко используются в электронике. Такие чипы присутствуют в составе практически любой конструкции современной бытовой и промышленной аппаратуры, где есть процессоры и/или микроконтроллеры. Данный программатор имеет возможность работы с обоими типами памяти.




В комплект поставки входят сам программатор и переходная плата с двумя посадочными местами под микросхемы памяти в SOIC корпусе.


Они дублируют имеющиеся на нижней стороне платы программатора, и если на плату программатора микросхемы памяти нужно обязательно припаивать, на переходнике можно попробовать прижать микросхему прищепкой или держателем для бумаг.


Так-же на переходнике есть посадочное место для разьема PLD-8 (в комплект не входит, я впаял 2хPLS-4), предназначенного для подключения прищепки или шлейфа программирования.


Аппаратная часть (Hardware).



Особых отличий от даташита схема не имеет, разве что на блокировочных конденсаторах по питанию сильно экономили. Питание 5V от USB подается на вывод 28, на выходе 9 внутреннего стабилизатора блокировочный конденсатор.


Т.к. на выводах ввода/вывода напряжение соответствует 5V уровням, в основном это устройство на 5V, правда в инете много упоминаний и о программировании им микросхем на 3.3V без каких либо ошибок и отрицательных последствий. Выход отдельного стабилизатора AMS1117-3.3 в схеме не задействован и просто выведен на выходной ZIF разьем и на контакт боковой гребенки SPI.
В даташите указан способ сделать уровни на выходах совместимыми с 3.3V. Для этого необходимо соединить выводы 28 и 9 и подать на них 3.3V, при этом внутренний стабилизатор просто не используется. Но при этом 3.3V уровни также будут на на переходнике USB RS232, что иногда не приемлемо. Также на Ali сушествует другая версия этого программатора, скомпонованная немного по другому и выполненая на зеленом текстолите. Читал, что там на вывод 28 подается 3.3V от внешнего стабилизатора, но выводы 28 и 9 не соединены, и это нормально работает. В любом случае, уровни на переходнике USB RS232 и здесь будут 3.3V.
Если планируется программирование флешек 1.8V через основной разьем необходимо дополнительно приобрести модуль 1.8V-adapter. Бонусом является то, что переделать его для поддержки и уровней 3.3V несложно, надо лишь закоротить вход/выход стабилизатора 1.8V дополнительным джампером.


Теперь при наличии джампера адаптер работает с логическими уровнями 3.3V, при отсутствии — 1.8V.
Минус тут в том, что стоимость адаптера не намного меньше, чем самого программатора. Но если он уже есть, почему бы его не использовать по полной?

Если для программирования будет использована боковая гребенка SPI, можно поступить проще. На Ali много предложений 4-канального двунаправленного преобразователя уровней на МОП транзисторах за очень небольшие деньги.


Работа этого преобразователя подробно описана в статье "Согласование логических уровней 5В и 3.3В устройств". Схема отличается от рассмотренной в статье только номиналами резисторов (сопротивление меньше — увеличено быстродействие и энергопотребление). За счет добавления дополнительных джампера J1 и двух кремниевых диодов, можно будет программировать как 3.3V, так и 1.8V флешки.


Программная часть (Software), драйвер.


В этом случае чтение, верификация, запись чипов памяти должны осуществляться непосредственно через ZIF-панель программатора CH341A или через боковой разьем Р2 с интерфейсом SPI.


При этом программирование может производиться только через интерфейс RS232 TTL на разьеме Р1 (там же где и джампер), если целевое устройство поддерживает такой способ (встроенный загрузчик или монитор).

Программная часть (Software), программа прошивальщик.


Программа не требует установки, включает в архив драйверы для обоих режимов программирования СН341А.
Log-файл работы программы с флешкой W25Q128FW, 16Мб, 1.8V через "1.8V-adapter":


Используется программатор: CH341
Sreg: 00000000(0x00), 00000010(0x02), 01100000(0x60)

Используется программатор: CH341
Читаю флэшку…
Готово
Время выполнения: 0:02:49

Используется программатор: CH341
Стираю флэшку…
Готово
Время выполнения: 0:01:03

Используется программатор: CH341
Записываю флэшку с проверкой…
Готово
Время выполнения: 0:24:45

За все время работы с данной программой (прошивал ~5 вариантов BIOS) ни одного сбоя или ошибки.

Линуксоидам использовать стороннюю программу нет необходимости, стандартный прошивальщик Flashrom полностью поддерживает данный программатор (должен быть собран с поддержкой ключа "-ch341a").

WARNING: If the /WP or /HOLD pins are tied directly to the power supply or ground during standard SPI or Dual SPI operation, the QE bit should never be set to a 1.


Как по мне, проще сделать это на переходнике 1.8V-adapter, если задействовать его вторую незанятую половину разьема. Тем более при применении адаптера переделка на плате программатора становится бесполезной, порты у трансмиттера используются как однонаправленные.

Доработка 2. Увеличение кол-ва блокировочных конденсаторов по питанию.


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

Комментарии ( 35 )

Шикарная статья. Конденсаторы, нарисованы там же где у меня стоят. Я так понимаю, бит QE в AsProgrammer не используются и дорабатывать необязятельно. К сожалению, современная техника изобилует флешками, в которых портятся прошивки и их надо перепрошивать. Авторегистраторы, ноутбуки, мониторы, стиральные машины и многое другое. Как мне кажется, микросхемы, которые программируются напряжением 12В гораздо менее подвержены риску потерять прошивку.

>> бит QE в AsProgrammer не используются и дорабатывать необязятельно
Здесь главное, иметь возможность его сбросить, если он мешает программированию.
Если вы посмотрите на мой лог файл прошивки, увидите:
Sreg: 00000000(0x00), 00000010(0x02), 01100000(0x60)
Второй бит в регистре SREG установлен, это и есть бит QE. Вроде бы я не должен иметь возможность работы с флешкой в режиме QuadSPI, но AsProgrammer прекрасно с ней работает. Возможно я просто где то ошибся, просто особо глубоко не копал, убедился что работает и на этом успокоился. Вот если б не заработало, прошлось бы копать дальше.

Недоговорил:
>> Второй бит в регистре SREG установлен, это и есть бит QE.
Второй бит в регистре SREG2, девятый бит если считать SREG 24-разрядным регистром.

К сожалению, современная техника изобилует флешками, в которых портятся прошивки и их надо перепрошивать.

Как мне кажется, микросхемы, которые программируются напряжением 12В гораздо менее подвержены риску потерять прошивку.

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

Знаю пару способов поднятия напряжения. На переключаемых конденсаторах и с использованием индуктивности. Каким способом поднимается напряжение во флешках?

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

Шикарная статья. Пару раз сталкивался с такой проблемой в технике. взять прошивку было неоткуда и аппараты утилизировались.

Мне это нужно не для прошивки микросхем памяти, а для прямой работы с шиной I²C. Чтение информации с часов реального времени (кварцевых генераторов), регулировка контрастности, насыщенности и цветового баланса мониторов, чтение информации с датчиков и диагностики оборудования.

Как к нему обращаться?

Подсказка, из комплекта драйверов в каталог AsProgrammer перетащена CH341DLL.DLL. В сырцах на GitNub есть заголовочный файл к ней…

Пробежал статью по диагонали, очень хорошая плата для ваших целей. Ведь сам чип поддерживает не два режима, как в данном программаторе, а три, и DeviceID у него тоже три.
Наверное заголовочник CH341DLL при желании можно адаптировать к любому обьектно-ориентированному языку, Tifa вот подключил к Object Pascal.

Вы софт запускать не пробовали? Возможно у вас пойдет и русифицированный.
У меня русский софт не пошел, возможно из-за того, что пока нет в наличии какой либо платы с чипом CH341A и драйвера под него не установлены.

Честно говоря не только не пробовал, но и не собираюсь этого делать. Все актуальные для меня вопросы я решил этим программатором.

Данная схема USB программатора, построенного на микроконтроллере Atmega8, довольно проста в изготовлении, ее можно собрать своими руками буквально за один вечер.

Фактически это AVR-910 популярной схемы Prottoss-a. USB программатор надежен и имеет в своем арсенале функцию, позволяющая восстанавливать микроконтроллеры с неверно установленными фьюзами.

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

Печатную плату можно сделать своими руками по известной технологии ЛУТ. Поэтому на описании изготовления платы останавливаться не будем, а перейдем сразу к описанию.


Теперь необходимо занести программу в память Atmega8. В качестве программного обеспечения можно применить Uniprof или Code Vision AVR. Перед программированием необходимо выставить следующие фьюзы (для Uniprof):

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

Поговорим о программном обеспечении которое необходимо для работы с данным программатором. Он поддерживает такие оболочки как: AVR Prog, AVR Studio, ChipBlasterAVR и, конечно же, Code Vision AVR.

Достаточно удобной программой, я считаю, является Code Vision AVR, пример работы, которой подробно написано здесь.

Для справки, приведем типовую распиновку USB:

Список необходимых деталей:

  • Atmega8 — 1 шт.
  • Кварц 12МГц — 1 шт.
  • Диод 1N4007 – 2 шт.
  • Светодиод — 3 шт.
  • Резисторы: 68 Ом — 2 шт., 330 Ом — 8 шт., 1,5 Ом — 1 шт., 100 Ом -1 шт., 1,5 кОм -1 шт., 10 кОм -1 шт., 1 мОм -1 шт.
  • Конденсаторы: 0,1мк — 3 шт., 22мк х 10В — 1 шт., 22p — 2 шт.

Похожие записи:


редактор

64 комментария

Обработал протокол USB на обычтном AVR через внешние прерывания?! Браво!

На программе Code Vision AVR какие фюзи поставит

Здравствует админ я собрал программатор и у меня в запасе есть ltp программатор чтобы прошить мк провода от ltp на собранную программатор под соединять или просто к мк надо соединять

LPT программатор подключите к ISP разъему. Не забудьте переключатель SA2 перевести в положение МОД

Можно изменить резисторы R3, R6, R9-R15 330Ом на другую?
И конденсаторов С1, С4, С6 0,1Мкф?

Доброго времени суток! Автор, спасибо за статью, программатор спаял — работает штатно. К делу подошел с размахом и сделал сразу три платы: программатор, плату переходников и еще одну. Вопрос, для чего третья плата? И если, есть, принципиальная схема.

Извиняюсь за драйвера не ту папку глянул. Всё равно не обновляются.

Добрый вечер.
Объясните почему после прошивки атмеги 8 и установки Fuse как показано на фотке, программатор перестает видеть контроллер вообще, все проги выдают ошибку, что не могут связаться с контроллером, что я сделал не так.

Все дело в том, что после прошивки, микроконтроллер начинает работать от внешнего задающего генератора (кварца). Подключите кварц (можно на 8МГц) на выводы 9 и 10.

Спасибо, заработало)) Подскажите с какими программами avr910 работает?

Я использую Khazama AVR Programmer

В Usbasp (китайский) применен кварц 12 мгц, можно его заменить на кварц 8мгц?

Здравствуйте!
В программаторе ATmega8A-PU, будет работать?
Программатор поддерживает ATmega328P-PU ?

Подскажите, как в Proteus поставить ISP.

спасибо большой уважаемый админ

день добрый ребят размер печатной платы какой

ширина 80мм, высота 55мм

Добрый вечер, спасибо за статью.
Подскажите можно ли в место Atmega8
использовать Atmega328p-pu

можно ли вместо LTP программатора прошить COM-программатором Громова?

Можно ли им прошить Pic 18f 2685?

Подскажите, в чем может быть проблема, все сделал правильно, перепроверил раз 10. При подключении 3 раза мигают лампочки чтения и записи и на компе определяется как неизвестное устройство с ошибкой дескриптора. Кстати, я так понял нужна Атмега8 16pu, у меня Atmega8A-pu, это ни на что не влияет?

Скажите люди,зачем в списке деталей присутствует резистор 1.5 Ом,если в схеме его нет? И Рез. 330 Ом там 9 а не 8 судя по схеме.

Вроде все на месте:
Резистор 330 Ом (R3,R5,R8,R9,R11,R12,R13,R14,R15).
Резистор на плате указан 1,5к (R4).

В списке деталей и 1,5 Ом, и 1,5кОм. Как раз 1,5 Ом на схеме нет, а вот 330 Ом на схеме 9 штук, а в списке 8. Детали покупал по списку — как раз 1,5 Ом лишний, а 330 не хватило (

В архиве есть схемка переходника,на ней есть кондеры и кварц. Но какие?? Кто подскажет?

Кварц поставьте на 8 Мгц, конденсаторы 15…22 пФ (хотя можно и без них)

Добрый вечер.
Объясните почему после прошивки атмеги 8 и установки Fuse как показано на фотке, программатор перестает видеть контроллер вообще, все проги выдают ошибку, что не могут связаться с контроллером, что я сделал не так.

А какие меги он может шить, конкретного списка нет?Буду очень признателен.

Какой тип программатора выбирать в Codevision, com порт порт смотреть в системе?

ПРОШИВАЙТЕ ПРОШИВКУ АВРДОПЕР ДЛЯ АВР 910, (перезагруска)

собрал данный программатор на SMD компонентах(ток микруха в DIP-e),как и полагается фьюзы в первой микрухе не так выставил-в итоге залочил ее,вторую прошил корректно,ничего не греется,светодиоды горят только в момент прошивки,на LED-меандр 1MHz…теперь еще один программатор в коллекции….в общем все мучения того стоили.
Рекомендую к повторению.

подскажите новичку!! тока без умничания) куда подключается разъем ISP? и зачем его подключили к простому LPT-программатору.

В современных электронных схемах все чаще и чаще применяются микроконтроллеры. Да что там говорить, если сегодня не найти даже обыкновенную елочную гирлянду без микроконтроллера внутри - он задает различные программы иллюминации.

Я впервые столкнулся с микроконтроллерами, когда собирал свой первый импульсный металлоискатель Клон. Вот тогда-то и выяснилось, что контроллер без прошивки - это просто кусок пластмассы с ножками.

А чтобы залить нужную прошивку в АТМЕГу, никак не обойтись без программатора. Далее мы рассмотрим две самые простые и проверенные временем схемы программаторов.

Схема первая

Программатор для ATMEGA8

С помощью этого программатора можно прошивать практически любой AVR-контроллер от ATMEL, надо только свериться с распиновкой микросхемы.

СОМ-разъем на схеме - это "мама".

Простейший программатор для ATmega8

На всякий случай привожу разводку печатной платы для атмеги8 (скачать), хотя такую примитивную схему проще нарисовать от руки. Плату перед печатью нужно отзеркалить.

Файл печатной платы открывать с помощью популярной программы Sprint Layout (если она у вас еще не установлена, то качайте 5-ую версию или лучше сразу 6-ую).

Детали для сборки AVR-программатора

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

Вместо КТ315 я воткнул SMD-транзистор BFR93A, которые у меня остались после сборки микромощных радиомикрофонов.

Программатор для АТмега8

А вот весь программатор в сборе:

Питание (+5В) я решил брать с USB-порта.

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

Если же ваша микросхема б/у-шная, то без внешнего кварца она может и не запуститься. Тогда лучше ставьте кварц на 4 МГц, а конденсаторы лучше на 33 пФ.

Как видите, я кварц с конденсаторами не ставил, но на всякий случай предусмотрел под них места на плате.

Заливать прошивку лучше всего с помощью программы PonyProg (скачать).

Прошивка с помощью PonyProg

Заходим в меню Setup -> Calibration -> Yes. Должно появиться окошко "Calibration OK".

Далее Setup -> Interface Setup. Выбираем "SI Prog API" и нужный порт, внизу нажимаем "Probe", должно появиться окно "Test OK". Далее выбираем микроконтроллер "Device -> AVR micro ATmega8".

Теперь втыкаем микроконтроллер в панельку программатора, и подаем питание 5 вольт (можно, например, от отдельного источника питания или порта ЮСБ). Затем жмем Command -> Read All.

После чтения появляется окно "Read successful". Если все ок, то выбираем файл с нужной прошивкой для заливки: File -> Open Device File. Жмем "Открыть".

Теперь жмем Command -> Security and Configuration Bits и выставляем фьюзы, какие нужно.

Тщательно все проверяем и жмем "OK". Далее нажимаем Command -> Write All -> Yes. Идет прошивка и проверка. По окончании проверки появляется окно "Write Successful".

Вот и все, МК прошит и готов к использованию!

Имейте в виду, что при прошивке с помощью других программ (не PonyProg) биты могут быть инверсными! Тогда их надо выставлять с точностью до наоборот. Определить это можно, считав фьюзы и посмотрев на галку "SPIEN".

Схема вторая

Программатор для Клона

Еще одна версия программатора, с помощью которого можно залить прошивку в микроконтроллер АТМЕГа (так называемый программатор Геннадия Громова). Схема состоит всего из 10 детатей:Диоды можно взять любые импульсные (например, наши КД510, КД522). Разъем - "мама". Питание на МК (+5В) нужно подавать отдельно, например, от того же компьютера с выхода USB.

Собранная плата программатора для АТмега8

Все это можно собрать навесным монтажом прямо на разъеме, но если вы крутой паяльник и знаете, что такое smd-монтаж, то можете сделать красиво:

Алгоритм прошивки с помощью программатора Громова

Программатор с установленной микросхемой подключаем к СОМ-порту компьютера, затем запускаем Uniprof, затем подаем питание на микроконтроллер. И первым делом проверяем, читаются ли фьюз-биты.

Если все ок, выбираем файл с нужной прошивкой и жмем запись.

Будьте предельно внимательны и осторожны, потому что если глюканет при записи фьюзов, то МК либо на выброс, либо паять схему доктора (а она сложная). Если поменяете бит SPIEN на противоположный - результат будет тот же (к доктору).

Читайте также: