Spi flash 25q32 распиновка

Технохрень

Опросы

Рубрики

Еще по теме

Программатор SPI Flash своими руками

В общем это нужно чтобы перепрошивать 8 ножные SPI флешки. А это в свою очередь нужно чтобы восстанавливать роутеры, сбрасывать пароли на биосы и восстанавливать их, и много чего еще.

Будем делать за 10 минут самый простой программатор своими руками на Ардуино 🙂 Понадобится Arduino Pro Micro ну или любая другая (будет отличаться только распиновка на ардуино). Собираем эту сложную схему:

Пофиг что 5 вольт, еще ничего не сгорело ни разу. Но только выпаивать флешки надо из платы, так как другие элементы могут быть не такими устойчивыми))))

Вот прошивка (скетч) для ардуины:

Ничего сложного и главное нет лишних деталей в схеме))) Главное правильные библиотеки — скачать их вместе с прошивкой тут: spi-eeprom-fw2.zip

Пробовал на флешках 25Q128FVSG, 25L3206E, еще какая-то роутерная безымянная.

Как выяснилось программатор может иногда не работать 🙂 Вариантов несколько:
— либо слишком длинные провода к флешке (нормально см 8-15)
— либо слишком китайская ардуина (например нано в3)
— либо дохлая флешка

159 Comments

Здравствуйте! А как с Вами можно связаться? Вопросик по этой программке появился

admin

Александр

Приветствую.
Попробовал собрать данный прибор на UNO и на MEGA, работает на простых SPI 25-йсерии.
Могу я вас попросить доработать устройство для работы с Flash AT45DB161 — Atmel ?
Очень интересная микруха, а как правильно читать-записывать никак не разберусь.
Спасибо.

admin

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

Мансур

Здравствуйте! Я всё скачал. прошил ардуину вашим скетчем. Но до меня не доходит как залить прошивку в флешь. Нету кнопки залить или закачать. Только сохранить получается. Подскажите пожалуйста. Очень надо прошить тв с 8 мегабайтной spi. Мой прогер только до 2-х мега берёт. И ещё не понял в архиве 3 файла. 1 то понятно скетч а 2 других куда?

admin

Здравствуйте! Ставите курсор в начало флеша (на нулевую позицию) и нажимаете «вставить файл в текущую позицию», затем выбираете файл прошивки и ждете ))

Насчет двух дополнительных файлов — это вспомогательные файлы с функциями для скетча, просто пусть они лежат в той же папке, что и сам файл скетча, ардруино сама их подцепит, с ними ничего делать не нужно.

Здравствуйте! А можно этим программатором шить флешки биосов материнок , если да а как туда залить (в прогу) прошивку для биоса?

admin

Да наверно, надо только проверить что флешки именно с SPI интерфейсом и ее нужно все ж выпаять из материнки. Чтобы точно сказать напишите модель флешки.

А чтобы прошить надо сначала сделать бекап (скачать фулфлеш). Потом поставить курсор на самый первый байт в редакторе и нажать «Вставить файл в текущую позицию»

Filin

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

admin

Для общего развития если просто посмотреть — можно декомпилировать без проблем)) а что Вы бы улучшили? Есть предложения? Я готов работать над программой.

Filin

Декомпилировать — это для меня слишком круто 🙂 Я пока только начинаю интересоваться этой темой. Ну нет так нет, не критично. В любом случае спасибо за статью, для начинающего самое то — коротко и по делу.

admin

Вот исходники консольной версии http://skproj.ru/wp-content/uploads/2016/05/SpiEepromCon.zip
Если допилите, пожалуйста, поделитесь)) Внесу изменения в основную версию

URAsikkk

Добавьте кнопку стереть флеш в 00000.Записывать биос нужно на чистую флеш(так работают все програматоры). И добавте кнопку «Определить размер флеш памяти», а так же кнопку «проверка памяти на битые сектора»…

Виктор

А если я буду использовать аналог Меги2560 — что нужно изменить? Хочу попробовать прошить флэш мульта ноутбука. Еще есть у мня USB-TTL и COM-TTL переходники. Может как-то с их помощью можно прошить?

admin

Думаю с мегой2560 проблем не возникнет, номера ног для MOSI, MISO и SCK немного другие, но они должны быть соседние.
Насчет USB-TTL и COM-TTL не знаю, мне кажется есть какие-нибудь программаторы, которые работают через эти переходники, но я не встречал

Виктор

я так понял -= у вас 2-й пин это SDA. 15й — SCL, 14- MISO 16 — MOSI. это аппаратная распиновка предусмотренная изготовителем контроллера?

тогда на Mega2560 20й пин — SDA, 21й — SCL, 50 — miso, 51 — mosi. Так и подпаивать к флэшке?

SDA — нога 1
MISO — нога 2
VCC — нога 3, 7, 8
GND — нога 4
MOSI — нога 5
SCL — нога 6

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

admin

Немного не так, CS нога флешки должна идти к D2 (Digital 2). Еще SCL на меге2560 52 пин. MISO и MOSI правильно. Вот тут таблица есть https://www.arduino.cc/en/Reference/SPI

Виктор

Смотрел по схеме. да, 52 пин это SCK. Просто у меня на плате есть надписи где 21 — SCL.

А вообще я ступил, тут же прям посередине платы есть 6-пиновый разъем ICSP — буду от туда подключатся. там и MISO и MOSI и SCK и Vcc и GND. А 2-й пин значит задается в скетче в начале?

По поводу переходников — они наверное в другой ситуации используются, там интерфейс UART, т.е. по Rx и Tx данные передаются.

admin

Я чет не уверен что тот 6 пиновый разъем по середине — то что надо. Все ж лучше по таблице делать https://www.arduino.cc/en/Reference/SPI
Хотя проверить не мешает, может правда просто продублировали ноги в другое место

admin

а 2 пин да, задается в начале. Можно любой использовать какой нравится)

uraasikkk

у ардуино Уно например 2 пин не работает-софт спифлешер виснет.Работает только на 10 пине(проверено лично) Как видим по распиновке на https://www.arduino.cc/en/Reference/SPI указан имено 10 пин)

Виктор

Да. и на 2560 есть 2 питания 3,3v и 5v, какое надежнее использовать?

admin

Я все делал на 5 вольтах, хотя по документации надо 3.3. попробуйте 3.3 — если не заработает тогда 5 🙂

Виктор

а какой размер выставлять? в даташите есть такая инфа:

Pm25LD010: 128K x 8 (1 Mbit)

admin

Виктор

Все. Спасибо дружище. Прошил флэху. Ноут сразу запустился. До этого лежал мертвым, даже индикации заряда АКБ небыло.

Александр

Скетч залил на Ардуино Уно. При запуске SpiEepromFlasher выдается сообщение о том, что тот не является приложением WIN32. У меня XP. Нужна WIN7 ?

admin

Нужен .net framework 4.5 и 64 разрядная операционная система

urasikkk

Системные требования не помешают)

Александр

При попытке перезалить скетч выдает : Arduino: 1.6.6 (Windows XP), Плата:»Arduino/Genuino Uno»

avr-g++: error: missing filename after ‘-o’

exit status 1
Ошибка компиляции.

Александр

Установил последнюю версию Arduino IDE, скетч залил без ошибок. Буду искать 64 разрядную ОС.

Александр

Всё прошил на отлично !
Теперь подробнее, возможно кому-то поможет. ОС WIN 7 32-разрядная(достаточно оказалось), на всякий случай поставил последнюю версию Net.framework 4.5.
Плата китайская Ардуино Uno.
Подключение :
Ардуино Микросхема
2 1 D2
12 2 MISO
3.3 v 3, 7, 8 Vcc
GND 4 GND
11 5 MOSI
13 6 SCL
Автору — искренняя благодарность .
P.s. а какие еще типы флешек можно прошивать по Вашей методике ?

admin

Был рад помочь. Только SPI флешки

Виктор

Доброго дня. Сегдня принесли автомобильный видеорегистратор, висит на заставке. Пробую прошить. На офсайте прошивка заливается через SD карту. Результата нет — закачал на Sd, включил — все равно не прошился. Я его разобрал и сразу обратил внимание на SPI память с маркировкой 25L320SE. Я так понял микропрограмма вся хранится на этой флэшке? может также прошить с ардуины? других микросхем памяти я не нашел на плате. файл прошивка в формате BIN.

Виктор

сори 25L3206E. такая как у Вас в инструкции.

Виктор

я вообще на WIN 10 64x шил. все в норме прошло. Воскресил ноутбук) щас буду пробовать регистратор восстановить. А вообще заказал программатор на aliexpress что б не паяться к ножкам. стоит он 200 рублей.

Виктор

Денис

Спасибо автору!
Этим способом удалось прошить SATA контроллер.

Легион

Шил 25032xx Через переходник 5 ->3.3 читает но не пишет. Воткнул напрямую. Шьет. Спасибо.

Metamorf

Распиновка Arduino nano v3.0
1 — d2
2 — 12
3,7,8 — vcc (5v)
4 — GND
5 — 11
6 — 13

Stepik

urasikkk

Буду рад распиновке Arduino-pro-mini.

Андрей

Привет, микросхема 25l8006e со скаллера (после кривой прошивки через усб, была не вовремя прервана). При запуске этого программатора, после выбора нужного ком-порта, открывается окно программы с белым экраном вместо данных и зависает — not responding. Куда копать? Большое Спасибо.

admin

Привет, ну либо провода слишком длинные либо что то с ардуиной не то. попробуйте подключится к ней через монитор порта на скорости 115200 и отправить букву t — если напишет COM ok то проблемы между флешкой и ардуиной или с самой флешкой. Если не напишет COM ok тогда что то не то с ардуиной 🙂
Если с флешкой проблема попробуйте укоротить провода к ней, ну или другую флешку, может какая-то несовместимость 🙂 Еще почему то не всегда программатор с arduino mini работает

Андрей

Получилось с Мегой! С Nano v3 на отрез отказывается работать. Спасибище. 🙂

Сергей

Всё отлично, хороший программатор на скорую руку получается. Автору огромное спасибо. Только вот я его нагуглил, когда хотел прошить 93C56… А такие маленькие он не шьет(

admin

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

Алексей

Спасибо автору! Если внимательно прочитать и сделать как описано, то все получится! Впервые решил перепрошить роутер. Была под рукой запылившаяся Ардуино Нано. Соединил провода. Скачал последний IDE. Прошил успешно.

Павел

Спасибо автору огромное! Очень помогло! Вот только не решил проблему: на меге 2560 первые 128 байт заливаются сплошные FF.

admin

Может флеш не исправна?

Константин

Все собрал. ID читает. После нажатия на считывание фулфлеш программа перестает отвечать. Как с этим бороться? Заранее спасибо

admin

Вариантов несколько:
— либо слишком длинные провода к флешке
— либо слишком китайская ардуина (например нано в3)
— либо дохлая флешка

urasikkk

Как узнаеш что флешка дохлая? Может есть скетч который это проверит?

Огромное спасибо автору! Восстановил камеру Soocoo C30 после неудачной прошивки. Все супер !

Wikly

Автор молодец! Спасибо! Было бы прям совсем отлично, если бы сама прога на ПК была под 32х разрядную систему!

Wikly

И еще, при попытке скачать фулфлеш, почему то сохраняется только 4 КБ из 4096. Хм.
Arduino UNO,
flash: Winbond w25q32bv

Источник

Spi flash 25q32 распиновка

Бывает так, что срочно нужно прошить микросхему памяти или, наоборот, — считать с неё прошивку или просто данные. И микросхема эта может оказаться какой-нибудь специфической — например, SPI Flash, а у тебя есть только программатор микроконтроллеров, для AVR и PIC. Можно, конечно, заказать у китайцев CH341, но ведь его надо ждать, а прошить нужно ну прямо вот сейчас. Приходится собирать нечто из желудей и спичек.

Но если прошить нужно именно вышеупомянутую микросхему, то можно поступить проще. Светлые головы доработали прошивку популярного программатора USBAsp, с которой появляется возможность работать с spi, i2c и microwire флешками. Под всё это дело есть и удобная программа.

Итак, для программирования программатора потребуется другой программатор микроконтроллеров, т.к. USBAsp построен на ATMEGA8. Одноимённые пины двух программаторов соединяются, а на программируемом нужно замкнуть (и установить, если она не установлена) перемычку перепрограммирования.


Прошивку и программу (которая работает также и с CH341) AsProgrammer берём у разработчика:

Там же есть скриншоты установки фьюзов.

Было предположение, что китайский USBAsp может быть собран по схеме, отличной от оригинальной, и прошивка приведёт к его неработоспособности, но всё оказалось хорошо и после обновления прошивки программатор виделся компьютером точно так же. Быстренько была собрана макетная платка для подключения микросхем в корпусе SO8, запаяна тестовая микросхема серии 25 и успешно считана. А вот с записью возникли проблемы: при верификации программа находила отличия.


Причиной, по нашему предположению, мог являться шлейф от программатора до микросхемы чрезмерной длины (40см). Поэтому прямо на платке между VCC и GND был запян керамический конденсатор на 100нФ, а скорость записи уменьшена с 1,5МГц до 750кГц. После этого микросхема была вновь прошита, и верификация прошла успешно.

Ниже приведён список поддерживаемых AsProgrammer микросхем. Вообще, работать можно с любыми микросхемами, введя их параметры из даташита вручную. Напряжение программирования у USBAsp задаётся smd-перемычкой, см. фото выше: для 5 вольт она должна быть запаяна, для 3,3 вольт — удалена.

Источник

Программатор SPI и I2C микросхем памяти CH341A Mini Programmer

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


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

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

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

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

Программатор выполнен на базе микроконтроллера «USB Bus Convert Chip» серии CH341A. Он рассчитан на физическое подключение к порту USB 2.0 компьютера, при подключении через хаб-удлиннитель программатор у меня работал с ошибками (может у меня хаб такой). Модуль программирования памяти собран на плате размерами 63х27мм (без учета USB разьема, с разьемом 84х27мм) из черного стеклотекстолита.

В распоряжении автора есть два экземпляра этого программатора, приобретенные в разное время, визуально их можно отличить по названию, один (более ранний) называется «CH341A Mini Programmer«, второй «CH341A MinProgramment«. Схемы одинаковые, различаются только цветом светодиода «RUN«. На первом зеленый, на втором желтый.
Некоторые схемные обозначения на конкретном программаторе могут немного отличаться, например самовосстанавливающийся предохранитель F1 (fuse) может обозначаться как R1. В инете встречались упоминания, что в эту позицию иногда ставят резистор нулевого сопротивления т.е. перемычку. У меня как и положено на обоих стоят предохранители

400mA, сопротивление 0,92Ом, маркировка на корпусе «5». Также на плате часто отсутствует схемное обозначение резисторной сборки PR1. Более грамотное обозначение схемных элементов программатора можно посмотреть на изображении верхней стороны платы от магазина WAVGAT (на AliExpress):

Особых отличий от даташита схема не имеет, разве что на блокировочных конденсаторах по питанию сильно экономили. Питание 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 флешки.

Резисторы 2,2 кОм отделяют выводы #WP и #HOLD флешки от шины питания. Светодиод — индикатор наличия напряжения.

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

Перед применением программатора необходимо инсталировать в Windows его драйвер(а), легко находятся в инете, я брал из архива программы AsProgrammer. Программатор поддерживает два режима, они переключаются аппаратно джампером J1. Применен интересный прием, при переключении джампера у чипа меняется Device ID на шине USB. Это вынуждает Windows найти подходящий по VID/PID драйвер и подключить его.
При джампере в положении «1-2» по VID_1A86&PID_5512 подгружается драйвер «USB-EPP/I2C… CH341A«. Он создает в диспетчере устройств раздел «Interface» в который и устанавливается.

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

При джампере в положении «2-3» по VID_1A86&PID_5523 подгружается драйвер «USB-SERIAL CH341A«. В диспетчере устройств найти его можно в разделе «Порты (COM и LPT)«. Там же можно посмотреть и номер присвоенного СОМ порта.

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

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

С программатором CH341A на программном уровне обычно рекомендуется китайский (есть русификация) родственный софт «CH341A — USB Programmer». Но в то-же время в инете достаточно много жалоб на его глючность и нестабильность, особенно версий выше 1.18. CH341A — USB Programmer версий 1.30, 1.29 не может нормально работать (читать и записывать) с чипами памяти объемом более 8MByte/64MBit. Примерно после адреса 0800000 начинают сыпаться хаотичные ошибки.
Поэтому я не стал наступать на эти грабли повторно, и с самого начала использовал программу «AsProgrammer» от участника сообщества Tifa, последняя версия 1.4.0. Скачать можно на форуме, топик форума показывается в лог-окне программы при запуске. Если кто-то захочет полазить в исходниках, проект есть на GitHub (если правильно понял, проект на Free Pascal, Lazarus).
Кроме поддержки 24 и 25 серий микросхем памяти, программа работает и c 45 серией, поддерживает серию ST M95 и память microwire (только для данного программатора). Все схемы подключения есть в архиве программы. Полный список поддерживаемых микросхем памяти можно посмотреть в каталоге программы в файле chiplist.xml.

Программа не требует установки, включает в архив драйверы для обоих режимов программирования СН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»).

Доработка 1. Подтяжка сигналов #WP и #HOLD.

В программаторе линии сигналов #WP и #HOLD посажены непосредственно на шину питания. Это мешает сбросить/установить бит QE во втором регистре статуса (25хх). В даташитах на микросхемы памяти есть предупреждения по этому поводу, вот из даташита на W25Q128FW:

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.

Для исправления этого недостатка надо отсоединить ноги #WP (pin 3) и #HOLD (pin7) от VCC и подключить их к VCC через резисторы 2.2-4.7 кОм.
На «чёрном программаторе» советуют это делать так (привязка к схеме, нумерация контактов относительно ZIF разьема), дорожка между контактами 11-12 перерезается (#HOLD), между контактами впаивается резистор, дорожка от 11 контакта ведущая к 7 (#WP) перерезается у 11 контакта, проводок напаивается с 12 контакта к отрезанной дорожке, та же дорожка перерезается перед 7 контактом, поверх разреза напаивается резистор:

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

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

Участник сообщества «AlexX1810» предложил добавить на плату программатора три блокировочных конденсатора 0.1 мкФ. По его словам улучшается стабильность работы программатора.
Если ориентироваться по схеме, первый конденсатор между 6-7 контактами разьема Р1 (5V), второй между 5-6 контактами разьема Р2 (3.3V), третий между 15-16 контактами ZIF панельки (7-8 контакты разьема I2C, 3.3V). Все впаяны со стороны контактов.

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

Источник

Adblock
detector