要让ESP8266/ESP32进入下载模式,需要在上电时拉低GPIO0,下载完成后又需要拉高GPIO0然后重新上电来正常运行。
一般在GPIO0上设置个按键来实现,但是每次都需要手动操作比较麻烦,其实官方有自动实现上面功能的电路,如下:

逻辑关系:

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 和RTS由谁控制的呢?
当然是由下载程序控制的了,在官方安装的库里面搜索esptool.py,在进行程序下载的时候会运行它,找到里面的代码段:

        # 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=HIGH1)   self._setRTS(True)   # EN=LOW, chip in resettime.sleep(0.1)if esp32r0_delay:# Some chips are more likely to trigger the esp32r0# watchdog reset silicon bug if they're held with EN=LOW# for a longer periodtime.sleep(1.2)self._setDTR(True)   # IO0=LOW2)   self._setRTS(False)  # EN=HIGH, chip out of resetif esp32r0_delay:# Sleep longer after reset.# This workaround only works on revision 0 ESP32 chips,# it exploits a silicon bug spurious watchdog reset.time.sleep(0.4)  # allow watchdog reset to occurtime.sleep(0.05)3)   self._setDTR(False)  # IO0=HIGH, done

代码中,设置为True是拉低,False是拉高。整个过程可以看成3步:

  1. 设置DTR = 1; RTS = 0, 此时Q1导通,Q2截止, EN = 0; IO0 = 1
  2. 设置DTR = 0; RTS = 1, 此时Q1截止,Q2导通, EN = 1; IO0 = 0
  3. 设置DTR = 1; RTS = 1, 此时Q1截止,Q2截止, EN = 1; IO0 = 1

可以看到:
第一步,拉低EN,ESP8266/ESP32会复位
第二步,拉高EN,拉低IO0,此时由于复位电路有电容,EN电压会缓慢升高。由于开机的时候IO0为低,所以ESP8266/ESP32会进入下载模式。
第三步,拉高IO0,此时ESP8266/ESP32已经在下载模式不受影响。

唯一需要注意的是,复位电路上的电容需要大一点,至少1uF:

参考:
https://www.muselab-tech.com/esp8266-esp32zi-dong-xia-zai-dian-lu-yuan-li-fen-xi/

ESP8266/ESP32自动下载电路分析相关推荐

  1. 论ESP32自动下载电路

    1.先来看看ESP32手册说明的启动运行方式 由上图可知,ESP32有SPI启动模式(正常启动)与下载启动模式两种,要实现程序自动下载肯定是需要上电时自动进入下载启动模式,方法就是将GPIO0与GPI ...

  2. esp32使用CH340N实现自动下载电路

    无解~~~hhh 从网上查了一上午,看了这两位大佬的文章: ESP8266/ESP32自动下载电路原理分析 - 知乎 (zhihu.com) (6条消息) 论ESP32自动下载电路_苏守坤的博客-CS ...

  3. Easy EDA #学习笔记09# | ESP32 一键下载电路

    问题描述 使用Arduino IDE烧录ESP32的时候,IDE会提示在60秒(好像是)内要按下板载BOOT键,否则就出现'-'___连串等待,超时报错,结束. MicroBlocks 废除 ESP3 ...

  4. 【Arduino+ESP32专题】CP2102串口自动下载电路

    目录 CP2102介绍 原理图设计 实现的时序 在设计功耗测试工装时,需要使用到ESP32模块.这个模块也是一个单片机,下载时需要使用串口通信功能.串口通信可以使用CH340芯片或是CP2102都是很 ...

  5. STC 纯硬件自动下载电路 - 三极管负脉冲电路

    或者叫它延时上升电路.利用USB - TTL 芯片的RTS# 或者DTR# 信号让单片机自动断电复位.比较完整的串口电路参见:STC 串口下载电路 - CH340G USB转串口以及漏电隔离 原理 开 ...

  6. STC 纯硬件自动下载电路 V2

    在之前那篇电路STC 纯硬件自动下载电路 - 三极管负脉冲电路 的基础上略微简化,把三极管换成了MOS 管,减少了一两个元件.原理的详细信息,比如RTS# 和DTR# 信号,参见那篇. 原理 主要的差 ...

  7. 利用CH340C制作MicroPython ESP8266,ESP32的下载器-改进型

    简 介: 本文给出了利用CH340C芯片制作ESP32,ESP8266下载器的方法,并进行了实测测试. 关键词: ESP32,CH340C,MicroPython,下载器 ▌01 ESP的MicroP ...

  8. 央行公开市场操作(正逆回购、MLF)数据自动下载及分析

    在做外汇掉期交易的时候,除了需要关注中美息差的走势,也需要了解市场流动性的松紧程度.央行的公开市场操作是市场流动性拼图里面非常重要的一块.实际工作中,有些资讯系统(例如Bloomberg)可以调出央行 ...

  9. STM32-CH340实现一键下载电路分析

    在程序下载这部分时借鉴了正点原子开发板上的一键下载电路,采用CH340G这款芯片设计. 我们通过RTS#和DTR#两个输出信号来控制STM32 IC的BOOT0和BOOT1两引脚来选择启动模式,如下表 ...

最新文章

  1. 南大周志华清华胡事民入围院士候选!计算机领域共计7人
  2. WPF 文本框添加水印效果
  3. Angular @HostListener 装饰器的使用笔记
  4. php默认语法,php基本语法
  5. 【华为云技术分享】MySQL Seconds_Behind_Master简要分析
  6. 无法推送到GitHub-一直说需要合并
  7. linux安全与优化
  8. Ambari Server 架构
  9. OpenCV相机帧率低以及花屏问题
  10. Linux操作系统应用领域详解
  11. 实战Java企业商品进销存管理系统
  12. 什么是服务器CC攻击,被CC攻击了服务器怎么防护?
  13. 沈阳移动打造“爱贝通”、“校讯通”业务助少年儿童健康成长
  14. (按色谱固定相基质分)液相色谱柱的分类
  15. Unity3D学习日记6
  16. RocketMQ的消费者消息重试和生产者消息重投
  17. ueditor 编辑器增加css样式_百度编辑器(uedtior)怎么更换样式文件
  18. Git 强制更新覆盖本地代码
  19. 人脸识别技术的简单认识(含原理)
  20. mysql重迭算法_一句话实现MySQL库中的重叠分组

热门文章

  1. html css 表格自动高度,html – 表格单元格(IE)中的Textarea CSS {height:100%}
  2. mysql远程连接设置_MySQL远程连接设置
  3. hive动态分区shell_Hive动态分区 参数配置及语法
  4. python类型提示模块包_(任何)python模块的类型提示是什么?
  5. python最简单的爬取邮箱地址_python简单爬虫,抓取邮箱
  6. 服务器支持热部署吗,热部署
  7. 3D打印神经电极有助于将大脑连接到电脑
  8. 类似人手的手部假肢相关研究登上Science子刊封面
  9. TensorFlow、Numpy中的axis的理解
  10. 仅480块GPU搞出万亿参数大模型!达摩院3个月打造,出手即商用