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