ESP8266下载过程中发现每次都需要去匹配ESP8266的下载时序短接GPIO0,看到有些开发板集成了自动下载电路,这个是怎么实现的呢?
![9c383cd5fbb745b0d1c7477906454526.png](https://i-blog.csdnimg.cn/blog_migrate/14f2a808b6b13ba2dadec45fd041a150.jpeg)
NodeMCU
![eba647b5522c97acac36192ff67b98fa.png](https://i-blog.csdnimg.cn/blog_migrate/b1add79639e510746c9dd7c095b057d2.jpeg)
自动下载电路
可以看到这个下载电路相对于普通的CH340G下载电路,这个电路是把CH340G芯片中的DTR和RTS引脚引出到两个S8050的三极管上,去控制nRST和GPIO0的电平。
根据ESP8266芯片资料要求的下载流程,必须在GPIO0为低电平的状态下,复位芯片,才会进入USART下载模式。
![f0b4e5c30da0f0ea7ddc8d666d0ef15c.png](https://i-blog.csdnimg.cn/blog_migrate/8c579604dd7efe9d14a84249351aec9e.jpeg)
下载流程
我们看看该自动下载电路是怎么实现这个流程时序的,首先我们还是得从核心器件CH340G分析入手
![e2fb04d17803b0b2530c42704ee1eb16.png](https://i-blog.csdnimg.cn/blog_migrate/28521f1c4ac6a26e714519c8d3cd51a9.jpeg)
CH340G概述
CH340G 是一个USB转串口的集成芯片,关键性能参数如下:
![a66e360189b5a7a0153bc3b4ffc3aa12.png](https://i-blog.csdnimg.cn/blog_migrate/fea30e0cc564c9b26afab229c17eb1f9.jpeg)
CH340G关键参数
可以看到数据手册中的引脚描述:DTR#引脚是MODEM联络输出信号,数据终端就绪,低(高)有效,在USB配置完成之前作为配置输入引脚,可以外接4.7KΩ的下拉电阻在USB枚举期间产生默认的低电平。RTS#引脚MODEM联络输出信号,请求发送,低(高)有效。这两个MODEM联络信号是由计算机应用程序控制并定义其用途的,在软件下发点击下载按钮后,通常会给DTR#拉低、RTS拉高,然后延时一段时间后,拉高DTR#,RTS#恢复到低电平。
![3a5848196474561edd78f368082861b4.png](https://i-blog.csdnimg.cn/blog_migrate/915f8f437ce44b56a43d8391cfb15ffe.jpeg)
从原理图中可以看到这个两个引脚连接的逻辑电路如下:
![11349b16b73be7d4cd2d1330abf0f463.png](https://i-blog.csdnimg.cn/blog_migrate/385c7fc6698a5208417788879888d94c.jpeg)
根据该电路,可以知道当 DTR为1, RTS为0时, nRST复位引脚拉低,反之,GPIO0 引脚拉低,得到的逻辑关系图如下:
![87ca14958e309692e1ab4724b48dc48d.png](https://i-blog.csdnimg.cn/blog_migrate/d98792a2c3babec26d45e8e690710ddb.jpeg)
这样的化,在点击下载按钮后,CH340G芯片的DTR处于低电平,RTS处于高电平,此时ESP8266的GPIO0被拉低,复位RST信号为高,ESP8266进入下载模式,CH340G的DTR和RTS电平翻转后,RST为0,GPIO0变1,ESP8266进入Flash运行模式,程序正常运行。这样就实现了ESP8266自动下载。