Page 1 of 1

[分享]ESP32-S2无法烧录下载固件的解决办法

Posted: Sat Jun 12, 2021 11:18 am
by abcrazy2020
我玩过 ESP8266 --> ESP32 --> ESP32-S2 这些开发板,前两个烧录都没出过问题。直到购买 ESP32-S2 开发板后,玩了一个星期,然后就烧录不进去了。买开发板的好处是插上USB线就能用,不存在接错线的情况。
烧写失败.png
烧写失败.png (226.73 KiB) Viewed 15934 times
上图是2020年9月28日出现问题那时特意截图的,点了几十次,才成功烧录一次。能烧进去可以肯定 FLASH 没坏。找不到原因,那时我也不再折腾了,一直到今天2021年6月12日,历时9个月,终于把问题解决了。


一、先按照官方说法,设置好烧录固件的条件
系统启动模式.png
系统启动模式.png (183.31 KiB) Viewed 15934 times


我用万用表测量过,GPIO0 和 GPIO46 直接接地,电压是 0V,串口 UART0_TX 每次都能显示进入下载准备状态。


二、烧写固件的接口

Code: Select all

ESP-ROM:esp32s2-rc4-20191025
Build:Oct 25 2019
rst:0x1 (POWERON),boot:0x0 (DOWNLOAD(USB/UART0/1/SPI))
waiting for download
一次偶然的想法,既然 UART0 不能烧录固件,那么用 UART1 烧录会不会成功?结果还真成功了!
激动之余,开始寻找原因,发现插着 UART1 时,UART0 也会瞬间恢复正常烧写!这是啥问题???


三、DownloadBoot模式会在四个下载接口中选择1个在使用的接口进行烧写
UART0_RX 是开发板焊接到 CH340 串口芯片上的,空闲时 UART0_RX = 3.3V。但 UART1_RX 是悬空的,空闲时为 UART1_RX = 1.5V( L必须小于0.8 H必须大于2, 0.8--2之间未定义)。如果官方处理得好,悬空的 UART1_RX 不应该在烧录固件接口的选择范围内,可偏偏这是个过不去的坑!



四、官方硬件设计指南
ESP32S2烧录问题解决.png
ESP32S2烧录问题解决.png (73.29 KiB) Viewed 15934 times
解决办法:GPIO18作为U1RXD,在芯片上电时是不确定状态,可能会影响芯片正常进入下载启动模式,需要在外部增加一个上拉电阻来解决。(短接 UART1_TX -- UART1_RX)