0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP8266的自动下载原理分析

CHANBAEK 来源: 非典型技术宅 作者: 非典型技术宅 2023-11-24 09:31 次阅读

串口自动下载电路实质为:上位机通过控制 USB 转串口芯片 DTR、RTS 引脚电平,配合硬件电路使进入芯片下载模式

自动下载原理

串口下载的需要依赖 bootload,其流程为在芯片中先下载一个 bootload , 进入 bootload 后检查是否进入下载模式,如果未进入下载程序,则跳转到实际程序运行。

根据进入 bootload 的方式可分为两种,一种为进入 bootload 由外部引脚控制,例如 STM32ESP8266
一种是系统复位时默认进入 bootload ,例如 STC 的 51 系列和一些自定义的 bootload 。

以 STM32 为例,在芯片出厂时在其系统存储区烧录了一个 bootload ,并通过其 boot0 和 boot1 引脚电平进行选择复位后进入的存储器。

图片

对于自定义 bootload ,只能在系统复位时进入 bootload ,然后在 bootload 中进行进一步判断处理。

自动下载功能需要硬件和软件两部分支持,软件部分包括由上位机提供的串口下载协议和串口流控信号。自动下载硬件电路将串口流控信号,转换为对于芯片所需的复位信号和boot引脚信号。

在串口下载的上位机程序中,需要控制串口的 DTR(Data Terminal Ready)、RTS(Request To Send) 引脚提供下载开始信号,然后由硬件电路转换为对应的复位信号和 boot 信号。

ESP8266 的自动下载原理分析

以 ESP8266 为例,ESP8266 进入下载模式的条件为 GPIO0 引脚为低电平时,复位芯片( RSTEN 上升沿)。 即 GPIO0 = 0 RST = 0 -> 1

NodeMCU 的自动下载电路如下如所示:

图片

GPIO0 和 RST 默认电平为高电平,且需要注意到 RST 引脚有一个复位电路。

其复位延时时间约为 1.15 ms。

其自动复位电路类似三极管双稳态电路:

  1. 当 DTR = 1,RTS = 1 时, VT1截止,VT2截止, RST = 1; GPIO0 = 1
  2. 当 DTR = 0,RTS = 0 时, VT1截止,VT2截止, RST = 1; GPIO0 = 1
  3. 当 DTR = 1,RTS = 0 时, VT1导通,VT2截止, RST = 0; GPIO0 = 1
  4. 当 DTR = 0,RTS = 1 时, VT1截止,VT2导通, RST = 1; GPIO0 = 0

其真值表为:

图片

在状态 3) 下载电路 RST 引脚为低,进入复位模式;
在状态 4) 下载电路 GPIO0 引脚为低。

由于 RST 引脚带有复位电路,在 RST 引脚电平变为高电平后,会有一段时间延时才能恢复高电平。所以只需要在上位机代码中控制 DTR&RTS 引脚电平,依次进入状态3和状态4,ESP8266 就可以进入下载模式。

查看 ESP8266 下载工具 pytool.py 代码:

# 已删减无关代码,原代码 https://hub.fastgit.org/espressif/esptool/blob/master/esptool.py#L570
# RTS = either CH_PD/EN or nRESET (both active low = chip in reset
# DTR = GPIO0 (active low = boot to flasher)

# DTR & RTS are active low signals,
# ie True = pin @ 0V, False = pin @ VCC.
# 进入状态 3)
self._setDTR(False)  # IO0=HIGH
self._setRTS(True)   # EN=LOW, chip in reset
time.sleep(0.1)
# 进入状态 4)
self._setDTR(True)   # IO0=LOW
self._setRTS(False)  # EN=HIGH, chip out of reset
time.sleep(0.05)
# 恢复 Flash 启动模式
self._setDTR(False)  # IO0=HIGH, done

使用逻辑分析仪抓取的下载时的 DTR、RTS 信号如下图所示。

图片

其中红框所标识的就是状态 3 -> 4 的变化。由于执行代码也需要时间,实际状态变化并不是由状态3直接进入状态4,但是状态1和2并不会对下载电路产生影响。

其他

对于不需要 boot 引脚即可进入下载模式的bootload,其自动下载同样是使用上位机控制 DTRRTS 引脚,只不过它只需要使用一个引脚让芯片在下载前进入复位模式即可。

通过上面分析,就可以解释为什么有时在使用串口软件打开串口后,芯片会自动复位。
这是因为在串口软件中默认开启了流控,其流控引脚导致芯片进入复位状态,所以只需关闭串口软件流控,即可避免该现象发生。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    59

    文章

    7436

    浏览量

    258209
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348809
  • 串口I
    +关注

    关注

    0

    文章

    2

    浏览量

    5002
  • ESP8266
    +关注

    关注

    50

    文章

    947

    浏览量

    43965
  • 下载电路
    +关注

    关注

    3

    文章

    7

    浏览量

    4251
收藏 人收藏

    评论

    相关推荐

    ESP8266自动下载电路设计方案

    前言使用过51单片机的朋友会清楚:51单片机在烧写程序的时候需要断一下电再上电;使用过STM32单片机的朋友会清楚:烧写程序时需要设置Boot模式。ESP8266在烧写程序时也需要手动设置模式,STM32的ISP自动下载电路都有
    的头像 发表于 09-20 10:04 3441次阅读

    ESP8266自动下载电路相关资料下载

    硬件环境乐鑫官方开发板ESP8266-DevKitC板载自动下载电路如下开发板入门指南的描述如下显然,选择自动下载功能后,RTS就是Auto
    发表于 01-25 08:22

    ESP8266一键烧写软件下载

    ESP8266一键烧写软件下载
    发表于 11-22 17:00 26次下载

    如何将ESP8266连接到WiFi

    在之前的ESP8266项目中,我简要介绍了ESP8266 WiFi模块,如何开始使用ESP8266和Arduino,ESP8266 ESP-
    的头像 发表于 07-29 11:32 8.5w次阅读
    如何将<b class='flag-5'>ESP8266</b>连接到WiFi

    怎样使用ESP8266 Flasher和Programmer烧写ESP8266 AT固件

    选择要连接的COM端口ESP8266 Flasher和Programmer + ESP8266 Wifi串行收发器模块。将BAUDRATE设置为115200。
    的头像 发表于 11-18 17:58 2w次阅读

    中移合物固件ESP8266软件下载

    中移合物固件ESP8266软件下载
    发表于 05-06 10:09 8次下载

    ESP8266系列封装库资源下载

    ESP8266系列封装库资源下载
    发表于 05-20 16:04 0次下载

    Esp8266原理图分享

    Esp8266原理图免费下载
    发表于 06-18 11:21 467次下载

    ESP8266和Node MCU扫盲与开发入门

    下图是网上出现最频繁的NODE MCU开发板,由ESP8266模块、USB转TTL芯片、5V转3.3V的LDO、自动下载电路等组成。ESP8266指的是乐鑫推出的
    发表于 10-26 09:06 30次下载
    <b class='flag-5'>ESP8266</b>和Node MCU扫盲与开发入门

    ESP8266 PCB的模块封装库下载

    ESP8266 PCB的模块封装库下载
    发表于 10-28 14:50 165次下载

    ESP8266自动下载电路分析

    硬件环境乐鑫官方开发板ESP8266-DevKitC板载自动下载电路如下开发板入门指南的描述如下显然,选择自动下载功能后,RTS就是Auto
    发表于 11-30 17:51 9次下载
    <b class='flag-5'>ESP8266</b><b class='flag-5'>自动</b><b class='flag-5'>下载</b>电路<b class='flag-5'>分析</b>

    串口2 esp8266测试程序下载

    串口2 esp8266测试程序下载
    发表于 12-30 10:38 21次下载

    ESP8266/ESP32自动下载原理

    前一段时间需要自己制作一片ESP32单板,成本和封装考虑,计划选择CH340E作为USB转串口芯片,ESP8266/ESP32的单板一般都有自动下载
    的头像 发表于 10-10 15:06 3630次阅读

    NodeMCU家庭自动化(ESP8266)

    电子发烧友网站提供《NodeMCU家庭自动化(ESP8266).zip》资料免费下载
    发表于 07-10 14:59 0次下载
    NodeMCU家庭<b class='flag-5'>自动</b>化(<b class='flag-5'>ESP8266</b>)

    ESP8266自动下载电路分析

    网上找到了一些解释,然而并不能让我信服……可能大多参考了正点原子的自动下载电路原理,但人家的自动下载功能也需要 mcu-isp 软件配合才能实现啊……等等,吐槽之中获得灵感,
    的头像 发表于 11-25 09:29 1001次阅读
    <b class='flag-5'>ESP8266</b><b class='flag-5'>自动</b><b class='flag-5'>下载</b>电路<b class='flag-5'>分析</b>