Files
esp32-dev/components/esp32_constraints.md
2026-08-05 17:25:09 +08:00

2.7 KiB
Raw Permalink Blame History

ESP32 硬件约束与踩坑

芯片:esp32 | 类别:constraints | 信源: Espressif 官方文档

1. ADC2 与 WiFi 冲突 ⚠️ 最常踩的坑

  • 使用 WiFi 时 ADC2 完全不可用(ADC2 模块与 WiFi 射频共享内部资源)
  • 解决:需要 WiFi + ADC → 只能用 ADC1GPIO3239
  • 不使用 WiFi 时 ADC2 正常可用
  • 即使 WiFi 短暂关闭也无法可靠复用 ADC2(需完全禁用 WiFi 驱动)

2. GPIO12 (MTDI) — Flash 电压陷阱 ⚠️ 最危险的坑

  • GPIO12=LOW(默认):VDD_SDIO=3.3V → Flash 正常

  • GPIO12=HIGHVDD_SDIO=1.8V → Flash 无法读取 → 变砖

  • 绝对不能在 GPIO12 上接上拉电阻到 3.3V

  • 不能用 GPIO12 做 I2C SDA(开漏+上拉会让 GPIO12 变高)

  • 如果必须用 GPIO12,用外部 下拉 电阻

3. 仅输入引脚限制

  • GPIO3439: 无内部上拉/下拉,外部必须自行加
  • GPIO3439: 不能做数字输出
  • GPIO3439: 不能做 I2C/SPI MOSI/UART TX/PWM 输出

4. Flash/PSRAM 引脚占用

  • GPIO611: 内部 Flash SPI(所有模组)
  • GPIO1617: 内部 PSRAMWROVER 模组)

5. 供电约束

  • 工作电压: 2.73.6V,推荐 3.3V ±5%
  • WiFi TX 峰值电流: ~500 mA
  • 供电纹波: < 75 mVpp
  • EN 引脚: 不能浮空,需上拉到 VDD3P3_RTC
  • 推荐 LDO: ≥500 mA 输出能力

6. JTAG 引脚冲突

  • GPIO12 — MTDI, StrappingFlash 电压选择)
  • 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 开着 → 切换到 ADC1GPIO3239
  • GPIO3439 输出不工作: 它们是仅输入引脚 → 换个能做输出的 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 电容做消抖和上电延迟。