ESP8266/ESP32自动下载电路分析
要让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步:
- 设置DTR = 1; RTS = 0, 此时Q1导通,Q2截止, EN = 0; IO0 = 1
- 设置DTR = 0; RTS = 1, 此时Q1截止,Q2导通, EN = 1; IO0 = 0
- 设置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自动下载电路分析相关推荐
- 论ESP32自动下载电路
1.先来看看ESP32手册说明的启动运行方式 由上图可知,ESP32有SPI启动模式(正常启动)与下载启动模式两种,要实现程序自动下载肯定是需要上电时自动进入下载启动模式,方法就是将GPIO0与GPI ...
- esp32使用CH340N实现自动下载电路
无解~~~hhh 从网上查了一上午,看了这两位大佬的文章: ESP8266/ESP32自动下载电路原理分析 - 知乎 (zhihu.com) (6条消息) 论ESP32自动下载电路_苏守坤的博客-CS ...
- Easy EDA #学习笔记09# | ESP32 一键下载电路
问题描述 使用Arduino IDE烧录ESP32的时候,IDE会提示在60秒(好像是)内要按下板载BOOT键,否则就出现'-'___连串等待,超时报错,结束. MicroBlocks 废除 ESP3 ...
- 【Arduino+ESP32专题】CP2102串口自动下载电路
目录 CP2102介绍 原理图设计 实现的时序 在设计功耗测试工装时,需要使用到ESP32模块.这个模块也是一个单片机,下载时需要使用串口通信功能.串口通信可以使用CH340芯片或是CP2102都是很 ...
- STC 纯硬件自动下载电路 - 三极管负脉冲电路
或者叫它延时上升电路.利用USB - TTL 芯片的RTS# 或者DTR# 信号让单片机自动断电复位.比较完整的串口电路参见:STC 串口下载电路 - CH340G USB转串口以及漏电隔离 原理 开 ...
- STC 纯硬件自动下载电路 V2
在之前那篇电路STC 纯硬件自动下载电路 - 三极管负脉冲电路 的基础上略微简化,把三极管换成了MOS 管,减少了一两个元件.原理的详细信息,比如RTS# 和DTR# 信号,参见那篇. 原理 主要的差 ...
- 利用CH340C制作MicroPython ESP8266,ESP32的下载器-改进型
简 介: 本文给出了利用CH340C芯片制作ESP32,ESP8266下载器的方法,并进行了实测测试. 关键词: ESP32,CH340C,MicroPython,下载器 ▌01 ESP的MicroP ...
- 央行公开市场操作(正逆回购、MLF)数据自动下载及分析
在做外汇掉期交易的时候,除了需要关注中美息差的走势,也需要了解市场流动性的松紧程度.央行的公开市场操作是市场流动性拼图里面非常重要的一块.实际工作中,有些资讯系统(例如Bloomberg)可以调出央行 ...
- STM32-CH340实现一键下载电路分析
在程序下载这部分时借鉴了正点原子开发板上的一键下载电路,采用CH340G这款芯片设计. 我们通过RTS#和DTR#两个输出信号来控制STM32 IC的BOOT0和BOOT1两引脚来选择启动模式,如下表 ...
最新文章
- 南大周志华清华胡事民入围院士候选!计算机领域共计7人
- WPF 文本框添加水印效果
- Angular @HostListener 装饰器的使用笔记
- php默认语法,php基本语法
- 【华为云技术分享】MySQL Seconds_Behind_Master简要分析
- 无法推送到GitHub-一直说需要合并
- linux安全与优化
- Ambari Server 架构
- OpenCV相机帧率低以及花屏问题
- Linux操作系统应用领域详解
- 实战Java企业商品进销存管理系统
- 什么是服务器CC攻击,被CC攻击了服务器怎么防护?
- 沈阳移动打造“爱贝通”、“校讯通”业务助少年儿童健康成长
- (按色谱固定相基质分)液相色谱柱的分类
- Unity3D学习日记6
- RocketMQ的消费者消息重试和生产者消息重投
- ueditor 编辑器增加css样式_百度编辑器(uedtior)怎么更换样式文件
- Git 强制更新覆盖本地代码
- 人脸识别技术的简单认识(含原理)
- mysql重迭算法_一句话实现MySQL库中的重叠分组
热门文章
- html css 表格自动高度,html – 表格单元格(IE)中的Textarea CSS {height:100%}
- mysql远程连接设置_MySQL远程连接设置
- hive动态分区shell_Hive动态分区 参数配置及语法
- python类型提示模块包_(任何)python模块的类型提示是什么?
- python最简单的爬取邮箱地址_python简单爬虫,抓取邮箱
- 服务器支持热部署吗,热部署
- 3D打印神经电极有助于将大脑连接到电脑
- 类似人手的手部假肢相关研究登上Science子刊封面
- TensorFlow、Numpy中的axis的理解
- 仅480块GPU搞出万亿参数大模型!达摩院3个月打造,出手即商用