ESP8266 理解Flash更新電路
ESP8266電源電路有一定了解後,接下來就必需要理解ESP8266(簡稱ESP)的開機模式,ESP將MTDO、GPIO0、GPIO2組成一個3bit的設定模式,透過設定模式來告知ESP要用什麼樣的方式啟動,下面為3bit的組合設定:
| MTDO | GPIO0 | GPIO2 | Value | 內容 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | unknown |
| 0 | 0 | 1 | 1 | UART0啟動 |
| 0 | 1 | 0 | 2 | Jump start |
| 0 | 1 | 1 | 3 | Flash啟動 |
| 1 | 0 | 0 | 4 | SDIO 低速 V2 |
| 1 | 0 | 1 | 5 | SDIO 高速 V1 |
| 1 | 1 | 0 | 6 | SDIO 低速 V1 |
| 1 | 1 | 1 | 7 | SDIO 高速 V2 |
如果你的應用中不使用到SDIO功能的話,那就直接忽略MTDO的值,直接將它串接電阻接地,再來就是GPIO0、GPIO2來決定啟動的模式,依照目前的應用來說,需要觀注的是從Flash啟動、UART0啟動。
| GPIO0 | GPIO2 | 內容 |
|---|---|---|
| 0 | 1 | UART0啟動 |
| 1 | 1 | Flash啟動 |
那這兩種模式是什麼呢?
Flash啟動
此啟動會透過SPI與Flash進行讀、寫動作,ESP8266執行Flash的程式碼
UART0 啟動
啟動後會接收來自UART0的命令進行操作,透過命令讀、寫Flash進行燒寫程式碼至Flash或是讀取Flash內容轉存成檔案
結論就是:
MTDO(GPIO15) 串接電阻至LOW(GND)
GPIO2 串接電阻至HIGH(Vcc)
未來切換模式只需透過GPIO0的HIGH、LOW來控制是Flash啟動或是UART0啟動,下面電路供參考:

GPIO0設計成JUMP/開關方式,切換JUMP/開關讓GPIO0接地進入UART0啟動反之則進入Flash啟動執行程式碼,以上為最簡易的手動切換模式的電路圖,不過要透過Flash更新程式自動切換模式的話那就要另外再加電路,此電路是由NODE MCU的電路圖中所取得的:

紅框處的電路就是可以利用程式控制串列埠(Serial Port)DTR/RTS的方式讓ESP進入UART0啟動模式,其他類似的ESP開發板也是參考此電路達成的,像WeMos mini D1、MiniPlan,你可以依照你的成本還有設計考量來決定要不要使用程式自動切換的方式,所以當你Flash更新程式在使用上時就要注意選擇切換模式的方法,你使用自動切換的電路就要在Flash更新程式上選擇nodemcu的切換,像Arduino IDE上面會看到此設定:

另外,透過UART0啟動的方式來更新Flash的工具有蠻多種的,在後面會有章節介紹,在此不詳加解說。
Trackbacks/Pingbacks