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
    +关注

    关注

    60

    文章

    7939

    浏览量

    264521
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355787
  • 串口I
    +关注

    关注

    0

    文章

    2

    浏览量

    5010
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44970
  • 下载电路
    +关注

    关注

    3

    文章

    7

    浏览量

    4287
收藏 人收藏

    评论

    相关推荐

    ESP8266自动下载电路设计方案

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

    ESP8266硬件设计指南的详细资料免费下载

    本手册提供了 ESP8266EX 系列的产品信息,包括 ESP8266EX 芯片,配置 ESP8266EX 芯片的 ESP-LAUNCHER 开发板,以及
    发表于 03-15 08:00 34次下载
    <b class='flag-5'>ESP8266</b>硬件设计指南的详细资料免费<b class='flag-5'>下载</b>

    ESP8266模块的的硬件设计指南资料免费下载

    本手册提供了ESP8266EX 系列的产品信息,包括 ESP8266EX 芯片,配置 ESP8266EX 芯片的 ESP-LAUNCHER 开发板,以及
    发表于 03-18 08:00 47次下载
    <b class='flag-5'>ESP8266</b>模块的的硬件设计指南资料免费<b class='flag-5'>下载</b>

    中移合物固件ESP8266软件下载

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

    ESP8266系列封装库资源下载

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

    Esp8266原理图分享

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

    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 24次下载

    ESP8266/ESP32自动下载原理

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

    使用MPU6050、ESP8266和Qubitro进行ART分析

    电子发烧友网站提供《使用MPU6050、ESP8266和Qubitro进行ART分析.zip》资料免费下载
    发表于 10-28 09:33 2次下载
    使用MPU6050、<b class='flag-5'>ESP8266</b>和Qubitro进行ART<b class='flag-5'>分析</b>

    使用ESP8266 WiFi模块DIY自动智能喂鱼器

    电子发烧友网站提供《使用ESP8266 WiFi模块DIY自动智能喂鱼器.zip》资料免费下载
    发表于 12-27 10:05 3次下载
    使用<b class='flag-5'>ESP8266</b> WiFi模块DIY<b class='flag-5'>自动</b>智能喂鱼器

    使用Arduino编程ESP8266 ESP 01

    电子发烧友网站提供《使用Arduino编程ESP8266 ESP 01.zip》资料免费下载
    发表于 02-07 14:30 8次下载
    使用Arduino编程<b class='flag-5'>ESP8266</b> <b class='flag-5'>ESP</b> 01

    ESP8266硬件

    目前市面上有关ESP8266模组有很多的种类,但是都是使用的乐鑫公司开发的ESP8266的wifi模组,而且种类也很多。
    的头像 发表于 02-10 14:25 4733次阅读
    <b class='flag-5'>ESP8266</b>硬件

    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 3900次阅读
    <b class='flag-5'>ESP8266</b><b class='flag-5'>自动</b><b class='flag-5'>下载</b>电路<b class='flag-5'>分析</b>