2.7 KiB
2.7 KiB
ESP32 硬件约束与踩坑
芯片:esp32 | 类别:constraints | 信源: Espressif 官方文档
1. ADC2 与 WiFi 冲突 ⚠️ 最常踩的坑
- 使用 WiFi 时 ADC2 完全不可用(ADC2 模块与 WiFi 射频共享内部资源)
- 解决:需要 WiFi + ADC → 只能用 ADC1(GPIO32–39)
- 不使用 WiFi 时 ADC2 正常可用
- 即使 WiFi 短暂关闭也无法可靠复用 ADC2(需完全禁用 WiFi 驱动)
2. GPIO12 (MTDI) — Flash 电压陷阱 ⚠️ 最危险的坑
-
GPIO12=LOW(默认):VDD_SDIO=3.3V → Flash 正常 ✅
-
GPIO12=HIGH:VDD_SDIO=1.8V → Flash 无法读取 → 变砖 ❌
-
绝对不能在 GPIO12 上接上拉电阻到 3.3V
-
不能用 GPIO12 做 I2C SDA(开漏+上拉会让 GPIO12 变高)
-
如果必须用 GPIO12,用外部 下拉 电阻
3. 仅输入引脚限制
- GPIO34–39: 无内部上拉/下拉,外部必须自行加
- GPIO34–39: 不能做数字输出
- GPIO34–39: 不能做 I2C/SPI MOSI/UART TX/PWM 输出
4. Flash/PSRAM 引脚占用
- GPIO6–11: 内部 Flash SPI(所有模组)
- GPIO16–17: 内部 PSRAM(WROVER 模组)
5. 供电约束
- 工作电压: 2.7–3.6V,推荐 3.3V ±5%
- WiFi TX 峰值电流: ~500 mA
- 供电纹波: < 75 mVpp
- EN 引脚: 不能浮空,需上拉到 VDD3P3_RTC
- 推荐 LDO: ≥500 mA 输出能力
6. JTAG 引脚冲突
- GPIO12 — MTDI, ⚡ Strapping(Flash 电压选择)
- GPIO13 — MTCK, 无冲突
- GPIO14 — MTMS, 无冲突
- GPIO15 — MTDO, ⚡ Strapping
7. 外部晶振
- 外部高速晶振:40 MHz(必须)
- 外部 RTC 晶振:32.768 kHz(可选,用于 Deep-sleep 精确计时)
8. 常见踩坑速查
- 用 GPIO12 做输出,板子不启动: GPIO12 被外部上拉 → Flash 1.8V → 避免在 GPIO12 上加外部上拉
- ADC 读数全是噪音: 用了 ADC2 且 WiFi 开着 → 切换到 ADC1(GPIO32–39)
- GPIO34–39 输出不工作: 它们是仅输入引脚 → 换个能做输出的 GPIO
- 上电后直接进下载模式: GPIO0 被外部拉低 → 检查 GPIO0 电路
- Deep-sleep 后 RTC 内存丢了: RTC Slow 内存只有 8KB 且需特殊 API
→ 使用
RTC_DATA_ATTR属性
上电时序要求
- t_STBL:>= 50 µs — VDD 电源轨稳定后到 EN (CHIP_PU) 拉高之间的最短等待时间
- t_RST:>= 50 µs — EN 拉低以触发硬件复位的最短保持时间
- t_H:>= 3 ms — EN 拉高后 Strapping 引脚值被内部锁存的时间,此后 Strapping 引脚恢复普通 GPIO 功能
CHIP_PU (EN) 引脚绝对不能浮空。推荐电路:EN 通过 10kΩ 上拉到 VDD,对地接 1µF 电容做消抖和上电延迟。