问题
ESP32-DevKit是设计了自动下载电路的,利用了串口的DTR
和RTS
信号来控制EN
和IO0引脚
以进入下载模式(尽管DTR
和RTS
本身的设计的作用不是这样)
这样设计的好处在于:通过板载的Micro USB接口下载程序时,既不需要按复位键,也不需要按BOOT键。
但实际使用时还是需要按BOOT键才能正常进入下载模式,工科男孙老师对这个问题做了具体的理论分析,其结论是:DTR和RTS信号有一定的延时,复位后**EN**
/**IO0**
信号拉低时间太短导致采样为高电平。
ESP32技术规格书中的 2.4 Strapping管脚 章节中有对复位时管脚采样的说明。可见应该在**EN**
信号的上升沿保持**IO0**
信号稳定。
在芯片的系统复位(上电复位、RTC 看门狗复位、欠压复位)放开的过程中,Strapping 管脚对电平采样并存储到锁存器中,锁存为“0”或“1”,并一直保持到芯片掉电或关闭。
回头翻看了一下开发板的说明文档,发现了有关 C15 的提示,这说明开发板设计时其实是考虑了采样时间太短的问题,而特意设计了电容用来延长信号的上升时间,但由于存在一些BUG,在实际生产的开发板中默认将C15移除了,观察一下开发板C15确实没有焊接。
实验波形
未焊接C15
焊接C15
结论
可以看到即使焊接了C15也只是滤除了干扰信号,但是EN
上升沿采样时IO0
还是没来得及拉低(晚了4.7us)。亲测还是无法自动下载。