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的工具有蛮多种的,在后面会有章节介绍,在此不详加解说。