打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ESP8266自动下载电路分析
硬件环境如下:
乐鑫官方开发板 ESP8266-DevKitC
板载自动下载电路如下:
开发板入门指南的描述如下:

显然,选择自动下载功能后,RTS 就是 Auto_RTS


此处,ESP8266 的自动下载涉及 CP2102 的两个引脚,DTR 和 RTS


DTR 引脚是 MODEM 联络输出信号,数据终端就绪,低有效;
RTS 引脚也是 MODEM 联络输出信号,请求发送,低有效;
注意,所谓 MODEM 联络信号都是由计算机应用程序控制并定义其用途的

ESP8266工作模式

下载模式:芯⽚启动时,若 IO0 为低电平,芯⽚会进⼊下载模式;
运⾏模式:芯⽚启动时,若 IO0 为⾼电平,芯⽚会进⼊运⾏模式;


上图的逻辑关系如下:


显然,这种逻辑关系下 EN 和 IO0 不可能同时为 0,
然而,ESP8266 进入下载模式却需要如下条件:


那么,问题来了,单靠以上电路 ESP8266 无法进入下载模式。

网上找到了一些解释,然而并不能让我信服……可能大多参考了正点原子的自动下载电路原理,但人家的自动下载功能也需要 mcu-isp 软件配合才能实现啊……等等,吐槽之中获得灵感,ESP8266 不也是有下载软件的嘛,就算在命令行下不也是有下载脚本的嘛。

显然,下载软件是看不出所以然的。

那么,找到官方 SDK 中的下载脚本源码

ESP8266_RTOS_SDK/components/esptool_py/esptool/esptool.py

隐藏的好深,看程序的注释其实就差不多了

利用 RTS 控制 EN 或 nRST,因为它们都是低电平触发芯片复位;
利用 DTR 控制 IO0,低电平启动则进入下载模式;

注意,此处 True 为低电平,False 为高电平
程序解析如下:

设置 DTR = 1,RTS = 0,此时 Q1 导通,Q2 截止,EN = RTS = 0,IO0 = 1,芯片掉电复位;

延时 100ms,为了确保 EN 为低电平,原因嘛很简单,因为 EN 附近有一个 RC 电路,充放电都是需要时间的


例如低电平为 0.25VCC,则由高电平放电至低电平需要的时间可按如下公式计算:

此处,t ≈ 0.29ms,延时 100ms 绰绰有余。

设置 DTR = 0,RTS = 1,此时 Q1 截止,Q2 导通,EN = 1,IO0 = 0,芯片重新上电,由于 IO0 为低电平,芯片进入下载模式;

延时 50ms,为了确保 EN 为高电平
同理,

此处,t ≈ 1.39ms,延时 50ms 绰绰有余

设置 DTR = 1,RTS = 1,此时 Q1 导通,Q2 导通,EN = 1,IO0 = 1,确保下载完成后再复位芯片正常运行;

补充一下,不点击下载按钮的话,实际测试 DTR 和 RTS 均为高电平,也就是说不会影响 ESP8266 芯片的正常运行。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
经典深度分析!ESP8266/ESP32自动下载电路究竟是如何巧妙实现的
STM32一键下载电路详解
STM32 USART1一键下载电路
RS232 RS485接口原理图_难得糊涂
MicroPython入门指南
[分享] esp32 的启动过程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服