ESP32S3串口自动下载电路解析,以及串口调试中无法复位问题

您所在的位置:网站首页 ESP32摄像头一直复位 ESP32S3串口自动下载电路解析,以及串口调试中无法复位问题

ESP32S3串口自动下载电路解析,以及串口调试中无法复位问题

2024-07-16 21:47| 来源: 网络整理| 查看: 265

ESP32S3串口自动下载电路解析,以及串口调试中无法复位问题

在ESP32系列或其他开发板中我们时常能看到如下电路

自动下载

也就是所谓的自动下载电路

其中EN为ESP32S3的使能引脚,高电平时芯片使能,低电平时芯片关闭

IO0则属于Strapping引脚(其余Strapping引脚为IO3,IO45,IO46),模组每次上电或复位时,都需要一些初始配置参数,如加载模组的启动模式、flash存储器的电压等。这些参数 通过strapping 管脚控制。

如下图

在这里插入图片描述

当芯片从复位状态释放时,GPIO0和GPIO46共同决定了芯片的启动模式

其中在Joint Download Boot 模式下,用户可通过 USB 或UART0 接口将二进制文件下载至flash,或将二进制文件 下载至SRAM并运行SRAM中的程序,而我们使用自动下载电路的目的就是为了让芯片进入这个模式下。

值得一提的是, GPIO0、GPIO45 和 GPIO46 在芯片复位时连接芯片内部的弱上拉/下拉电阻,如果在芯片外部这些引脚没有连接其他玩意的话,那么它们默认值应该是这样的

在这里插入图片描述

也就是说我们要做的只是将IO0也拉低(而且得在芯片使能前,否则来不及拉低就会进入另外一个模式)

如何实现?

现在我们将目光再次切换回这张图上

在这里插入图片描述

不去考虑这些引脚的含义,仅仅关注这个电路

DTR和RTS的组合有如下四种

DTRRTS结果00两个Q2,Q3都截止,EN,IO0皆处于默认状态,及EN=1,IO0=101Q2截止,Q3导通,EN=1,IO0= DTR=010Q2导通,Q3截止,EN=RTS=0,IO0=111Q2,Q3都截止(UBE=0),EN=1,IO0=1

我们所要做的就是当EN由低电平变为高电平的时候,IO始终保持低电平的状态。

这一步可以拆解成两个状态即

EN =0 ,IO0=0EN =1,IO=0

第二步只需DTR =0,RTS=1即可办到,关键是第一步似乎无论DTR,RTS怎么组合都无法满足

事情似乎已经陷入僵局。。。。。。

然而伟大的串口之神早已为我们指明了方向!!!

在观摩乐鑫官方的开发板时,看到这一细节

在这里插入图片描述

芯片的EN引脚与地之间连接了一个0.1uf 的电容。

起先我并不在意,只当该电容只是简单的用于滤波,然而当我结合esptool中关于芯片复位部分时才明白其中深意。

esptool是啥?

在前面配置ESP32S3的编译环境时,曾看到过esptool,这是乐鑫芯片的工具集,可以做许多事情,例如:

读取、写入、擦除和验证存储在闪存中的二进制数据。读取芯片特征和其他相关数据,例如MAC地址或闪存芯片ID。读取和写入一次性可编程的 efuse。准备用于刷机的二进制可执行映像。分析、组合和合并二进制图像。

如下是乐鑫官方对其编写的文档

esptool

当然这并不重要

现在让我们找到这个esptool,点开其中的reset.py,看看在芯片复位时到底做了些什么

在这里插入图片描述

上面的代码一共干了这么几件事

DTR=1 RTS=0,此时IO0=1,EN =0,芯片复位短暂延时(0.1s)DTR=0,RTS=1 ,此时IO0=0,EN=1短暂延时(0.05s)DTR=1,此时IO0=1

关键在于步骤1和3之间,由于EN与地之间电容的存在,当从步骤1到步骤3时,EN需要先给电容充电从而导致变成高电平的时间延后。

即IO0先变成低电平,EN才会产生一个上升沿,这样就解决了问题。

另一个小问题

在我使用sscom串口调试器对esp32s3进行串口开发时,发现当我按下开发板上的复位按键时,开发板并没有复位而是进入了等待下载模式。

在这里插入图片描述

这是由于勾选了sscom中的DTR导致

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3