elchupanibrei (elchupanibrei) wrote,
elchupanibrei
elchupanibrei

Category:

Для тех кому не хватает еще одного GPIO у ESP8266

Бывает такая ситуация - не хватает еще одного GPIO. Знакомо? Выход есть...

Посмотрим внимательно на схему подключения serial flash внутри ESP8266.


подключения serial flash внутри ESP8266

Обычно, она подключена в режиме Quad I/O SPI (четыре линии чтения/записи). Для этого ESP8266 по мимо 2-х основных IO0, IO1 использует еще 2-е дополнительные линии IO3/HOLD -> GPIO9 и IO2/WP -> GPIO10.


типичное расположение контактов serial flash


Переведя флешку в Dual I/O SPI (две линии чтения/записи) и потеряв 25% в скорости можно без последствий использовать GPIO10. Как переключить читай тут.

К сожалению GPIO9 использовать без паяльника не получится. Назначение пина IO3/HOLD подключенного к GPIO9 - приостановить связь serial flash с МК без необходимости отмены выбора флэш-памяти SPI через CS или остановки SCLK. Типичный сценарий - запретить запись на стадии загрузки МК, запретить запись пока напряжение не выросло до рабочего. Для нормальной работы serial flash в Dual I/O SPI - IO3/HOLD должен быть в высоком состоянии.


типичный сценарий использования IO3/HOLD

С GPIO10 все намного проще. Он подключен к выводу IO2/WP - WRITE PROTECT. Чтобы аппаратная защита от записи работала, сначала нужно с помощью команд по SPI шине сконфигурировать Status Register во флэш-памяти. По умочанию биты SRP1 и SRP0 равны нулю. ESP8266 эти биты не трогает и serial flash просто игнорирует уровень на IO2/WP подключенного к GPIO10.


описание Status Register битов во флэш-памяти


PROFIT!
Tags: #arduino, #esp8266, arduino, esp8266
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments