Программатор для 25q32 своими руками

Добавил пользователь Владимир З.
Обновлено: 05.10.2024

В первой части статьи я предоставил схему, прошивку программатора, софт и кратко описал принцип их работы. На тот момент программатор имел не очень впечатляющий функционал и перечень программируемых устройств, возможно поэтому, не вызвал особого интереса. Но проект ещё развивается и я стараюсь добавлять новый функционал, исправлять ошибки, вносить улучшения. Все изменения вносятся исключительно программным путём и добавлением новых съёмных переходников. В этой части статьи я опишу, поддержку каких новых микросхем я добавил, как с ними работать и как их подключать к программатору. В текущей версии софта добавлена поддержка SPI Flash 25-й серии и микроконтроллеров AVR в режиме высоковольтного программирования.

Начну, пожалуй, с более сложного - AVR. Все, кто работал с этими микроконтроллерами, наверняка знают, что такое Fuse биты, и что бывает, если их запрограммировать неверно - можно получить практически окирпиченную микросхему, которая в лучшем случае перестанет программироваться обычным ISP-программатором. Для исправления данной проблемы (и не только) у микроконтроллеров AVR существует ещё один режим программирования - высоковольтный (HVP - параллельный и последовательный). В одной из статей в сети автор называл HVP - режимом Бога. В этом режиме можно практически всё: читать/стирать любые Fuse биты, читать/писать калибровку RC-генератора, читать/писать/стирать Flash,EEPROM независимо от установленных Fuse битов.

Протокол параллельного программирования у AVR стандартизированн практически для всех моделей AVR8, но есть исключения. Например: основная масса микроконтроллёров имеет восьмибитную шину данных и девять управляющих сигналов. У микроконтроллеров Attiny2313 и подобным в 20-выводном корпусе несколько управляющих сигналов объединены (XA1 и BS2, BS1 и PAGEL). Микроконтроллер Atmega2560 и другие с 256Кб памяти имеют трёхбитную адресацию Flash, в отличие от двухбитной в остальных моделях. Микроконтроллеры Attiny в восьминогих, шестнадцатиногих корпусах вообще программируются по последовательному высоковольтному протоколу. Всё это разнообразие я попытался учесть при разработке ПО и микропрограммы программатора. И, естественно, опробовал на нескольких моделях микроконтроллеров.

Интерфейс ПО претерпел небольшие изменения. Для работы с новыми устройствами были добавлены новые вкладки:

В случае работы с AVR - одноимённая вкладка. Как видите, на этой вкладке есть своё окошко выбора модели AVR, кнопки работы с памятью, окна просмотра данных Flash и EEPROM, отдельные кнопки для загрузки прошивки и EEPROM. При этом все кнопки в правой боковой части окна также активны, и их нежелательно нажимать во время работы с AVR. Возможно, позже перенесу их на первую вкладку, чтобы не мозолили глаза.

Хотя микроконтроллеры AVR работают при напряжении до 5 Вольт, я советую их программировать на 3,3 Вольтах, так как при высоковольтном программировании они могут нагреваться при операциях чтения/записи Flash (у меня грелась Atmega8 и Attiny в восьминогих корпусах). А на пониженном напряжении питания нагрев незначительный, а функциональность не изменяется. Для этого необходимо переставить джампер S1 ("Switch V_Prog") на плате программатора в положение 3v3.

Все микроконтроллеры AVR подключаются к основному 32-пиновому разъёму программатора. Схемы подключения разных видов МК на представленном ниже изображении:

Все сигнальные линии микроконтроллеров можно найти в Datasheet на соответствующую модель в разделе "Memory programming". Как видно из схемы, микроконтроллеры Atmega/Attiny с полным набором сигналов управления подключены к питанию (VCC) напрямую, а остальные - через ключ на pnp транзисторе. Этот ключ используется для предотвращения нагрева МК во время простоя, а также для правильного алгоритма входа в режим программирования. Но, думаю, без него тоже должно работать (я не пробовал). Мои платы переходников для некоторых МК в DIP корпусах в формате SprintLayout будут в папке с программой. Там же будет и данная схема.

Список моделей AVR изначально в программе небольшой. Но его можно увеличивать самостоятельно. Для этого в корневом каталоге с программатором есть папка "Devices". В ней находятся xml файлы с соответствующими названиями. Открываем файл с названием "AVR.xml" с помощью обычного блокнота и видим там список однотипных структур:

name model = "attiny85" >

page_size >32 page_size >

page_count >128 page_count >

ee_size >512 ee_size >

ee_psize >4 ee_psize >

dev_type >3 dev_type >

l_fuse >63 l_fuse >

h_fuse >DF h_fuse >

e_fuse >FF e_fuse >

l_bits >FF l_bits >

id >1E930B id >

name model = "atmega128" >

page_size >128 page_size >

page_count >512 page_count >

ee_size >4096 ee_size >

ee_psize >8 ee_psize >

dev_type >0 dev_type >

l_fuse >C1 l_fuse >

h_fuse >99 h_fuse >

e_fuse >FD e_fuse >

l_bits >FF l_bits >

id >1E9702 id >

Так вот, для добавления новой модели - копируете любую из структур от тега до тега включительно и вставляете в документ в любом месте между структурами либо в начале или конце. От этого будет зависеть только очерёдность отображения списка в программе. Далее редактируете структуру. Для этого необходимо скачать datasheet на соответствующую модель МК. В первом теге (name) просто вводите название модели AVR (произвольно). Теги "page_size", "page_count" соответственно размер страницы (в словах 2 байта) и количество страниц flash соответственно. Теги "ee_size" и "ee_psize" размер EEPROM в байтах и размер страницы EEPROM, тег "id' это три байта сигнатуры модели МК - все эти данные можно узнать из datasheet в разделе "Memory programming". Тег "dev_type" - это тип устройства: 0 - МК с полным набором управляющих сигналов (это большинство моделей в корпусах от 28 pin), 1 - МК с объединёнными сигналами управления (такие как attiny2313), 2 - МК с Flash 256Кб (Atmega256X), 3 - МК с интерфейсом последовательного высоковольтного программирования (Attiny13/25/45/85/44/84 и др). Дефолтные Fuse биты в шестнадцатиричном формате ("l_fuse","h_fuse","e_fuse") можно найти в любом онлайн калькуляторе фьюзов AVR (например, avr fuse calculator ). Тег "l_bits" - это lock биты - всегда "FF", то есть не запрограммированы (кстати, чтобы сбросить lock биты, нужно стереть МК, простой записью они не сбрасываются - защита от копирования прошивки, всё-таки!). Всё, после добавления такой структуры, сохранения файла и перезагрузки программы, вы увидите в списке новую модель (модели) МК AVR. К сожалению протестировать все модели я не могу, так как их очень много, но большинство распространённых моделей должны работать.

Из имеющихся у меня камней я протестировал Atmega8, Atmega16, Atmega32, Attiny2313, Attiny13a, Attiny45. На них же есть схемы переходников. Позже проверю работу с Atmega128a и Atmega2560 (просто на них я не делал переходники, подключу на проводах и отпишусь в комментариях).

Об AVR - всё. Теперь опишу, как работать со SPI Flash 25-й серии. Для данных микросхем памяти также есть соответствующая отдельная вкладка в программе:

Работа со Spi Flash в данной вкладке аналогична таковой во вкладке AVR. Поясню лишь, что означают окошки Sreg1 и Sreg2. У Spi Flash 25-й серии есть два Status-регистра, в которых есть флаги состояний и биты защиты. В некоторых б/у микросхемах, особенно выпаянных из материнских плат, могут быть установлены биты защиты от записи верхних блоков памяти (например для предотвращения порчи bootloader). Такие флешки будут читаться правильно, а при записи или стирании верхние блоки памяти изменяться не будут. Чтобы снять такую защиту необходимо записать нули в регистры Sreg (чаще - в Sreg2). Для этого можно написать по два нуля в соответствующие окошки и нажать кнопку "Write SR". Биты будут сброшены. После этого для корректной работы надо отключить питание от флешки и снова включить. Если флешку планируется вернуть после записи, например, в материнскую плату, то надо будет установить биты защиты обратно. Для этого их надо предварительно прочитать и запомнить (или записать на листик), затем стереть биты защиты, стереть/записать флешку и записать биты защиты обратно кнопкой "Write SR".

Spi Flash подключаются к восьми-контактному разъёму на плате программатора (XS4 на схеме). Схема подключения следующая:

SPI Flash XS4
CS -> CS
DI -> MOSI
DO -> MISO
CLK -> SCK
WP -> VCC
HOLD -> VPP

Положение джамперов на плате программатора не имеет никакого значения, так как на этот разъём напрямую выведены сигналы SPI2 от STM32 и его питание в 3.3 Вольта.

В случае со Spi Flash также возможно добавление новых моделей. Аналогичный AVR xml-файл под названием "25XXX.xml" хранится также в папке "Devices" и имеет сходную структуру:

name model = "W25Q80" >
page_size >256 page_size >
page_count >4096 page_count >
f_size >1048576 f_size >
id >EF4014 id >
name >

В данном случае, тег "page_size" это размер страницы памяти Spi Flash в байтах (чаще всего 256 байт), "f_size" - объём памяти всей флешки в байтах, "id" - три байта сигнатуры чипа (первый байт - код производителя, второй - модель, третий - объём памяти), "page_count" - количество страниц памяти (можно получить делением объёма флешки на размер страницы в байтах). Все данные можно найти в datasheet на соответствующую модель чипа. ID - можно прочитать программатором и затем вписать в xml файл, работоспособность от этого не изменится.

В случае со Spi Flash микросхемами скорость чтения/записи не слишком большая. Флешка на 1 Мегабайт (например W25Q80) читается приблизительно 1-1,5 минуты. А если флешка на 8Мегабайт - можете смело пойти попить чаю, это минут на десять. Но запись обычно проходит без сбоев. Проверял, когда записывал звуковые файлы и картинки. Кстати, программатор позволяет записать практически любой файл соответствующего размера в виде "сырых данных". Кроме hex-файлов, они предварительно конвертируются в массив байт.

Кроме AVR и Spi Flash программатор также поддерживает работу с параллельными Flash и EEPROM, I2C EEPROM, восьмибитными SRAM (смотрите первую часть статьи).

Общие советы по использованию программатора:

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

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

PS: проект пока ещё развивается. Память STM32 заполнена приблизительно только на 1/5, поэтому я буду стараться добавлять поддержку новых устройств. В ближайших планах добавить поддержку параллельной Flash с 16-битной шиной данных (mx29lv320), FWH (Pm49FL004) микросхемы bios материнских плат, microwire eeprom. И всё, что будет попадать мне в руки.

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

Сегодня рассмотрим простой но очень функциональный программатор на микросхеме CH341A (MinProgramment), который программирует микросхемы 24 и 25 серии используемые в материнских платах, роутеров, ноутбуков, маршрутизаторов и так далее.

Обзор программатора для FLASH и EEPROM на CH341A

Технические параметры CH341A

► Напряжение питания: 5 В, DC
► Интерфейс: USB 2.0
► Программирование/ чтение: FLASH и EEPROM 24-25 серий
► Габариты: 85 мм x 27 мм x 15 мм
► Поддержка ОС: Windows Vista, Windows 7, Windows 8.1, Windows 10

Общие сведения

CH341A Programment, это программатор начального уровня, изготовлена на черном стеклотекстолите (существует вариант на зеленом текстолите) с серебристой окантовкой. В комплект входит зеленая печатная плата и два штыревых разъема 1х4 (шаг 2.54 мм), данный комплект, позволит прошивать микросхемы SMD исполнении, очень удобно, если необходимо прошить пару микросхем, но если планируете использовать программатор постоянно, советую приобрести, так называемые ZIF переходники на 150 mil и 200 mil, позволяющие устанавливать SMD микросхемы без пайки.


На верхней части программатора, установлена микросхема CH341А, рядом располагается кварцевый резонатор на 12 МГц, стабилизатор напряжения AMS1117-3.3 который выдает 3.3В, а так же электрическая обвязка всех этих компонентов (резисторы, конденсатора). Для программирования микросхем, установлена 16 контактная DIP панель с нулевым усилием с маркировкой TFXTDOL. С двух стороны DIP панели, располагается две группы дополнительных контактов, назначение каждого можно посмотреть на обратной стороне платы.

Обзор программатора для FLASH и EEPROM на CH341A

На другой стороне платы, дополнительно добавлено место для установки SMD микросхем (150 mil и 200 mil) и нарисована шёлкография.

Назначение группы контактов 1:
► 1,2,3 – выбор режима работы (1-2 режим Paralell (внутренней) и 2-3 режим Serial (внешней)
► TX – передаваемые данные
► RX – принимаемые данные
► GND – питание земля
► 5V – питание +5 В

Назначение группы контактов 2:
► CLK – линия тактирования (Serial CLock)
► CS – режим работы
► MOSI – прием данных
► MISO – передача данных
► GND – питание земля
► 3.3V – питание +3.3 В
► 5V – питание +5 В

Подключение программатора MinProgramment

Установка драйвера CH341A

Установка программы CH341A

Программатор готов к прошивке микросхем.

Инструкция по прошивке

Теперь приступим к программированию (режим Paralell). Если программировать микросхемы в SMD корпусе, то необходимо использовать ZIF-панель или адаптер (что идет в комплекте). Припеваем или устанавливаем микросхему и с помощью прижимного рычага, зажимаем адаптер в программаторе. Очень важно, устанавливать микросхему по ключу, в противном случаи можно испортить микросхему.

Выбор режима на CH341A

► Запускаем программу CH341A — USB Programmer 1.3, при приключением и в режиме Paralell, программа автоматически найдет программатор.

Обзор программатора для FLASH и EEPROM на CH341A

Обзор программатора для FLASH и EEPROM на CH341A

► Также есть, программатор позволяет прошивать по ISP интерфейсу (внутрисхемному) и может работать как COM порт (аналогично, адаптеру PL2303HA).

Список поддерживаемых микросхем CH341A (602 шт)

25/26 SPI FLASH

24 EEPROM

ATMEL: AT24C01B, AT24C01, AT24C01A, AT24C02, AT24C02A, AT24C02B, AT24C04B, AT24C04, AT24C04A, AT24C08A, AT24C08B, AT24C08, AT24C16, AT24C16A, AT24C16B, AT24C32B, AT24C32A, AT24C32, AT24C64, AT24C64A, AT24C64B, AT24C128, AT24C128A, AT24C128B, AT24C256A, AT24C256, AT24C256B, AT24C512B, AT24C512A, AT24C512, AT24C1024, AT24C1024A, AT24C1024B;
CATALYST: CAT24C01, CAT24WC01, CAT24C02, CAT24WC02, CAT24C04, CAT24WC04, CAT24WC08, CAT24C08, CAT24WC16, CAT24C16, CAT24WC32, CAT24C32, CAT24WC64, CAT24C64, CAT24C128, CAT24WC128, CAT24C256, CAT24WC2S6, CAT24C512, CAT24WC512, CAT24C1024, CAT24WC1024;
COMMON: 24C01 3V, 24C01 5V, 24C02 3V, 24C02 5V, 24C04 3V, 24C04 5V, 24C08 3V, 24C08 5V, 24C16 5V, 24C16 3V, 24C32 5V, 24C32 3V, 24C64 5V, 24C64 3V, 24C128 SV, 24C128 3V, 24C256 5V, 24C256 3V, 24C512 5V, 24C512 3V, 24C1024 3V, 24C1024 5V, 24C2048 5V, 24C2048 3V, 24C4096 5V, 24C4096 3V;
FAIRCHILD: FM24C01L, FM24C02L, FM24C03L, FM24C05L, FM24C04L, FM24C08L, FM24C09L, FM24C17L, FM24C16L, FM24C32L, FM24C64L, FM24C128L, FM24C256L, FM24C512L, FM24C512L, FM24C1024L;
HOLTEK: HT24C01, HT24LC01, HT24LC02, HT24C02, HT24C04, HT24LC04, HT24C08, HT24LC08, HT24C16, HT24LC16, HT24LC32, HT24C32, HT24LC64, HT24C64, HT24C128, HT24LC128, HT24LC256, HT24C256, HT24LC512, HT24C512, HT24C1024, HT24LC1024;
ISSI: IS24C01, IS24C02, IS24C04, IS24C08, IS24C16, IS24C32, IS24C64, IS24C128, IS24C256, IS24C512, IS24C1024;
MICROCHIP: MIC24LC014, MIC24AA01, MIC24AA014, MIC24LC01B, MIC24LC02B, MIC24AA02, MIC24C02C, MIC24AA024, MIC24LC025, MIC24LC024, MIC24LC04B, MIC24AA04, MIC24AA025, MIC24LC088, MIC24AA08, MIC24LC16B, MIC24AA16, MIC24LC32, MIC24AA32, MIC24LC64, MIC24AA64, MIC24FC64, MIC24FC128, MIC24AA128, MIC24LC128, MIC24AA256, MIC24LC256, MIC24FC2S6, MIC24AA512, MIC24LC512, MIC24FC512, MIC24AA1024;
NSC: NSC24C02L, NSC24C02, NSC24C64;
RAMTRON: FM24CL04, FM24C04A, FM24CL16, FM24C16A, FM24CL64, FM24C64, FM24C256, FM24CL256, FM24C512;
ROHM: BR24L01, BR24C01, BR24L02, BR24C02, BR24L04, BR24C04, BR24L08, BR24C08, BR24L16, BR24C16, BR24L32, BR24C32, BR24C64, BR24L64.
ST: ST24C01, ST24C02, ST24C04, ST24C08, ST24C16, ST24C32, ST24C64;
XICOR: X24C01, X24C02, X24C04, X24C08, X24C16;

25 SPI EEPROM

ATMEL: AT25010, AT25020, AT25040, AT25080, AT25160, AT25360, AT25640, AT25128, AT25256, AT25512;
MICROCHIP: 25AA080C, 25AA080D, 25C080 5V, 25LC080C, 25LC080D, 25AA160, 25C160 5V, 25LC160, 25AA320, 25C320 5V, 25LC320, 25AA640, 25C640 5V, 25LC640, 25AA256, 25LC256, 25AA512, 25LC512, 25AA1024, 25LC1024

Купить на Aliexpress
Программатор для FLASH и EEPROM на CH341
Адаптер SOP8 (150mil и 200mil)
Клипса-адаптер SOIC8

Купить в Самаре и области
Программатор для FLASH и EEPROM на CH341
Адаптер SOP8 150mil
Адаптер SOP8 200mil
Клипса-адаптер SOIC8
Адаптер на 1.8v для программатора CH341A

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

Хочу выразить благодарность некто ckoba за отличнейшую и подробнейшую статью с картинками и ссылками, рекомендую — статья о прошивке флешек с spi интерфейсом через lpt

Не без моего вмешательства подох биос в ноутбуке, сервис озвучил цену в 400 грн, я мягко говоря прихуел, и решил попробовать все сделать сам, микросхемку выпаять оказалось несложно, хотя она размерами 5 на 5 мм и с 8 ножкаме, поддеваем ножку швейной иглой, тыкаем паяльником и давим на иглу в направлении от микросхемы наружу, главное сильно не греть, и не давить, а то или ногу микросхеме оторвете или дорожку на плате. И вообще луче это делать паяльной станцией. Отпаять микросхему не перегрев это только треть дела. В общем отпаял я ее от платы, сунул в спичечный коробок, и потащил на работу, а по дороге заехал на радиорынок и купил запчастей, надо 4 резистора на 150 ом, один конденсатор на 1 мкФ, разъем типа папа для LPT порта, по умному он называется DB-25, еще можно купить батарейку на 3 вольта, а можно взять 3,3 вольта из компа.

Для проводков я разрезал кусок старого IDE шлейфа, у него как раз подходящий шаг, снимаем немного изоляции, буквально 3-4 мм, залуживаем, и остается только совместить микросхему и провод и слегка поработать паяльником. Паяйте осторожно везде пишут что флешки от перегрева дохнут.

image

ДЛя батарейки нашлась кроватка от старой матери, удобно же. Резисторы и кондер я припаял прямо к разъему.

image

image

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

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

В статье ссылка на программу не работает уже, сайт переехал на другой адрес, вот правильная ссылка на прошивальщик флешек spi через LPT , так же не забывайте в биосе настроить работу LPT порта в двустороннем режиме epp+ecp.

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

Шьем биос spi простейшим lpt программатором : 7 комментариев

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

Прихуел, конечно. Я ж озвучилвал что надо сделать выпаять и запрограммировать флешку и потом запаять обратно, 400 грн это как бы дохуя, то есть не надо разбирать ноут (100 грн за это берут обычно), не надо искать неисправность и т.п.

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

Статья очень даже неплохая и сделал сам это похвально,но чтобы выпаять ноут нужно разобрать,(если сам разберешь и принесешь можно и 100 грн),а это тоже затраты времени,учитывая сколько ноутов накидают клиенты,я себя роботом не чувствую,мне нужно за что то свет и мастерскую обеспечивать,а если дома сидеть и времени куча то я не спорю можно и за 200 грн по желанию) То что описано в статье я считаю добротной работой и платить тоже нужно нормально + стоимость ноута далеко не 500 грн,чтобы говорить дорого. ИМХО

Я обзвонил несколько сервисников, объяснил ситуацию — я привезу флешку мне ее только запрограммировать, я сам разбираю ноут, сам выпаиваю, и за это озвучили 400 грн. Как-то дохуя.

ди, а где ты такие пластины надыбал? как ты сдавливаешь плату? с какой силой болты затягиваешь? и из чего эти пластини сделаны?

Молоток ! Мне понравилось и пригодилось. Хоть и неэстетично, зато дёшево, надёжно и практично.

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

Приветствую Вас Гость | RSS










0


и что за VR1 78033 что это? на что можно заменить.

0


Стабилизатор на 3,3 вольта.

0

0


Это одна и та же микросхема, только в разных корпусах. Для этой печатной платы нужна в ДИП корпусе.

0

Программа легко запустилась на Virtual PC - Windows XP mode в Windows 7 x64. (копернуть только дллку). Но мне нужен COM порт (

0

0

0

0

Запустилась только в режиме совместимости с Windows95 или 98 с правами администратора.
Проверить функционал не могу - нет порта LPT.

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