Программируем память на модуле ESP-12f.
Привет всем!!! Недавно столкнулся с такой проблемой, как подгоревший порт UART. Подгорел он у моей esp-12f в результате подключения к uart Arduino. И возник вопрос: «А что теперь? Ведь прошивка в нём стоковая была.»
Единственный вариант в таком случае, только подпаяться к микросхеме памяти, но и тут могут быть трудности: в моем модуле esp-12f установлена микросхема W25Q32 – это spi чип 25й серии на 32 Мбит = 4 МБ. Но попадались мне посты, в которых указывалась другая микросхема памяти.
У кого-то есть специальный программатор для разных чипов, но у меня оказался только USB ASP от Arduino, вот его я и использовал. В сети много мануала как модернизировать данный программер под чипы 25й серии (также он работает с 45й серией, I2C чипами и Microwire), программа для прошивания AsProgrammer версия 1.4.0. Вот ссылка на форум:
программатор из USB ASP.
Давайте подключим программатор к микросхеме памяти напрямую в модуле, её можно даже не выпаивать. На моём модуле в торце эти ноги разведены, поэтому труда подключиться не составляет и труда, но на других модулях придётся проводками подпаяться к памяти. В папке с программой для прошивки есть схемы. Я приложу схему для 25й серии:
На модуле это будет выглядеть следующим об разом:
RST-CS0,
MISO – MISO,
WP – IO9,
HOLD – IO10,
MOSI – MOSI,
SCK – SCLK.
HOLD и WP, достаточно что-то одно подключить, но так, что бы легко можно было отсоединить, иначе модуль не стартанёт после прошивки.
Ладно, с подключением думаю разобрались. Далее нам нужна сама прошивка, её берём из конструктора на сайте
wifi-iot.com. У нас есть два пути: если хотим просто один раз прошить и далее ничего менять не надо, то компилируем без Обновление OTA, если в дальнейшем надо будет что-то изменять и к модулю не будет желания каждый раз подпаиваться, то компилируем с функцией Обновление OTA.
Берём файл который одним файлом (Скачать одним файлом (0x00000)), но не спешим её сразу заливать, иначе получите модуль с 512 кБ памяти и вечный безопасный режим:
Safe mode!
Error flash size
в дебаге:
Flash set size: 512 kb.
Flash real size: 4096 kb.,
а при обновлении по ота и вовсе кирпич.
В любом шестнадцатеричном редакторе (я пользуюсь winhex) открываем прошивку и заменяем данные по адресу 2 и 3. В прошивке из конструктора по этим адресам 00 00, надо записать туда 02 40. Вот наглядный пример начала этой прошивки:
offset | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| E9 | 03 | 00 | 00 | C8 | 02 | 10 | 40 | 00 | 00 | 10 | 40 | B0 | 05 | 00 | 00 |
После записи данных должно выглядеть так:
offset | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| E9 | 03 | 02 | 40 | C8 | 02 | 10 | 40 | 00 | 00 | 10 | 40 | B0 | 05 | 00 | 00 |
После внесения изменений необходимо сохранить прошивку и можно заливать в микросхему памяти. Не забываем перед загрузкой прошивки стереть микросхему памяти.
Теперь о том что мы пишем: для чипа 1 МБ: 03 20; 4 МБ: 02 40; 16 МБ: 02 90.
Удачи!!!