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