【ESP32】小心 GPIO12 影响烧写程序

在使用ESP32时发现无法烧写程序,经过一系列的思考后发现是 GPIO12 导致的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 34:86:5d:88:88:88
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Warning: Could not auto-detect Flash size (FlashID=0xffffff, SizeID=0xff), defaulting to 4MB
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x0004cfff...
Compressed 17104 bytes to 11191...

A fatal error occurred: Timed out waiting for packet content

看起来没有检测到 Flash,无法读取出 FlashID,感觉是芯片坏了,换了芯片后仍然这样

用烧写器烧写核心板是没有问题的

思考是不是因为外围的连线导致配置了某种开机模式导致找不到 FLASH,于是查找数据手册

发现 GPIO12 的另外一个名字:MTDI,这是个JTAG的接口,顺着这个名字看下去,发现有个
Strapping 管脚的表,发现里面的 MTDI 默认是下拉的,使 VDD_SDIO 为 3.3V,若是
外部上拉后,则 VDD_SDIO 变为了 1.8V

应该就是外围电路的上拉电阻导致 GPIO12 被拉高然后 FLASH 工作在了 1.8V 电压上,所以才会找不到 FLASH

另外还需要注意的是 除了 GPIO0 和 GPIO2 是上电工作模式脚之外, GPIO5 和 GPIO15 也有可能会导致无法运行,硬件设计时需要多看看数据手册

【ESP32】小心 GPIO12 影响烧写程序

https://biteax.com/6178b389.html

作者

石志超

发布于

2021-11-28

更新于

2023-09-27

许可协议