ESP8266 理解Flash更新電路

ESP8266 理解Flash更新電路

ESP8266電源電路有一定了解後,接下來就必需要理解ESP8266(簡稱ESP)的開機模式,ESP將MTDOGPIO0GPIO2組成一個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的值,直接將它串接電阻接地,再來就是GPIO0GPIO2來決定啟動的模式,依照目前的應用來說,需要觀注的是從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)

未來切換模式只需透過GPIO0HIGHLOW來控制是Flash啟動或是UART0啟動,下面電路供參考:

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

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

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