经典深度分析!ESP8266/ESP32自动下载电路究竟是如何巧妙实现的

大鱼机器人 2022-10-10 14:52

01 



背景

前一段时间需要自己制作一片ESP32单板,成本和封装考虑,计划选择CH340E作为USB转串口芯片,ESP8266/ESP32的单板一般都有自动下载电路,用户无需按钮即可令单板自动进入下载模式实现固件烧录。
然而自动下载电路需要串口芯片支持DTR和RTS,CH340E却只有RTS信号,没有DTR信号,于是研究学习了一下自动下载电路的原理,准备用一些奇淫技巧解决CH340E的自动下载问题。
遗憾的是, 目前的中文互联网上,关于ESP8266/ESP32自动下载原理,所有能搜索到的解释大部分都是错误的,差之毫厘,谬以千里。
如果随意的假设,自以为是,最终得出的只能是一厢情愿的结论。

02 



下载模式


ESP8266/ESP32进入下载模式[1]的条件很简单:
EN(也称为RST)上升沿时候GPIO0保持为低电平,如下图所示:

03 



分析1

下载电路如下所示,其结构与RS触发器比较类似,注意EN和IO0信号均连接在三极管集电极,通过控制三极管只能拉低此信号。
若三极管截止,则此信号的状态由其他电路决定(一般来说,此类信号会默认接电阻上拉到VCC)
逻辑关系如下:
DTR = 0; RTS = 0, 此时Q1截止,Q2截止,EN = 1; IO0 = 1
DTR = 0; RTS = 1,此时Q1截止,Q2导通, EN = 1; IO0 = 0
DTR = 1; RTS = 0, 此时Q1导通,Q2截止, EN = 0; IO0 = 1
DTR = 1; RTS = 1, 此时Q1截止,Q2截止, EN = 1; IO0 = 1
真值表:
DTR
RST
EN
IO0




0
0
1
1
0
1
1
0
1
0
0
1
1
1
1
1
简单总结:当DTR和RTS同时为0或者同时为1时,三极管Q1和Q2均为截止状态,此时EN和IO0的状态由其他电路决定(内部/外部上拉电阻)
当不同时为0或者1时:
EN  = RTS
IO0 = DTR
注意这种逻辑下 EN和IO0是不可能同时为0的,然而进入下载模式则需要如下的序列:
1.  IO = 0; EN = 0
2.  IO = 0; EN 0 -> 1
从逻辑表上看是根本无法正常进入下载模式的,此为疑惑1

04 



分析2

再来继续分析一下esptool.py[2]里下载相关的代码
 # issue reset-to-bootloader:
        # 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.
        if mode != 'no_reset':
            self._setDTR(False)  # IO0=HIGH
        1)  self._setRTS(True)   # EN=LOW, chip in reset
            time.sleep(0.1)
        2)  self._setDTR(True)   # IO0=LOW
        3)  self._setRTS(False)  # EN=HIGH, chip out of reset
            time.sleep(0.05)
        4)  self._setDTR(False)  # IO0=HIGH, done
注意True是低电平,False为高电平,另外代码中的setDTR()和setRTS()两条语句之间虽然看上去紧挨着没有延时,然而由于这里是高级语言python,两条语句之间的延时并不能忽略
因此分析的时候必须依次的进行状态分析,以下分为四个阶段依次分析:
  1. 设置DTR = 1; RTS = 0, 此时Q1导通,Q2截止, EN = 0; IO0 = 1
  2. 设置DTR = 0; RTS = 0, 此时Q1截止,Q2截止, EN = 1; IO0 = 1
  3. 设置DTR = 0; RTS = 1, 此时Q1截止,Q2导通, EN = 1; IO0 = 0
  4. 设置DTR = 1; RTS = 1, 此时Q1截止,Q2截止, EN = 1; IO0 = 1
如果按照上面的代码分析来做结论,不论如何系统也是不可能进入下载模式的
EN和IO0首先不可能同时为0,EN由0->1的上升沿IO0也并不为0,再次确认之前的疑惑,那么系统究竟是如何进入下载模式的呢?

05 



答案

问题的答案实际在另外一部分电路,原理其实非常简单:EN信号连接在一个电容充放电电路上
CHIP_PU即EN,代码中2-3阶段之后会延时一段时间,而EN由于电容充电,电平并不会立马变为高电平,而是缓慢上升,以如上参数为例计算,同时参考芯片电气参数特性
高电平为0.75VDD,则达到高电平按照如下公式计算:
解得t = 14ms,即EN经过14ms上升到电平1,在实际代码中延时了50ms的等待时间,以确保延时后EN处于电平1的状态
另外需要提的是,阶段1需要等待一段时间,让电容放电,保证EN电平下降到电平0,才能保证系统正常复位,在代码中预留了100ms的等待时间,同样可以通过电容放电公式计算出放电到电平0需要的时间,感兴趣的朋友可以自行根据公式计算确认。
感谢大家,关于ESP32的学习,希望大家Enjoy!

参考资料

[1]

ESP32下载模式: https://www.esp32.com/viewtopic.php?t=5731

[2]

关于esptool下载逻辑: https://github.com/espressif/esptool/issues/136


本文经作者muselab授权原创发表,感兴趣的小伙伴可以关注博客muselab 与 bilibili账号:主音-x

-END-

往期推荐:点击图片即可跳转阅读

谁是最强打工人?这类开发岗位平均月薪超3万元!


搞技术,如何写好技术文档?


智能车与马克思主义


美国为什么不用芯片技术卡俄罗斯的脖子?

大鱼机器人 一个专注于机器人技术,单片机,嵌入式系统,智能家居,智能设备,PCB设计,IT最新动态的自媒体。此外,还有海量学习资源等你来领取。作者:张巧龙,个人微信号:well_xiaolong。欢迎关注公众号,名称:大鱼机器人,公众号ID:All_best_xiaolong
评论 (0)
  • 2025年世界移动通信大会(MWC 2025)期间,紫光展锐联合移远通信,正式发布了全面支持5G R16特性的模组RG620UA-EU,以强大的灵活性和便捷性赋能产业。展锐芯加持,关键性能优异RG620UA-EU模组基于紫光展锐V620平台开发,搭载4核Arm®Cortex®-A55 CPU,符合3GPP R16标准,在传输速率、计算能力、R16关键特性等方面表现优异。该模组配备了丰富的功能接口,包括USXGMII、PCIe3.0、USB3.1、SDIO3.0、UART、SPI、I2S、I2C、
    紫光展锐 2025-03-04 19:54 163浏览
  • 压力传感器是指能感受压力信号,并能按照一定的规律将压力信号转换成可用的电信号的器件或装置。压力传感器通常由压力敏感元件和信号处理单元组成,按不同测压方法,压力传感器可分为表压传感器、差压传感器和绝压传感器;按不同测压原理,压力传感器又可分为常见的压阻式压力传感器、电容式压力传感器、扩散硅压力传感器、蓝宝石压力传感器与陶瓷压力传感器等。作为工业自动化与智能化的关键器件,压力传感器在各类工业设备中扮演着不可或缺的角色,其通过精确感知和转换物理压力信号,为工业物联网(IIoT)构建起了高效精确的“压力
    华普微HOPERF 2025-03-03 10:19 251浏览
  • 文/Leon编辑/cc孙聪颖在中国制造转向“智造”的过程中,一批80、90后企业创始人闪亮登场,用互联网思维进行创新,在全球市场取得了傲人的成绩,如大疆汪滔、宇树科技王兴兴、影石Insta360刘靖康,都是各自领域的佼佼者。在引领全球市场后,独角兽企业的下一步自然是上市。据悉,中国证监会于2025年2月26日正式批复影石Insta360创新科技股份有限公司(以下简称影石Insta360)的IPO申请,拟在上交所科创板上市,中信证券为保荐机构,拟募集资金4.64亿元。影石Insta360主要从事手
    华尔街科技眼 2025-03-03 18:40 303浏览
  • 在2024年的科技征程中,具身智能的发展已成为全球关注的焦点。从实验室到现实应用,这一领域正以前所未有的速度推进,改写着人类与机器的互动边界。这一年,我们见证了具身智能技术的突破与变革,它不仅落地各行各业,带来新的机遇,更在深刻影响着我们的生活方式和思维方式。随着相关技术的飞速发展,具身智能不再仅仅是一个技术概念,更像是一把神奇的钥匙。身后的众多行业,无论愿意与否,都像是被卷入一场伟大变革浪潮中的船只,注定要被这股汹涌的力量重塑航向。01为什么是具身智能?为什么在中国?最近,中国具身智能行业的进
    艾迈斯欧司朗 2025-02-28 15:45 423浏览
  • 在当今数据驱动的世界,内存解决方案需要的不仅仅是原始性能。贞光科技代理的紫光国芯全系列存储产品提供定制化解决方案,解决各行业面临的独特挑战,同时确保可靠性、兼容性和面向未来的创新。打破“唯性能论”,迎接多元化存储需求一直以来,高性能似乎成了衡量存储产品的唯一标准。 没错,速度快、效率高,固然重要。 但话说回来, 难道所有应用场景,都对性能有着“变态”级的需求吗? 答案显然是否定的。 就像穿鞋一样,合脚才是最重要的, 一味追求“跑得快”, 反而容易磨脚,甚至崴脚!在实际应用中,各行各业对存储的需求
    贞光科技 2025-03-03 17:05 200浏览
  • 2020年,世界经济论坛发布了《将来工作报告》,预言了人工智能 (AI)、机器人和自动化将在五年内对劳动力市场带来反天性的变化。最震撼人心的预测是:85亿个工位将消失,97亿个新工位将被创造。这个信息给我们提出了一些骂烈的疑问:AI究竟会消灭哪些工作?管理者的规划依然重要吗?AI会代替我们的管理之路吗?AI不会替代管理者,会进一步增强他们随着AI在机器学习、自然语言处理和预测分析方面的进步,许多人对AI接管事务表示担心。但研究显示,大多数情况下,AI将作为工具与管理者协同完成任务,而不是替换他们
    优思学院 2025-03-01 12:22 279浏览
  • 在现代各种工业设备的复杂电路中,栅极驱动芯片虽不常被大众提及,却扮演着至关重要的角色。栅极驱动芯片是低压控制器和高压电路之间的缓冲电路,主要用于放大控制器的控制信号,从而令功率器件实现更快速高效的导通和关断,是保障电子设备稳定、高效运行的核心元件之一。驱动芯片的类型(按结构划分)电力电子应用基于功率器件技术,而无论是MOSFET、IGBT,还是SiC MOSFET等功率器件都需要相应的栅极驱动芯片(Gate Driver IC)。选择一款合适的驱动芯片,不仅可以简化相应电气系统的设计复杂度,还可
    华普微HOPERF 2025-03-04 14:40 175浏览
  • DeepSeek的风还吹到了TV圈。去年,人工智能领域迎来了重大突破,然而对大多数人而言,它依旧是个颇为模糊的概念。即便是如ChatGPT这样的产品,给人最直接的感受也仅仅是一个相较于Siri更为智能的语音交互工具。直至今年,DeepSeek的惊艳亮相,人们真正感受到了生成式人工智能在实际应用中的价值。在这股浪潮的推动下,电视厂商们也纷纷跟上了脚步。2月11日,海信电视宣布正式接入DeepSeek,并支持满血R1和V3版本自由切换,成为行业首个搭载深度思考智能体的电视品牌。长虹电视紧随其后,宣布
    刘旷 2025-03-03 09:55 377浏览
  • 在2025年世界移动通信大会(MWC 2025)期间,紫光展锐携手美格智能正式推出了基于紫光展锐V620平台的第二代5G Sub6G R16模组SRM812,以超高性价比方案,全面赋能合作伙伴,加速5G规模化应用在各垂直领域的全面落地。展锐芯赋能,全面支持R16关键特性SRM812模组基于紫光展锐推出的V620平台设计,V620是业界首款全面支持R16的5G宽带物联网芯片平台,具备强劲的射频能力和全网通特性。得益于此,SRM812成为业界首批全面支持5G R16宽带物联网特性的芯片平台。SRM8
    紫光展锐 2025-03-04 19:55 166浏览
  • 中小企业(SME)对全球经济的贡献日益显著,不仅是发展中国家的经济支柱,通常还是其经济快速增长的关键部分。中小企业的其他关键作用还包括促进创业和创新,从而保证竞争力。从这一点来说,中小企业助力了许多大公司,并对世界经济做出重大贡献。本章将介绍中小企业的定义和经济份额,分析其特点以及它们与大型企业的区别。中小企业的定义任何组织在制订计划和策略时,最重要的都是了解业务的性质和类型。全球各企业的分类主要基于它们的体量,例如固定资产、产值、资金和员工数量。从大的分类来讲,大公司被划归为一种类型,而所有其
    优思学院 2025-03-04 11:07 157浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦