From bfabe83832897ebd8d8f212ac89db8ec8c5a1cb2 Mon Sep 17 00:00:00 2001 From: pidan <273612724@qq.com> Date: Wed, 5 Aug 2026 17:12:34 +0800 Subject: [PATCH] Initial commit: knowledge base --- INDEX.md | 172 +++++++++++++++++++++++ README.md | 16 +++ drivers/esp32-c2_peripherals.md | 68 +++++++++ drivers/esp32-c3_peripherals.md | 33 +++++ drivers/esp32-c5_peripherals.md | 66 +++++++++ drivers/esp32-c6_peripherals.md | 32 +++++ drivers/esp32-h2_peripherals.md | 31 +++++ drivers/esp32-p4_peripherals.md | 47 +++++++ drivers/esp32-s2_peripherals.md | 33 +++++ drivers/esp32-s3_peripherals.md | 44 ++++++ drivers/esp32_peripherals.md | 42 ++++++ esp32_fail_log.md | 235 ++++++++++++++++++++++++++++++++ gpio/esp32-c2_gpio.md | 93 +++++++++++++ gpio/esp32-c3_gpio.md | 96 +++++++++++++ gpio/esp32-c5_gpio.md | 93 +++++++++++++ gpio/esp32-c6_gpio.md | 88 ++++++++++++ gpio/esp32-h2_gpio.md | 76 +++++++++++ gpio/esp32-p4_gpio.md | 97 +++++++++++++ gpio/esp32-s2_gpio.md | 112 +++++++++++++++ gpio/esp32-s3_gpio.md | 108 +++++++++++++++ gpio/esp32_gpio.md | 138 +++++++++++++++++++ 21 files changed, 1720 insertions(+) create mode 100644 INDEX.md create mode 100644 README.md create mode 100644 drivers/esp32-c2_peripherals.md create mode 100644 drivers/esp32-c3_peripherals.md create mode 100644 drivers/esp32-c5_peripherals.md create mode 100644 drivers/esp32-c6_peripherals.md create mode 100644 drivers/esp32-h2_peripherals.md create mode 100644 drivers/esp32-p4_peripherals.md create mode 100644 drivers/esp32-s2_peripherals.md create mode 100644 drivers/esp32-s3_peripherals.md create mode 100644 drivers/esp32_peripherals.md create mode 100644 esp32_fail_log.md create mode 100644 gpio/esp32-c2_gpio.md create mode 100644 gpio/esp32-c3_gpio.md create mode 100644 gpio/esp32-c5_gpio.md create mode 100644 gpio/esp32-c6_gpio.md create mode 100644 gpio/esp32-h2_gpio.md create mode 100644 gpio/esp32-p4_gpio.md create mode 100644 gpio/esp32-s2_gpio.md create mode 100644 gpio/esp32-s3_gpio.md create mode 100644 gpio/esp32_gpio.md diff --git a/INDEX.md b/INDEX.md new file mode 100644 index 0000000..eee8bd3 --- /dev/null +++ b/INDEX.md @@ -0,0 +1,172 @@ +# 嵌入式专属查询系统 — 知识库总索引 + +> 文件总数:**55 个 .md** | 最后审查:2026-07-27 | 编码:全部 UTF-8 +> 信源:espressif.com 官方文档 (Datasheet/TRM) + 实战踩坑积累 + +--- + +## 命名规则(新增文件必须遵守) + +``` +芯片手册类: {芯片型号}_{类别}.md + 芯片型号: esp32 / esp32-s2 / esp32-s3 / esp32-c2 / esp32-c3 / esp32-c5 / esp32-c6 / esp32-h2 / esp32-p4 + 类 别: specs(规格) / gpio(引脚) / constraints(约束) / peripherals(外设) + +跨系列参考: platforms_{主题}.md 或 {主题描述}.md + 例:platforms_esp32-pins.md / electrical-constraints.md / protocol-quick-ref.md + +踩坑记录: {芯片或主题}_trap.md 或 {芯片}_fail_log.md 或 {芯片}_basics.md + 例:esp32-c3_pin_trap.md / mosfet_trap.md / esp32_fail_log.md + +对比文档: {芯片}_compare_{对比对象}.md + 例:esp32_compare_d0wd-vs-s3.md + +第三方库: {库名}_README.md + 例:lvgl_README.md / waveshare_README.md + +PCB/通用: pcb_{主题}.md 或 {主题描述}.md + 例:pcb_rules_v2.md / common-devices.md +``` + +**规则:** +- 全部小写英文 + 数字 + 连字符 `-` 或下划线 `_` +- 芯片型号与类别之间用 `_` 分隔(如 `esp32-s3_gpio.md`) +- 芯片型号内部用 `-`(如 `esp32-s3`) +- 不允许中文文件名、空格、大写字母 +- 新增文件前先查 INDEX.md 避免重复 + +--- + +## 一、ESP32 全系列芯片手册(9 系列 × 4 文件 = 36 文件) + +### ESP32(经典双核 IoT 旗舰,2016) +- [esp32_specs.md](esp32_specs.md):内容=完整规格:双核 LX6 240MHz, 520KB SRAM, WiFi4+BT Classic, 34 GPIO +- [esp32_gpio.md](esp32_gpio.md):内容=引脚映射:ADC 18ch, DAC 2ch, 仅输入GPIO34-39, Strapping GPIO0/2/5/12/15 +- [esp32_constraints.md](esp32_constraints.md):内容=硬件约束:ADC2/WiFi冲突, GPIO12 Flash电压陷阱(禁止上拉), Flash GPIO6-11 +- [esp32_peripherals.md](esp32_peripherals.md):内容=外设:4 SPI, 2 I2C, 3 UART, 2 I2S, 1 CAN, 16 LEDC, 霍尔传感器 + +### ESP32-S2(单核 USB IoT,2019) +- [esp32-s2_specs.md](esp32-s2_specs.md):内容=完整规格:单核 LX7 240MHz, 320KB SRAM, WiFi4, **无蓝牙**, USB OTG +- [esp32-s2_gpio.md](esp32-s2_gpio.md):内容=引脚映射:ADC 20ch, DAC 2ch, USB_D-/D+ GPIO19/20, 43 GPIO +- [esp32-s2_constraints.md](esp32-s2_constraints.md):内容=硬件约束:无蓝牙, ADC2/WiFi冲突, 仅3个Strapping, GPIO46仅输入 +- [esp32-s2_peripherals.md](esp32-s2_peripherals.md):内容=外设:4 SPI, 2 I2C, 2 UART, LCD i80, DVP Camera, USB OTG + +### ESP32-S3(双核 AI/IoT,2020) +- [esp32-s3_specs.md](esp32-s3_specs.md):内容=完整规格:双核 LX7 240MHz, 512KB SRAM, BLE5, AI向量指令, Octal PSRAM +- [esp32-s3_gpio.md](esp32-s3_gpio.md):内容=引脚映射:ADC 20ch, 45 GPIO, USB双控制器, Octal PSRAM GPIO33-37占用 +- [esp32-s3_constraints.md](esp32-s3_constraints.md):内容=硬件约束:ADC2/WiFi冲突, Octal PSRAM引脚占用, 无DAC +- [esp32-s3_peripherals.md](esp32-s3_peripherals.md):内容=外设:LCD RGB/i80, DVP Camera, AI SIMD, 2 CAN, GDMA 5TX+5RX +- [esp32-s3_basics.md](esp32-s3_basics.md):内容=ESP32-S3 基础知识:Strapping, USB, ADC, 供电, 开发板选型 + +### ESP32-C2(RISC-V 极致低成本,2022) +- [esp32-c2_specs.md](esp32-c2_specs.md):内容=完整规格:单核 RISC-V 120MHz, 272KB SRAM, WiFi4+BLE5, SiP仅14 GPIO可用 +- [esp32-c2_gpio.md](esp32-c2_gpio.md):内容=引脚映射:ADC 5ch, USB-JTAG GPIO18/19, Flash GPIO11-17, 仅2个Strapping +- [esp32-c2_constraints.md](esp32-c2_constraints.md):内容=硬件约束:**无通用SPI!仅1个UART!无I2S!** GPIO极度有限 +- [esp32-c2_peripherals.md](esp32-c2_peripherals.md):内容=外设:精简外设, C2 vs C3 对比表 + +### ESP32-C3(RISC-V 低成本 IoT,2020) +- [esp32-c3_specs.md](esp32-c3_specs.md):内容=完整规格:单核 RISC-V 160MHz, 400KB SRAM, WiFi4+BLE5, 22 GPIO +- [esp32-c3_gpio.md](esp32-c3_gpio.md):内容=引脚映射:ADC 6ch, USB-JTAG GPIO18/19, Strapping GPIO2/8/9, Flash GPIO12-17 +- [esp32-c3_constraints.md](esp32-c3_constraints.md):内容=硬件约束:**GPIO2禁止上拉!GPIO8方向与D0WD相反!** 无ADC/WiFi冲突 +- [esp32-c3_peripherals.md](esp32-c3_peripherals.md):内容=外设:3 SPI, 1 I2C, 2 UART, 1 I2S, 1 CAN, GDMA 3TX+3RX +- [esp32-c3_pin_trap.md](esp32-c3_pin_trap.md):内容=⚠️ ESP32-C3 引脚映射踩坑实录:GPIO2/VDD_SPI变砖, GPIO8下载方向, 嘉立创封装差异 + +### ESP32-C5(RISC-V 双频 WiFi6,2024) +- [esp32-c5_specs.md](esp32-c5_specs.md):内容=完整规格:单核 RISC-V **240MHz**, 384KB SRAM, **双频WiFi6(2.4+5GHz)**, BLE5 +- [esp32-c5_gpio.md](esp32-c5_gpio.md):内容=引脚映射:ADC 6ch, 芯片29 GPIO / 模组22 GPIO, GPIO13/14 40mA驱动 +- [esp32-c5_constraints.md](esp32-c5_constraints.md):内容=硬件约束:双频天线设计挑战, CAN FD×2, 5GHz PCB走线阻抗 +- [esp32-c5_peripherals.md](esp32-c5_peripherals.md):内容=外设:CAN FD×2, 3 UART, C5 vs C6 对比表 + +### ESP32-C6(RISC-V WiFi6 + Thread,2023) +- [esp32-c6_specs.md](esp32-c6_specs.md):内容=完整规格:单核 RISC-V 160MHz, 512KB SRAM, WiFi6, BLE5.3, Thread/Zigbee +- [esp32-c6_gpio.md](esp32-c6_gpio.md):内容=引脚映射:ADC 7ch, 30 GPIO, USB-JTAG GPIO12/13, LP GPIO 8-21 +- [esp32-c6_constraints.md](esp32-c6_constraints.md):内容=硬件约束:无ADC/WiFi冲突, WiFi6仅20MHz/1T1R, LP CPU 20MHz +- [esp32-c6_peripherals.md](esp32-c6_peripherals.md):内容=外设:3 UART(含LP), 2 CAN, SDIO 2.0, PARLIO, ETM + +### ESP32-H2(RISC-V Thread/Zigbee 无WiFi,2023) +- [esp32-h2_specs.md](esp32-h2_specs.md):内容=完整规格:单核 RISC-V 96MHz, 320KB SRAM, **无WiFi**, BLE5.3+Thread/Zigbee +- [esp32-h2_gpio.md](esp32-h2_gpio.md):内容=引脚映射:ADC 5ch, 19 GPIO, LP引脚仅GPIO8-14可唤醒Deep-sleep +- [esp32-h2_constraints.md](esp32-h2_constraints.md):内容=硬件约束:无WiFi, 全系列最低主频96MHz, WROOM-07仅3个GPIO +- [esp32-h2_peripherals.md](esp32-h2_peripherals.md):内容=外设:安全最强(Power Glitch Detector), 低功耗, BLE+802.15.4 + +### ESP32-P4(RISC-V 高性能应用处理器,2023) +- [esp32-p4_specs.md](esp32-p4_specs.md):内容=完整规格:双核 RISC-V **400MHz**, 768KB SRAM, 16/32MB PSRAM, **无无线** +- [esp32-p4_gpio.md](esp32-p4_gpio.md):内容=引脚映射:55 GPIO, ADC 8ch GPIO16-23, Touch 14ch GPIO2-15, MIPI CSI/DSI +- [esp32-p4_constraints.md](esp32-p4_constraints.md):内容=硬件约束:无无线需外挂协处理器, 400MHz散热, 多电源域, PRELIMINARY +- [esp32-p4_peripherals.md](esp32-p4_peripherals.md):内容=外设:H264, JPEG, MIPI, 以太网, USB HS, I3C, 2D-DMA, 最强外设 + +--- + +## 二、跨系列参考资料(10 文件) + +- [platforms_esp32-pins.md](platforms_esp32-pins.md):内容=ESP32 GPIO 完整引脚参考:34引脚全表, ADC/DAC/Touch/RTC映射, 变体对比 +- [platforms_esp32-specifics.md](platforms_esp32-specifics.md):内容=ESP32 深度参考:MMU/堆分配, Strapping深入, ADC2/WiFi冲突, RTC/DeepSleep +- [esp32_compare_d0wd-vs-s3.md](esp32_compare_d0wd-vs-s3.md):内容=ESP32-D0WD vs ESP32-S3 选型对比踩坑:USB, 烧录, PSRAM差异 +- [electrical-constraints.md](electrical-constraints.md):内容=电气约束通用规范 +- [common-devices.md](common-devices.md):内容=常用器件参考 +- [protocol-quick-ref.md](protocol-quick-ref.md):内容=通信协议快速参考 +- [pcb_rules_v2.md](pcb_rules_v2.md):内容=PCB 设计规范 v2 +- [lvgl_README.md](lvgl_README.md):内容=LVGL 图形库参考 +- [waveshare_README.md](waveshare_README.md):内容=Waveshare 微雪电子模块参考 + +--- + +## 三、实战踩坑记录(6 文件) + +- [esp32_fail_log.md](esp32_fail_log.md):内容=ESP32 翻车全记录:从面包板到V5.1投板的所有踩坑,按时间排序 +- [esp32-c3_pin_trap.md](esp32-c3_pin_trap.md):内容=ESP32-C3 引脚踩坑:GPIO2/VDD_SPI变砖, GPIO8下载方向, 嘉立创封装差异 +- [mosfet_trap.md](mosfet_trap.md):内容=MOSFET 选型与驱动踩坑 +- [cap_select_trap.md](cap_select_trap.md):内容=电容选型踩坑 +- [smt_order_trap.md](smt_order_trap.md):内容=SMT 贴片下单踩坑 +- [pcb_4layer_trap.md](pcb_4layer_trap.md):内容=PCB 四层板设计踩坑 +- [verify_flow_trap.md](verify_flow_trap.md):内容=验证流程踩坑 +- [model_confuse_trap.md](model_confuse_trap.md):内容=AI 模型混淆踩坑 + +--- + +## 四、芯片选型速查 + +### 按无线需求选 + +- WiFi + 经典蓝牙 (BR/EDR):推荐芯片=**ESP32** +- WiFi + BLE:推荐芯片=ESP32-S3 / C3 / C2 +- WiFi + BLE + Thread/Zigbee:推荐芯片=**ESP32-C6** +- 双频 WiFi (2.4+5GHz) + BLE:推荐芯片=**ESP32-C5** +- USB OTG + WiFi:推荐芯片=ESP32-S2 / S3 +- 仅 BLE + Thread/Zigbee (无WiFi):推荐芯片=**ESP32-H2** +- 高性能多媒体 (无无线):推荐芯片=**ESP32-P4** +- 极致低成本 BLE+WiFi:推荐芯片=**ESP32-C2** + +### 按性能选 + +- 最高 CPU 性能:推荐=ESP32-P4 (400MHz 双核 RISC-V) +- AI/ML 推理:推荐=ESP32-S3 (向量指令) +- 最大 GPIO:推荐=ESP32-P4 (55) / ESP32-S3 (45) +- 最低功耗:推荐=ESP32-H2 (7µA Deep-sleep, 无WiFi) +- 最小封装:推荐=ESP32-C2 (QFN24 4×4mm) + +### 按外设选 + +- 最多 SPI:推荐=ESP32-P4 (5) +- CAN FD:推荐=ESP32-C5 (×2) +- 以太网 MAC:推荐=ESP32-P4 +- MIPI CSI/DSI:推荐=ESP32-P4 +- H264 编码:推荐=ESP32-P4 +- DAC 输出:推荐=ESP32 / ESP32-S2 +- 霍尔传感器:推荐=ESP32(仅此一家) +- 电容触摸:推荐=ESP32 / S2 / S3 / P4 + +--- + +## 五、常见踩坑速查 + +- GPIO12 上拉 → Flash 变砖:芯片=ESP32, 查阅=[esp32_constraints.md](esp32_constraints.md) +- GPIO2 做 I2C SDA → VDD_SPI 变砖:芯片=ESP32-C3, 查阅=[esp32-c3_pin_trap.md](esp32-c3_pin_trap.md) +- GPIO8 下载方向与 D0WD 相反:芯片=ESP32-C3, 查阅=[esp32-c3_pin_trap.md](esp32-c3_pin_trap.md) +- ADC2 开启 WiFi 后读数噪音:芯片=ESP32/S2/S3, 查阅=各 constraints.md +- Octal PSRAM 占用 GPIO33-37:芯片=ESP32-S3, 查阅=[esp32-s3_constraints.md](esp32-s3_constraints.md) +- C2 没有通用 SPI:芯片=ESP32-C2, 查阅=[esp32-c2_constraints.md](esp32-c2_constraints.md) +- H2 没有 WiFi:芯片=ESP32-H2, 查阅=[esp32-h2_specs.md](esp32-h2_specs.md) +- P4 没有无线:芯片=ESP32-P4, 查阅=[esp32-p4_specs.md](esp32-p4_specs.md) +- S2 没有蓝牙:芯片=ESP32-S2, 查阅=[esp32-s2_specs.md](esp32-s2_specs.md) +- WROOM-07 仅 3 个 GPIO:芯片=ESP32-H2, 查阅=[esp32-h2_gpio.md](esp32-h2_gpio.md) diff --git a/README.md b/README.md new file mode 100644 index 0000000..cddce23 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# ESP32 开发资源库 + +ESP32 全系列 9 芯片的固件代码、GPIO 配置模板、外设驱动文档。 + +## 目录 + +| 目录 | 内容 | +|:--|:--| +| `firmware/` | 各项目固件:Volt Hound V1.0/V2.0、RPM V3.3、电子宠物 V1.0 | +| `gpio/` | 全系 GPIO 约束速查(Strapping/ADC/PSRAM) | +| `drivers/` | 外设驱动参考(SPI/I2C/UART/I2S 等) | + +## 相关资源 + +- Wiki: https://wiki.suyushi.top/esp32 +- 知识库: https://suyushi.top/agent/agt_ksjt3j38XhHW/docs diff --git a/drivers/esp32-c2_peripherals.md b/drivers/esp32-c2_peripherals.md new file mode 100644 index 0000000..05f55ce --- /dev/null +++ b/drivers/esp32-c2_peripherals.md @@ -0,0 +1,68 @@ +# ESP32-C2 外设清单 +> **芯片:esp32-c2** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) +> 注意:C2 是极致低成本芯片,外设大幅精简 + +## 通信接口 + +- SPI ×2 — SPI0/1 均为 Flash 占用,**无通用 SPI** +- I2C ×1 — 可映射到任意 GPIO +- UART ×**1** — UART0(默认 GPIO20/21),同时用于烧录 +- I2S ×**0** — 无 I2S 音频接口 +- CAN (TWAI) ×**0** — 无 CAN 接口 +- USB Serial/JTAG ×1 — GPIO18/19 + +> ⚠️ 无通用 SPI、无 I2S、只有 1 个 UART — 选型前务必确认外设需求。 + +## PWM 与波形 + +- **LEDC**: 6 通道 +- **RMT**: 2 TX + 2 RX + +> 无 MCPWM(电机控制 PWM) + +## 模拟外设 + +- SAR ADC ×1(5 通道) — 12-bit,最高 100 Ksps +- 温度传感器 ×1 — 片上 + +> 无 DAC、无触摸传感器 + +## 定时器 + +- **通用定时器**: 2(54-bit) +- **系统定时器**: 1(52-bit) +- **看门狗**: 3 + +## DMA + +- **GDMA**: 2(1 TX + 1 RX) + +> C2 的 DMA 通道数远少于 C3 的 3TX+3RX + +## 安全 + +- **AES**: AES-128/256 +- **SHA**: 硬件加速 +- **ECC**: 硬件加速 +- **Flash Encryption**: XTS-AES-128 +- **Secure Boot**: 支持 +- **TRNG**: 真随机数 + +## 其他 + +- 脉冲计数器 (PCNT): 1 个 +- 温度传感器: 1 个 + +## C2 vs C3 外设对比 + +- CPU — RISC-V 120MHz, RISC-V 160MHz +- SRAM ×272 KB — 400 KB +- GPIO ×14(SiP) — 22 +- ADC ×5ch — 6ch +- 通用 SPI — ❌, ✅ SPI2 +- UART ×1 — 2 +- I2S — ❌, ✅ +- CAN — ❌, ✅ +- DMA ×1TX+1RX — 3TX+3RX +- 封装 ×QFN24 4x4 — QFN32 5x5 + diff --git a/drivers/esp32-c3_peripherals.md b/drivers/esp32-c3_peripherals.md new file mode 100644 index 0000000..26f4d29 --- /dev/null +++ b/drivers/esp32-c3_peripherals.md @@ -0,0 +1,33 @@ +# ESP32-C3 外设清单 + +> **芯片:esp32-c3** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 通信 +- SPI ×3 — SPI2 通用, max 80 MHz +- I2C ×1 — max 800 Kbps +- UART ×2 — max 5 Mbps +- I2S ×1 — max 40 MHz BCK +- CAN (TWAI) ×1 — CAN 2.0 +- USB Serial/JTAG ×1 — 烧录+调试 + +## PWM & 波形 +- **LEDC**: 6 ch +- **RMT**: 2 TX + 2 RX + +## 模拟 +- SAR ADC ×2 (6 ch) — 12-bit, max 100 Ksps +- 温度传感器 ×1 + +> ❌ 无 DAC, 无触摸 + +## 定时器 +通用×2 (54-bit), 系统×1 (52-bit), WDT×3 + +## DMA +GDMA: 3 TX + 3 RX + +## 安全 +AES-128/256, SHA, RSA-4096, ECC, Flash Encryption, Secure Boot, TRNG, HMAC, Digital Signature + +## 其他 +PCNT×1 diff --git a/drivers/esp32-c5_peripherals.md b/drivers/esp32-c5_peripherals.md new file mode 100644 index 0000000..1338a24 --- /dev/null +++ b/drivers/esp32-c5_peripherals.md @@ -0,0 +1,66 @@ +# ESP32-C5 外设清单 +> **芯片:esp32-c5** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 通信接口 + +- SPI ×3 — 2 供 Flash/PSRAM;1 通用 SPI +- I2C ×2 — 1 HP + 1 LP +- UART ×3 — 2 HP + 1 LP +- I2S ×1 +- CAN — **2(CAN FD)**, ISO 11898-1:2015, 最高 5 Mbps +- USB Serial/JTAG — 1 +- SDIO 2.0 ×1 — 从机模式 +- PARLIO ×1 — 并行 IO + +## PWM 与波形 + +- **LEDC**: 6 通道 +- **MCPWM**: 6 通道 +- **RMT**: TX + RX + +## 模拟外设 + +- SAR ADC ×1(6 通道) — 12-bit(GPIO1–6) +- 模拟电压比较器 ×1 — GPIO8/9 输入 +- 温度传感器 ×1 — 片上 +- 掉电检测 (Brownout) — 1 + +> 无 DAC、无触摸传感器 + +## 定时器 + +- **通用定时器**: 2(54-bit) +- **系统定时器**: 1(52-bit) +- **RTC 定时器**: 1 +- **看门狗**: 4 + +## DMA 与事件 + +- **GDMA**: 3 TX + 3 RX +- **ETM(事件任务矩阵)**: 1 + +## 安全 + +- **AES**: AES-128/256 +- **SHA**: 硬件加速 +- **ECC**: 硬件加速 +- **RSA**: 最高 4096-bit +- **Flash Encryption**: XTS-AES-128 +- **Secure Boot**: 支持 +- **TRNG**: 真随机数 +- **HMAC**: 硬件 + +## 其他 + +- 脉冲计数器 (PCNT): 1 个 + +## C5 vs C6 外设对比 + +- CPU — RISC-V 240MHz, RISC-V 160MHz +- SRAM ×384 KB — 512 KB +- GPIO(芯片/模组) ×29 / 22 — 30 / 23 +- ADC ×6ch — 7ch +- Wi-Fi — 双频 (2.4+5GHz), 2.4GHz only +- CAN ×CAN FD ×2 — CAN 2.0 ×2 +- 封装 ×QFN48 6×6 — QFN40 5×5 + diff --git a/drivers/esp32-c6_peripherals.md b/drivers/esp32-c6_peripherals.md new file mode 100644 index 0000000..7a69aca --- /dev/null +++ b/drivers/esp32-c6_peripherals.md @@ -0,0 +1,32 @@ +# ESP32-C6 外设清单 + +> **芯片:esp32-c6** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 通信 +- SPI ×3 — SPI2 通用 +- I2C ×2 — I2C + LP I2C +- UART ×3 — UART0/1 + LP UART, max 5 Mbps +- I2S ×1 +- CAN (TWAI) ×2 — CAN 2.0 +- USB Serial/JTAG — 1 +- SDIO 2.0 ×1 — 从机 +- PARLIO ×1 — 并行 IO + +## PWM & 波形 +LEDC 6ch, MCPWM 1, RMT 2TX+2RX + +## 模拟 +SAR ADC 1 (7ch, 12-bit), 温度传感器 +❌ 无 DAC, 无触摸 + +## 定时器 +通用×2 (54-bit), 系统×1 (52-bit), WDT×4 + +## DMA & 事件 +GDMA 3TX+3RX, ETM (Event Task Matrix) + +## 安全 +AES, SHA, RSA-4096, ECC, Flash Encryption, Secure Boot, TRNG + +## 其他 +PCNT×1 diff --git a/drivers/esp32-h2_peripherals.md b/drivers/esp32-h2_peripherals.md new file mode 100644 index 0000000..bd9de78 --- /dev/null +++ b/drivers/esp32-h2_peripherals.md @@ -0,0 +1,31 @@ +# ESP32-H2 外设清单 + +> **芯片:esp32-h2** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 通信 +- **SPI**: 3(1 通用) +- **I2C**: 2 +- **UART**: 2 +- **I2S**: 1 +- **CAN (TWAI)**: 1 +- **USB Serial/JTAG**: 1 +- **PARLIO**: 1 + +## PWM & 波形 +LEDC 6ch, MCPWM 1, RMT 2TX+2RX + +## 模拟 +SAR ADC 1 (5ch, 12-bit), 温度传感器 +❌ 无 DAC, 无触摸 + +## 定时器 +通用×2 (54-bit), 系统×1 (52-bit), WDT×3 + +## DMA & 事件 +GDMA 3TX+3RX, ETM + +## 安全(H2 最强) +AES-128/256, SHA, RSA, ECC (ECDSA + P256), Flash Encryption (XTS-AES-128/256), Secure Boot (ECC), TRNG, HMAC, Digital Signature (RSA_DS + ECDSA_DS), **Power Glitch Detector** + +## 其他 +PCNT×1 diff --git a/drivers/esp32-p4_peripherals.md b/drivers/esp32-p4_peripherals.md new file mode 100644 index 0000000..69b88c0 --- /dev/null +++ b/drivers/esp32-p4_peripherals.md @@ -0,0 +1,47 @@ +# ESP32-P4 外设清单 + +> **芯片:esp32-p4** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 通信 +- SPI ×5 — 4 HP + 1 LP +- I2C ×4 — 2 HP + 1 LP + 1 模拟 +- I3C ×1 — Master & Slave +- UART ×6 — 5 HP + 1 LP +- I2S ×4 — 3 HP + 1 LP (含 PDM) +- CAN (TWAI) — 1 +- USB HS OTG ×1 — 480 Mbps +- USB FS OTG ×1 — 12 Mbps +- USB Serial/JTAG — 1 +- Ethernet MAC ×1 — RMII 10/100 Mbps + +## 多媒体(P4 独有) +- **MIPI CSI**: 2-lane 摄像头 +- **MIPI DSI**: 2-lane 显示 +- **H264 Encoder**: 硬件编码 +- **JPEG Codec**: 硬件编解码 +- **ISP**: 图像信号处理器 +- **PPA**: 像素处理加速器 +- **LCD Controller**: RGB/i8080/MOTO6800 + +## PWM & 电机 +MCPWM ×2, LEDC, RMT, PARLIO + +## 模拟 +- SAR ADC: 2 控制器, 12-bit(ADC1: 8ch GPIO16–23) +- 触摸: 14ch (GPIO2–15) +- 温度传感器, 模拟电压比较器, VAD (语音活动检测) + +## 定时器 +HP 系统×2 (52-bit), HP 通用×4 (54-bit), LP 通用×1 (48-bit), WDT×4 + +## DMA +GDMA-AHB, GDMA-AXI, VDMA (视频), **2D-DMA** (图像) + +## 存储 +SD/MMC SDIO 3.0, QSPI Flash (外部) + +## 安全 +AES, SHA, RSA-4096, ECC, XTS-AES (外部内存加解密), Flash Encryption, Secure Boot, TRNG, Key Manager (SRAM PUF HUK), PMS (权限管理+APM+特权分离), PMP/PMA (物理内存保护) + +## 其他 +PCNT, BitScrambler, RISC-V Trace Encoder diff --git a/drivers/esp32-s2_peripherals.md b/drivers/esp32-s2_peripherals.md new file mode 100644 index 0000000..dbb6f25 --- /dev/null +++ b/drivers/esp32-s2_peripherals.md @@ -0,0 +1,33 @@ +# ESP32-S2 外设清单 + +> **芯片:esp32-s2** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 通信 +- SPI ×4 — SPI2(FSPI), SPI3 用户可用 +- I2C ×2 +- UART ×2 — UART0/UART1 +- I2S ×1 — 全双工音频 +- CAN (TWAI) ×1 — CAN 2.0 +- USB OTG ×1 — Full-Speed USB 2.0 + +## PWM & 电机 +- **LEDC**: 8 ch +- **MCPWM**: 2 +- **RMT**: 4 ch + +## 模拟 +- SAR ADC ×2 (20 ch) — 12-bit +- DAC ×2 ch — 8-bit (GPIO17/18) +- 触摸 ×14 ch +- 温度传感器 ×1 + +## 显示 & 摄像头 +- **LCD**: 8-bit i80 / RGB +- **DVP Camera**: 8-bit + +## 安全 +AES-128/256, SHA, RSA-4096, Flash Encryption, Secure Boot, TRNG + +## 其他 +- 定时器: 通用×4 (64-bit), 系统×1 (52-bit), WDT×3 +- DMA, SD/MMC, PCNT×4 diff --git a/drivers/esp32-s3_peripherals.md b/drivers/esp32-s3_peripherals.md new file mode 100644 index 0000000..95e36d9 --- /dev/null +++ b/drivers/esp32-s3_peripherals.md @@ -0,0 +1,44 @@ +# ESP32-S3 外设清单 + +> **芯片:esp32-s3** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 通信 +- SPI ×4 — SPI0/1 Flash;SPI2+SPI3 用户可用 +- I2C ×2 +- UART — 3 +- I2S ×2 — 全双工音频 +- CAN (TWAI) ×1 — CAN 2.0 (ISO 11898-1) +- USB OTG ×1 — Full-Speed USB 2.0 +- USB Serial/JTAG ×1 — 烧录+调试 + +## PWM & 电机 +- **LEDC**: 8 ch +- **MCPWM**: 2 +- **RMT**: 8 ch (4TX + 4RX) + +## 模拟 +- SAR ADC ×2 (20 ch) — 12-bit +- 触摸 ×14 ch +- 温度传感器 ×1 + +> ⚠️ 无 DAC + +## 显示 & 摄像头 +- **LCD**: 8/16-bit RGB, i8080, MOTO6800;RGB565/YUV422/YUV420/YUV411 色彩转换 +- **DVP Camera**: 8–16 bit + +## AI 加速 +向量指令 (SIMD) 扩展,支持 TensorFlow Lite Micro 推理 + +## DMA +GDMA: 5 TX + 5 RX + +## 存储 +SD/MMC: 1(2 slots) + +## 安全 +AES, SHA, RSA-4096, ECC, Flash Encryption, Secure Boot, TRNG, HMAC + +## 其他 +- 定时器: 通用×4 (64-bit), 系统×1 (52-bit), WDT×3 +- PCNT: 8 ch diff --git a/drivers/esp32_peripherals.md b/drivers/esp32_peripherals.md new file mode 100644 index 0000000..2353728 --- /dev/null +++ b/drivers/esp32_peripherals.md @@ -0,0 +1,42 @@ +# ESP32 外设清单 + +> **芯片:esp32** | **类别:peripherals** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 通信接口 +- SPI ×4 — SPI0/1 Flash;SPI2(HSPI)+SPI3(VSPI) 用户可用 +- I2C ×2 — 标准/快速模式 (100/400 Kbps),默认 SDA=GPIO21, SCL=GPIO22 +- UART ×3 — UART0(默认 GPIO1/3 烧录用)/ UART1 / UART2 +- I2S ×2 — 全双工音频 +- CAN (TWAI) ×1 — CAN 2.0,任意 GPIO 通过矩阵 +- SD/MMC ×1 — Slot0 8-bit (GPIO6-11/16-17/5/18), Slot1 4-bit (GPIO14-15/2/4/12-13) +- EMAC ×1 — 以太网 MAC(需外部 PHY,如 LAN8720),专用引脚 + +## PWM & 电机 +- LEDC ×16 ch — 高速×8 + 低速×8 +- MCPWM ×2 — BLDC/步进电机 +- RMT ×8 ch — 红外/WS2812 + +## 模拟 +- SAR ADC ×2 (18 ch) — 12-bit +- DAC ×2 ch — 8-bit (GPIO25/26) +- 触摸 ×10 ch — 电容式 +- 霍尔传感器 ×1 — 仅 ESP32 +- 温度传感器 ×1 + +## 定时器 +- **通用定时器**: 4 (2组 64-bit) +- **系统定时器**: 1 (52-bit) +- **看门狗**: 3 + +## DMA +- **DMA**: 13 ch +- **SD/MMC**: 1 + +## 安全 +- AES-128/256, SHA, RSA-4096, ECC +- Flash Encryption (XTS-AES-128) +- Secure Boot (RSA/ECDSA), TRNG + +## 其他 +- 脉冲计数器 (PCNT): 8 ch +- 以太网 MAC: 1(需外部 PHY) diff --git a/esp32_fail_log.md b/esp32_fail_log.md new file mode 100644 index 0000000..699f018 --- /dev/null +++ b/esp32_fail_log.md @@ -0,0 +1,235 @@ +# ESP32翻车全记录 + +> **类别:fail_log** | **芯片:cross-platform** | **主题:ESP32翻车全记录 (2026.05-07)** + +> 从2026年5月入坑到2026年7月V5.1投板,所有ESP32相关翻车事件汇总。按时间顺序排列,每条附项目版本、代价和教训。 + +--- + +## 一、面包板原型阶段(2026年5月) + +### 1. Arduino IDE板卡装错 +- **项目**:电池检测仪早期面包板验证 +- **翻车**:装了"Arduino ESP32 Boards"(只有Nano ESP32),不是"esp32 by Espressif Systems",编译选不到ESP32 Dev Module +- **代价**:浪费1小时 +- **教训**:搜esp32时认准Espressif Systems出品的那个 + +### 2. ESP32经典版和C3的BOOT引脚搞混 +- **项目**:面包板接线 +- **翻车**:以为ESP32-C3的BOOT是GPIO0(经典版),实际C3是GPIO8/GPIO9控制启动模式 +- **代价**:接线错误,重新查Datasheet纠正 +- **教训**:不同ESP32型号的Strapping引脚完全不同,不能凭经验混用 + +### 3. OLED I2C引脚随便分配 +- **项目**:面包板接线 +- **翻车**:GPIO有空就塞,没查Strapping和JTAG约束,SDA/SCL分配到哪算哪 +- **代价**:后续引脚分配推倒重来多次 +- **教训**:ESP32引脚分配必须先查Strapping/JTAG/ADC约束再分配,不能有空就塞 + +--- + +## 二、GBC V1.x~V2.x SMT打板阶段(2026年6月) + +### 4. MOSFET源极跟随器——GBC V2.0整板报废 +- **项目**:GBC V2.0(SMT打板) +- **翻车**:AO3400A接成高侧源极跟随器(Drain接电池正极、Source接负载),Vgs被源极电压钳位,负载永远得不到满电压,Rdson非线性变化,内阻计算全错 +- **代价**:整板报废,¥420学费 +- **教训**:N-MOS做开关必须低端接法——负载在上、MOS在下、S极接地、Vgs恒定3.3V + +### 5. MOSFET引脚D/S画反——V2.0整板报废的同批次 +- **项目**:GBC V2.0 +- **翻车**:AO3400A SOT-23-3引脚D/S画反,左脚=D(漏极)中间=G(栅极)右脚=S(源极),原理图画反导致整板所有MOS全废 +- **代价**:与#4同批报废,¥420学费 +- **教训**:画原理图前必须对照Datasheet确认MOS引脚定义,不能信AI记忆 + +### 6. 检流电阻与MOS并联——电流检测完全失效 +- **项目**:GBC早期拓扑 +- **翻车**:R_shunt与MOSFET并联而非串联,电流走MOS短路了检流电阻,INA226测不到电流 +- **代价**:拓扑设计推倒重来 +- **教训**:检流电阻必须串在MOS源极到GND之间,电流必须全部流过采样电阻 + +### 7. INA226引脚号全错——VBUS和VS搞反 +- **项目**:GBC V2.0文档 +- **翻车**:功能说明文档里INA226引脚排列与TI官方Datasheet SBOS664严重不符,把VBUS(Pin5)和VS(Pin8)搞反了,还凭空多出个NC引脚。VBUS是电压采样输入引脚被当成供电脚,VS才是供电脚被当成电压采样 +- **代价**:又加了一组100kΩ分压电阻+滤波电容做ADC降级方案,后来全部删掉重做 +- **教训**:IC引脚定义必须逐条对照官方Datasheet验证,不能凭AI记忆或网上二手资料 + +### 8. BOOT键接错引脚——GPIO8 vs GPIO9 +- **项目**:GBC V1.7 +- **翻车**:BOOT键接GPIO8,按下拉3V3。但ESP32-C3的Download模式要求GPIO8=1且GPIO9=0,开发板BOOT键接的是GPIO9不是GPIO8 +- **代价**:按BOOT键进不了下载模式 +- **教训**:ESP32-C3的BOOT键必须接GPIO9(按下接GND拉低),GPIO8必须外部上拉3V3 + +### 9. GPIO8 NC悬空——Download模式非法组合 +- **项目**:GBC V1.8 +- **翻车**:V1.8把SW2从GPIO8改到GPIO9(纠正了#8),但GPIO8没加上拉直接NC。GPIO8内部高阻态无上下拉,按BOOT(GPIO9=0)时GPIO8=0,组合(0,0)是ESP32-C3官方明确声明的非法组合,行为未定义 +- **代价**:下载不可靠,每次都不合法 +- **教训**:GPIO8必须有10kΩ外部上拉到3V3,确保Download模式(GPIO8=1, GPIO9=0)合法 + +### 10. 设计继承翻车——同一个MOS坑踩两遍 +- **项目**:NES版拓扑 +- **翻车**:GBC版已验证正确的低端开关接法,写NES版拓扑时凭印象重新写,又写回了源极跟随器。该抄作业的地方没抄,自己"创作"了个错的 +- **代价**:如果没被审查发现,NES版也会整板报废 +- **教训**:已验证项目的接法必须直接继承,禁止凭印象重写。该抄就抄 + +### 11. 跳过面包板实测——SMT到手才发现问题 +- **项目**:GBC版全流程 +- **翻车**:全程没做面包板测试直接上SMT,模拟电路问题(MOS接法、检流拓扑)在网表验证和AI审查中都没被发现,SMT到手才暴露 +- **代价**:整板报废+重新打板 +- **教训**:不做面包板验证不上板,核心模拟通路必须实测确认 + +### 12. ESP32-WROOM-32D没有原生USB——板子到手无法烧录 +- **项目**:早期选型 +- **翻车**:选了WROOM-32D模组但没加USB转串口芯片(CH340/CH9102),Type-C只能供电无法下载固件,板子变砖 +- **代价**:废板 +- **教训**:32D没有原生USB,BOM里必须列出USB转串口芯片+外围;选C3/S3原生USB可省大量器件 + +### 13. ESP32-32D GPIO12上拉导致Flash变砖 +- **项目**:ESP32-32D选型调研 +- **翻车**:GPIO12是Strapping引脚,决定VDD_SDIO电压。上拉10kΩ→VDD_SDIO=1.8V→外部3.3V Flash无法工作 +- **代价**:设计约束认知 +- **教训**:Strapping引脚偏置方向不能随便加,GPIO12必须下拉GND保持3.3V + +--- + +## 三、GBC V3.x~V4.x整改验证阶段(2026年7月初) + +### 14. USB D+多余上拉——COM口存在但打不开 +- **项目**:GBC V4.7/V4.8 +- **翻车**:ESP32-C3内置D+上拉电阻,但板子上又外挂了1.5kΩ R9上拉3V3,双重上拉导致D+永远被强拉到3V3,USB主机无法正常识别设备断开/连接状态。COM6存在但通信层打不开 +- **代价**:拆掉R9才修好 +- **教训**:ESP32-C3/S3原生USB不需要外部D+上拉,只需22Ω串联电阻 + +### 15. WDT看门狗API版本不兼容——编译失败 +- **项目**:GBC V5.0固件编译 +- **翻车**:V5.0固件用了ESP-IDF v5.1+的新版WDT API(esp_task_wdt_config_t结构体+指针参数),但当前Arduino-ESP32 Core仍为旧版签名(双参数uint32_t+bool),编译2 error +- **代价**:重新查API写法改代码 +- **教训**:ESP32 Arduino Core版本升级会破坏API兼容性,WDT初始化代码要匹配当前Core版本 + +### 16. INA226封装引脚映射混乱——VBUS/IN+/IN-互换了 +- **项目**:GBC V4.7/V4.8 SMT到手 +- **翻车**:KiCad封装库的引脚编号与IC物理引脚不一致(Pin8≠物理Pin8),拓扑文档的映射关系又写错了(KiCad Pin8→物理Pin3写成了VBUS但实际Pin3=IN+),导致VBUS线连到IN+、IN+连到VBUS、IN-连到A0。两块板子都一样——INA226电压读数固定0x04EF,电流读数0xFFFF +- **代价**:两块板子INA226模拟功能全废,只能手动飞线修复 +- **教训**:封装引脚映射必须从EDA库实际焊盘图验证,不能信拓扑文档的映射注释;嘉立创EDA按功能名连的网表是安全的,按pin号连的必须核物理位置 + +### 17. GPIO2 Strapping当SDA用——启动隐患 +- **项目**:GBC V4.8/V5.1 +- **翻车**:GPIO2是ESP32-C3三个Strapping引脚之一,启动时必须为HIGH才能正常SPI Boot。V4.8把GPIO2当I2C SDA用,4.7kΩ上拉空闲时确实HIGH,但I2C设备上电瞬间可能拉低SDA,踩在启动采样窗口(3ms)内就会干扰Boot +- **代价**:V4.8实测4.7kΩ上拉够强没出事,但V5.0还是修了——SDA挪到GPIO1,GPIO2加专用R28(10kΩ)上拉3V3 +- **教训**:Strapping引脚不要挂总线,单独上拉锁死电平最安全 + +### 18. GPIO2 Strapping风险理解错误——VDD_SPI炸Flash说法是错的 +- **项目**:GBC V5.0修复 +- **翻车**:皮蛋最初说"GPIO2 HIGH→VDD_SPI=1.8V→Flash炸",这是把ESP32经典版(GPIO12/MTDI)的行为错误套用到C3上。C3的VDD_SPI由VDD3P3_CPU内部分压固定3.3V,GPIO2不控制VDD_SPI。真实风险是浮空毛刺在采样窗口被误读 +- **代价**:修复方向虽然对了(SDA换GPIO1+GPIO2上拉),但原理理解是错的 +- **教训**:不同ESP32型号的Strapping机制不同,C3≠经典版≠S3,不能套用 + +### 19. V5.1裸片移植时V5.0修复被丢掉——GPIO2 Strapping隐患回潮 +- **项目**:GBC V5.1 +- **翻车**:V5.0已修复GPIO2 Strapping问题(SDA挪GPIO1、GPIO2加R28上拉),但V5.1换回裸片时把R28删了、GPIO1改回NC、SDA又放回GPIO2,等于V5.0的修复被丢了,V4.8的老隐患回来 +- **代价**:最终在智谱5.2终审和DeepSeek审查中被发现,重新加R27(10kΩ)上拉+SDA改GPIO1 +- **教训**:版本迁移时必须逐条检查上一版的修复项,不能因为"换封装了"就默认不需要 + +--- + +## 四、RPM马达测试仪相关(2026年7月) + +### 20. GPIO45 LED接法导致ESP32-S3变砖 +- **项目**:RPM V3.3 +- **翻车**:GPIO45是ESP32-S3的Strapping引脚,决定VDD_SPI电压(0→3.3V, 1→1.8V)。LED接成低电平亮(3V3→D3→R19→GPIO45),启动时LED正向导通把GPIO45拉高,VDD_SPI=1.8V→3.3V Flash读不出→芯片一行固件都跑不到→变砖。LED电流仅0.1mA但Vf=2.3V足以超过VIL(0.825V) +- **代价**:如果没被智谱5.2审查发现,RPM板子到手必砖 +- **教训**:Strapping引脚上的LED必须接成启动安全方向——GPIO45接高电平有效(LED接GND侧),启动时内部下拉=LOW=LED灭=VDD_SPI=3.3V + +### 21. RPM邮票孔模组走标准型——加工费起飞 +- **项目**:RPM V3.3 +- **翻车**:ESP32-S3-WROOM-1-N8R8是邮票孔模组封装,嘉立创SMT只能走标准型,加工费+换料费远高于经济型。标准型2片约800元(含295元换料费) +- **代价**:打样成本高企 +- **教训**:选模组前先查嘉立创SMT加工类型,邮票孔=标准型=贵;QFN裸片=经济型=便宜 + +--- + +## 五、电子宠物项目相关(2026年7月) + +### 22. S3-MINI-1邮票孔封装换料费高 +- **项目**:电子宠物V1.0 +- **翻车**:ESP32-S3-MINI-1也是邮票孔模组,跟RPM一样走标准型,换料费贵 +- **代价**:决定等GBC V5.1验证后换S3FH4R2裸片走经济型 +- **教训**:同#21,邮票孔是成本大坑 + +--- + +## 六、智谱5.2终审及整改阶段(2026年7月21日) + +### 23. 反接过功耗——MOSFET栅极寄生通路 +- **项目**:GBC V5.1智谱终审#1 +- **翻车**:电池反接时VBUS通过R13→Q1栅极→R18→GND形成通路,100mA+电流通过R13(1kΩ)和Q1栅极,R13功耗=0.1W超1206额定0.25V的40%,R18(10kΩ)分压可能让Q1误导通 +- **代价**:新增F1(PTC)+R15/R16换1210封装 +- **教训**:反接保护不能只看主通路,寄生路径也要算 + +### 24. ADC源阻抗50kΩ超标 +- **项目**:GBC V5.1智谱终审警告2 +- **翻车**:R4/R31各100kΩ分压,源阻抗=50kΩ,超ESP32-C3 ADC推荐值(<10kΩ),采样电容充不满读数偏低 +- **代价**:R4/R31从100kΩ改10kΩ(C25744零换料费),源阻抗降到5kΩ +- **教训**:ADC分压电阻不能太大,源阻抗要在推荐值以内 + +--- + +## 七、M3二审假警报(2026年7月21日) + +### 25. M3算错DW01A过流阈值 +- **项目**:GBC V5.1 M3第6轮审查P1-3 +- **翻车**(M3的翻车):M3假设负载电流流过R26(1kΩ)计算过流阈值=0.16mA,实际R26是DW01A的CS引脚限流电阻,CS是高阻输入,负载电流根本不走R26。真实过流阈值=0.15V÷8205A导通电阻(75mΩ)≈2A,165mA工作电流远低于此 +- **代价**:浪费审查时间 +- **教训**:AI审查报告的结论也要逐条核验,尤其是计算类结论 + +### 26. M3张冠李戴晶振ESR规格 +- **项目**:GBC V5.1 M3第6轮审查P1-4 +- **翻车**(M3的翻车):M3声称"ESP32-C3 datasheet v2.4 Section 2.4.2: ESR≤60Ω",实际查datasheet原文Section 5.2建议工作条件表根本没有晶振ESR规格。60Ω来源不明,疑似从32.768kHz RTC晶振ESR≤70kΩ张冠李戴。ESP32-C3官方对40MHz晶振不设ESR限制 +- **代价**:浪费时间论证,但C424432(ESR=40Ω)确认不换 +- **教训**:AI引用的"官方规格"必须回原文验证,不能盲信 + +--- + +## 翻车分类统计 + +- Strapping引脚相关:次数=7次, 典型案例=#8/9/13/17/18/19/20 +- MOSFET接法相关:次数=3次, 典型案例=#4/5/6 +- IC引脚映射/封装:次数=3次, 典型案例=#7/16/23 +- 设计继承/流程:次数=2次, 典型案例=#10/19 +- 选型/成本:次数=3次, 典型案例=#12/21/22 +- 固件/编译:次数=2次, 典型案例=#14/15 +- AI审查假警报:次数=2次, 典型案例=#25/26 +- ADC/模拟:次数=1次, 典型案例=#24 +- 面包板验证:次数=1次, 典型案例=#11 +- IDE/工具:次数=1次, 典型案例=#1 + +--- + +## 最贵的5条教训 + +1. **¥420** — MOSFET源极跟随器+引脚D/S反,整板报废(#4+#5) +2. **废板** — ESP32-32D没原生USB没加串口芯片,变砖(#12) +3. **两板飞线** — INA226封装映射错误,模拟功能全废(#16) +4. **差点砖** — RPM GPIO45 LED拉高Strapping变砖(#20) +5. **两板飞线** — USB D+多余上拉COM口打不开(#14) + +--- + +## 铁律沉淀 + +从这些翻车中提炼出来的规则,已写入MEMORY.md长期执行: + +1. N-MOS做开关,负载在上MOS在下,S极接地,禁止源极跟随器 +2. ESP32引脚分配必须先查Strapping/JTAG/ADC约束再分配 +3. 已验证项目的接法必须直接继承,禁止凭印象重写 +4. 不做面包板验证不上板 +5. IC引脚定义必须逐条对照官方Datasheet验证 +6. Strapping引脚不要挂总线,单独上拉/下拉锁死电平 +7. 不同ESP32型号的Strapping机制不同,不能套用 +8. 封装引脚映射必须从EDA库实际焊盘图验证 +9. 版本迁移时必须逐条检查上一版修复项 +10. 邮票孔模组=标准型=贵,QFN裸片=经济型=便宜 +11. AI审查报告结论也要逐条核验,不能盲信 +12. ADC分压源阻抗要在推荐值以内 +13. 反接保护不能只看主通路,寄生路径也要算 +14. ESP32-C3/S3原生USB不需要外部D+上拉 diff --git a/gpio/esp32-c2_gpio.md b/gpio/esp32-c2_gpio.md new file mode 100644 index 0000000..03c36d7 --- /dev/null +++ b/gpio/esp32-c2_gpio.md @@ -0,0 +1,93 @@ +# ESP32-C2 GPIO 引脚映射 +> **芯片:esp32-c2** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) +> 注意:SiP Flash 型号(ESP32-C2FH4 等)仅 14 个 GPIO 可用 +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, QFN24 待核实 Pin 号] +: 芯片使能。高电平=正常工作,低电平=芯片关闭。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 + +**VDD** [P] +: 芯片主供电 3.0-3.6V,推荐 3.3V,需 >=500mA。 +: VDD3P3 单一供电域。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振。**不可复用为 GPIO。** + +**LNA_IN** [I] +: 射频天线输入端口(WiFi 4 + BLE 5.0)。**不可复用为 GPIO。** + +**USB_D- / USB_D+** [I/O, GPIO18/19] +: USB Serial/JTAG。默认上电即启用。用作普通 GPIO 需固件重配 IO MUX。 +: 重配后 USB 烧录失效,只能通过 UART0 (GPIO20/21) 烧录。 + +> C2 无通用 SPI(SPI2 不可用)、无 I2S、仅 1 个 UART(UART0)。SiP Flash 型号(FH4 等)GPIO11-17 被内部 Flash 占用,仅 14 个 GPIO 可用。是 ESP8266 的直接替代升级。 + +## Strapping 引脚(2个) + +- **GPIO8**:功能=启动模式, 说明=上电时确定启动方式 +- **GPIO9**:功能=启动模式, 说明=上电时确定启动方式 + +> C2 只有 2 个 Strapping 引脚(GPIO8/9),比 C3(3个)更少。 + +## ADC 映射(仅 ADC1,5ch,WiFi 可用) + +- ADC1_CH0:GPIO=GPIO0, 备注=XTAL_32K_P 复用 +- ADC1_CH1:GPIO=GPIO1, 备注=XTAL_32K_N 复用 +- ADC1_CH2:GPIO=GPIO2, 备注=FSPIQ 复用 +- ADC1_CH3:GPIO=GPIO3, 备注=JTAG_MTMS 复用 +- ADC1_CH4:GPIO=GPIO4, 备注=JTAG_MTCK 复用 + +参数:12-bit SAR,最高 100 Ksps +- 衰减 0 dB: 0–750 mV +- 衰减 11 dB: 0–2500 mV +- 推荐工作范围: 0–2800 mV +- **无 ADC2,无 ADC/WiFi 冲突** + +## USB Serial/JTAG + +- USB_D-:GPIO=**GPIO18**, 说明=默认 USB,切 GPIO 需固件配置 +- USB_D+:GPIO=**GPIO19**, 说明=默认 USB,切 GPIO 需固件配置 + +## Flash 占用引脚 + +- GPIO11–17:功能=QSPI Flash, 说明=SiP 封装内 Flash 占用,不可用 + +> 非 SiP 型号(无内置 Flash)这些引脚可能可用,但极少见。 + +## 所有 GPIO 功能表 + +- 0:ADC=ADC1_CH0, RTC 唤醒=Deep-sleep, 复用功能=XTAL_32K_P +- 1:ADC=ADC1_CH1, RTC 唤醒=Deep-sleep, 复用功能=XTAL_32K_N +- 2:ADC=ADC1_CH2, RTC 唤醒=Deep-sleep, 复用功能=FSPIQ +- 3:ADC=ADC1_CH3, RTC 唤醒=Deep-sleep, 复用功能=JTAG_MTMS +- 4:ADC=ADC1_CH4, RTC 唤醒=Deep-sleep, 复用功能=JTAG_MTCK +- 5:RTC 唤醒=Deep-sleep, 复用功能=JTAG_MTDI +- 6:RTC 唤醒=Light-sleep, 复用功能=FSPICLK +- 7:RTC 唤醒=Light-sleep, 复用功能=FSPID +- 8:RTC 唤醒=Light-sleep, 复用功能=FSPICS0, Strapping=⚡ 启动模式 +- 9:RTC 唤醒=Light-sleep, 复用功能=FSPIHD, Strapping=⚡ 启动模式 +- 10:RTC 唤醒=Light-sleep, 复用功能=FSPIWP, FSPICS1 +- 11:RTC 唤醒=Light-sleep, 复用功能=VDD_SPI, 备注=🔒 Flash (SiP) +- 12–17:复用功能=FSPI 总线, 备注=🔒 Flash (SiP) +- 18:复用功能=**USB_D-**, 备注=⚠️ USB +- 19:复用功能=**USB_D+**, 备注=⚠️ USB +- 20:RTC 唤醒=Light-sleep, 复用功能=U0RXD, 备注=唯一 UART RX + +> GPIO21 在部分资料中出现但 QFN24 封装未引出。 + +## 新手安全 GPIO + +> **GPIO0–5(ADC 全通道,避开 Strapping 和 USB)** + +注意:C2 GPIO 总数仅 14(SiP 型号),规划外设时需精打细算。 + +## 与外设默认引脚 + +- UART0 TX:默认引脚=GPIO21, 说明=烧录和日志输出 +- UART0 RX:默认引脚=GPIO20, 说明=烧录和日志输入 +- USB-JTAG D-:默认引脚=GPIO18 +- USB-JTAG D+:默认引脚=GPIO19 diff --git a/gpio/esp32-c3_gpio.md b/gpio/esp32-c3_gpio.md new file mode 100644 index 0000000..f40f5ee --- /dev/null +++ b/gpio/esp32-c3_gpio.md @@ -0,0 +1,96 @@ +# ESP32-C3 GPIO 引脚映射 +> **芯片:esp32-c3** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, Pin 2 QFN32 / WROOM-02 模组 Pin2] +: 芯片使能。高电平=正常工作,低电平=芯片关闭。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 +: 上电时序:VDD 稳定 >=50µs (t_STBL) 后 EN 拉高;EN 拉低 >=50µs (t_RST) 触发复位。 + +**VDD** [P] +: 芯片主供电 3.0-3.6V,推荐 3.3V,需 >=500mA。 +: VDD3P3_CPU(数字 GPIO 域)/ VDD3P3_RTC(RTC 域)/ VDD_SPI(Flash 供电域)。 +: 内部数字 LDO 输出 1.1V 供数字核心,RTC LDO 输出 1.1V 供 RTC 域。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振。**不可复用为 GPIO。** +: 晶振两端对地各接负载电容(典型 15-22pF,具体值见晶振 datasheet)。 + +**LNA_IN** [I] +: 射频天线输入端口(WiFi 4 + BLE 5.0)。**不可复用为 GPIO。** + +**USB_D- / USB_D+** [I/O, GPIO18 (Pin13 模组) / GPIO19 (Pin14 模组)] +: USB Serial/JTAG。默认上电即启用 USB 上拉电阻。 +: 用作普通 GPIO 需固件重配 IO MUX,重配后 USB 功能失效只能通过 UART0 (GPIO20/21) 烧录。 + +> C3 无 DAC、无触摸传感器、无 ULP 协处理器、无以太网 MAC。GPIO12-17 被 Flash 占用。RTC Deep-sleep 唤醒仅 GPIO0-5。 + +## 驱动电流 + +- **GPIO18, GPIO19**:默认 **40 mA** — USB/JTAG 引脚,增强驱动能力 +- **其他所有 GPIO**:默认 **20 mA** — 标准驱动能力 + +## 上电时序 + +- t_STBL:**>= 50 µs** — VDD 稳定后到 EN 拉高之间的最短等待时间 +- t_RST:**>= 50 µs** — EN 拉低以触发硬件复位的最短保持时间 +- t_H:**>= 3 ms** — EN 拉高后 Strapping 引脚值被锁存的时间,此后 Strapping 引脚恢复普通 GPIO 功能 + +> EN (CHIP_PU) 引脚**绝对不能浮空**,必须通过外部上拉电阻(典型 10kΩ)连接到 VDD。 + +## Strapping 引脚(3个)⚠️ 与 D0WD 方向相反 + +- **GPIO2**:Pin=Pin5, 上电状态决定=VDD_SPI 电压, 正常启动需要=**LOW=3.3V**, 备注=**禁止接上拉!禁止做 I2C SDA!** +- **GPIO8**:Pin=Pin22, 上电状态决定=ROM 打印 + 下载模式, 正常启动需要=HIGH=关闭打印, LOW=下载, 备注=需上拉 3.3V,**与 D0WD 相反** +- **GPIO9**:Pin=Pin23, 上电状态决定=启动模式, 正常启动需要=HIGH=SPI Boot, 备注=需上拉 + BOOT 键 + +> ⚠️ 铁律:C3 的 GPIO2/8/9 三根 Strapping 引脚,设计初期就必须标红。GPIO2 绝对不能接任何有上拉的信号线。 + +## ADC 映射 + +### ADC1(5ch,WiFi 可用) + +- ADC1_CH0:GPIO=GPIO0 +- ADC1_CH1:GPIO=GPIO1 +- ADC1_CH2:GPIO=GPIO2, 备注=⚡ Strapping +- ADC1_CH3:GPIO=GPIO3 +- ADC1_CH4:GPIO=GPIO4 + +### ADC2(1ch) + +- ADC2_CH0:GPIO=GPIO5 + +> 12-bit SAR,最高 100 Ksps。**C3 无 ADC2/WiFi 冲突**(RISC-V 架构已修复)。 + +## USB Serial/JTAG + +- USB_D-:GPIO=**GPIO18**, 说明=默认 USB,切 GPIO 需固件配置 +- USB_D+:GPIO=**GPIO19**, 说明=默认 USB,切 GPIO 需固件配置 + +## 所有 GPIO 功能表 + +- 0:ADC=ADC1_CH0, RTC 唤醒=Deep-sleep, 复用=XTAL_32K_P +- 1:ADC=ADC1_CH1, RTC 唤醒=Deep-sleep, 复用=XTAL_32K_N +- 2:ADC=ADC1_CH2, RTC 唤醒=Deep-sleep, 复用=FSPIQ, Strapping=⚡ VDD_SPI, 备注=**禁止上拉!** +- 3:ADC=ADC1_CH3, RTC 唤醒=Deep-sleep, 复用=JTAG_MTMS +- 4:ADC=ADC1_CH4, RTC 唤醒=Deep-sleep, 复用=JTAG_MTCK +- 5:ADC=ADC2_CH0, RTC 唤醒=Deep-sleep, 复用=JTAG_MTDI +- 6:RTC 唤醒=Light-sleep, 复用=FSPICLK +- 7:RTC 唤醒=Light-sleep, 复用=FSPID +- 8:RTC 唤醒=Light-sleep, 复用=FSPICS0, Strapping=⚡ 启动+日志, 备注=**高电平=进下载** +- 9:RTC 唤醒=Light-sleep, 复用=FSPIHD, Strapping=⚡ Boot Mode +- 10:RTC 唤醒=Light-sleep, 复用=FSPIWP/FSPICS1 +- 11:RTC 唤醒=Light-sleep, 复用=VDD_SPI +- 12–17:复用=FSPI, 备注=🔒 Flash 占用 +- 18:复用=**USB_D-**, 备注=⚠️ USB 占 +- 19:复用=**USB_D+**, 备注=⚠️ USB 占 +- 20:复用=U0RXD +- 21:复用=U0TXD + +## 新手安全 GPIO + +> **GPIO0, GPIO1, GPIO4, GPIO5, GPIO10**(避开 Strapping/USB/Flash 冲突) diff --git a/gpio/esp32-c5_gpio.md b/gpio/esp32-c5_gpio.md new file mode 100644 index 0000000..8751ae1 --- /dev/null +++ b/gpio/esp32-c5_gpio.md @@ -0,0 +1,93 @@ +# ESP32-C5 GPIO 引脚映射 +> **芯片:esp32-c5** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) +> 芯片: 29 GPIO | 模组 WROOM-1: 22 GPIO | 模组 MINI-1: 22 GPIO +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, QFN48 待核实 Pin 号] +: 芯片使能。高电平=正常工作,低电平=芯片关闭。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 + +**VDD** [P] +: 芯片主供电 3.0-3.6V,推荐 3.3V,需 >=500mA。 +: VDD3P3 / VDD3P3_RTC。GPIO 分布多电源域(VDDPST2/VDDPST3/VDD_SPI)。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振。**不可复用为 GPIO。** +: 5GHz 天线需专门的射频匹配设计,PCB 走线阻抗控制要求高于 2.4GHz。 + +**双频 LNA_IN** [I] +: 2.4GHz + 5GHz 双频射频天线输入(WiFi 6 + BLE 5.0 + 802.15.4)。**不可复用为 GPIO。** +: 天线必须同时支持 2.4GHz 和 5GHz 双频段(双频天线或双天线方案)。 + +**USB_D- / USB_D+** [I/O] +: USB Serial/JTAG(与 C6 架构类似,具体 GPIO 分配待模组 Datasheet 确认)。 + +> C5 是乐鑫首款双频 Wi-Fi 6 MCU(2.4+5GHz),240MHz RISC-V。GPIO13/14 默认 40mA 驱动(其他 20mA)。2 个 CAN FD 控制器(ISO 11898-1:2015,最高 5Mbps)。 + +## 引脚驱动能力 + +- 20 mA(默认):适用引脚=大部分 GPIO +- **40 mA**:适用引脚=GPIO13, GPIO14 + +> GPIO13/14 有增强驱动能力,适合直接驱动 LED 等负载。 + +## ADC 映射(仅 ADC1,6ch,WiFi 可用) + +- ADC1_CH0:GPIO=GPIO1 +- ADC1_CH1:GPIO=GPIO2 +- ADC1_CH2:GPIO=GPIO3 +- ADC1_CH3:GPIO=GPIO4 +- ADC1_CH4:GPIO=GPIO5 +- ADC1_CH5:GPIO=GPIO6 + +参数:12-bit SAR。**无 ADC2,无 ADC/WiFi 冲突。** + +## 模拟电压比较器 + +- 比较器输入:GPIO=GPIO8, GPIO9 + +> GPIO8/9 可配置为模拟电压比较器输入。 + +## USB Serial/JTAG + +GPIO 分配待模组 Datasheet 确认(参考 C6:GPIO12/13)。 + +## 电源域 + +C5 的 GPIO 分布在多个电源域: +- VDDPST2 +- VDDPST3 +- VDD_SPI + +不同电源域的引脚在睡眠模式下的行为可能不同。 + +## GPIO 功能概览 + +- GPIO0:主要功能=XTAL_32K_P, 说明=RTC 唤醒源 +- GPIO1:主要功能=XTAL_32K_N, ADC1_CH0, 说明=RTC 唤醒源 +- GPIO2–6:主要功能=ADC1_CH1–CH5, FSPI/JTAG, 说明=ADC + 通用 IO +- GPIO7:主要功能=FSPID +- GPIO8–9:主要功能=Strapping, 模拟比较器, 说明=⚠️ 启动引脚 +- GPIO10–11:主要功能=FSPIWP, VDD_SPI +- GPIO12–13:主要功能=USB_D-/D+(待确认), 说明=⚠️ USB +- GPIO14–21:主要功能=通用 IO, UART, SDIO +- GPIO22–28:主要功能=通用 IO, 外设复用, 说明=QFN48 封装特有 + +## 模组 GPIO 引出 + +- ESP32-C5-WROOM-1:GPIO 数量=**22**, 说明=标准模组 +- ESP32-C5-MINI-1:GPIO 数量=**22**, 说明=迷你模组 +- 裸芯片:GPIO 数量=**29**, 说明=QFN48 封装 + +## 新手安全 GPIO + +> **GPIO1–6(ADC 全通道,避开 Strapping 和 USB)** + +## 注意事项 + +- C5 是较新的芯片(2024),部分引脚细节待更多模组资料确认 +- Strapping 引脚完整列表和上电默认电平待 TRM 发布 +- 5GHz Wi-Fi 天线设计需要专门的射频匹配 diff --git a/gpio/esp32-c6_gpio.md b/gpio/esp32-c6_gpio.md new file mode 100644 index 0000000..08e58b4 --- /dev/null +++ b/gpio/esp32-c6_gpio.md @@ -0,0 +1,88 @@ +# ESP32-C6 GPIO 引脚映射 +> **芯片:esp32-c6** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) +> ⚠️ 部分 Strapping 细节待 TRM 确认 +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, Pin 2 QFN40] +: 芯片使能。高电平=正常工作,低电平=芯片关闭。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 + +**VDD** [P] +: 芯片主供电 3.0-3.6V,推荐 3.3V,需 >=500mA。 +: VDD3P3 / VDD3P3_RTC。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振。**不可复用为 GPIO。** + +**LNA_IN** [I] +: 2.4GHz 射频天线输入(WiFi 6 + BLE 5.3 + 802.15.4 Thread/Zigbee)。**不可复用为 GPIO。** + +**USB_D- / USB_D+** [I/O, GPIO12/13] +: USB Serial/JTAG。 + +> C6 无 DAC、无触摸传感器。有 LP CPU (20MHz RISC-V) + LP SRAM 16KB。GPIO8-21 可用作 LP GPIO。WiFi 6 仅 20MHz 带宽 1T1R。 + +## Strapping 引脚 + +- GPIO4 (MTMS):功能=JTAG/启动 +- GPIO5 (MTDI):功能=启动 +- GPIO8:功能=启动模式 +- GPIO9:功能=启动模式 +- GPIO15:功能=启动模式 + +> 完整 Strapping 细节待 TRM 补充。 + +## ADC 映射(仅 ADC1,7ch,WiFi 可用) + +- ADC1_CH0:GPIO=GPIO0 +- ADC1_CH1:GPIO=GPIO1 +- ADC1_CH2:GPIO=GPIO2 +- ADC1_CH3:GPIO=GPIO3 +- ADC1_CH4:GPIO=GPIO4, 备注=⚡ Strapping (MTMS) +- ADC1_CH5:GPIO=GPIO5, 备注=⚡ Strapping (MTDI) +- ADC1_CH6:GPIO=GPIO6 + +> 12-bit SAR。C6 只有 ADC1,无 ADC2,**无 ADC/WiFi 冲突**。 + +## USB Serial/JTAG + +- USB_D-:GPIO=**GPIO12** +- USB_D+:GPIO=**GPIO13** + +## LP GPIO(低功耗域) + +GPIO8–GPIO21 可用作 LP GPIO,由 LP CPU 直接驱动,Deep-sleep 保持功能。 + +## 所有 GPIO 功能表 + +- 0:ADC=ADC1_CH0, 复用功能=XTAL_32K_P +- 1:ADC=ADC1_CH1, 复用功能=XTAL_32K_N +- 2:ADC=ADC1_CH2, 复用功能=FSPIQ +- 3:ADC=ADC1_CH3, 复用功能=JTAG_MTMS +- 4:ADC=ADC1_CH4, 复用功能=JTAG_MTCK, 备注=⚡ Strapping +- 5:ADC=ADC1_CH5, 复用功能=JTAG_MTDI, 备注=⚡ Strapping +- 6:ADC=ADC1_CH6, 复用功能=FSPICLK +- 7:复用功能=FSPID +- 8:LP GPIO=LP_GPIO0, 复用功能=FSPICS0, 备注=⚡ Strapping +- 9:LP GPIO=LP_GPIO1, 复用功能=FSPIHD, 备注=⚡ Strapping +- 10:LP GPIO=LP_GPIO2, 复用功能=FSPIWP +- 11:LP GPIO=LP_GPIO3, 复用功能=VDD_SPI +- 12:LP GPIO=LP_GPIO4, 复用功能=**USB_D-**, FSPIHD, 备注=⚠️ USB +- 13:LP GPIO=LP_GPIO5, 复用功能=**USB_D+**, FSPIWP, 备注=⚠️ USB +- 14:LP GPIO=LP_GPIO6, 复用功能=FSPICS0 +- 15:LP GPIO=LP_GPIO7, 复用功能=FSPID, 备注=⚡ Strapping +- 16:LP GPIO=LP_GPIO8, 复用功能=FSPICLK +- 17:LP GPIO=LP_GPIO9, 复用功能=FSPIQ +- 18:LP GPIO=LP_GPIO10, 复用功能=SDIO_CMD +- 19:LP GPIO=LP_GPIO11, 复用功能=SDIO_CLK, U0RXD +- 20:LP GPIO=LP_GPIO12, 复用功能=SDIO_DATA0, U0TXD +- 21:LP GPIO=LP_GPIO13, 复用功能=SDIO_DATA1 +- 22–23:复用功能=SDIO_DATA2/3 +- 24–29:复用功能=🔒 Flash 占用, 备注=QFN40 引脚 + +## 新手安全 GPIO + +> **GPIO0–3(ADC)、GPIO10–11、GPIO14、GPIO16–21** diff --git a/gpio/esp32-h2_gpio.md b/gpio/esp32-h2_gpio.md new file mode 100644 index 0000000..8a82ecb --- /dev/null +++ b/gpio/esp32-h2_gpio.md @@ -0,0 +1,76 @@ +# ESP32-H2 GPIO 引脚映射 +> **芯片:esp32-h2** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) +> ⚠️ H2 模组 GPIO 数量差异大,选型务必确认 +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, QFN32 待核实 Pin 号] +: 芯片使能。高电平=正常工作,低电平=芯片关闭。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 + +**VDD** [P] +: 芯片主供电 3.0-3.6V,推荐 3.3V,**仅需 >=250mA LDO**(无 WiFi 射频,峰值低)。 +: VDD3P3 单一供电域。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振。**不可复用为 GPIO。** + +**ANT** [I] +: 2.4GHz 射频天线输入(BLE 5.3 + 802.15.4 Thread/Zigbee)。**不可复用为 GPIO。** +: **H2 无 WiFi 射频**,仅 BLE + 802.15.4。天线设计仅需考虑 2.4GHz 单频。 + +**USB_D- / USB_D+** [I/O, GPIO12/13] +: USB Serial/JTAG。 + +> H2 全系列最低主频 96MHz,全系列最低功耗(峰值仅 ~60mA)。WROOM-07 模组仅 3 个 GPIO 引出务必注意。安全特性最强(含 Power Glitch Detector 电源毛刺检测)。 + +## Strapping 引脚 + +- GPIO8:功能=启动模式 +- GPIO9:功能=启动模式 +- GPIO25:功能=启动模式(待核实) + +## ADC 映射(5ch, 12-bit, 无 WiFi 冲突) + +- ADC1_CH0:GPIO=GPIO1 +- ADC1_CH1:GPIO=GPIO2 +- ADC1_CH2:GPIO=GPIO3 +- ADC1_CH3:GPIO=GPIO4 +- ADC1_CH4:GPIO=GPIO5 + +## GPIO 功能分组 + +### 数字引脚(仅 Light-sleep 可唤醒) + +- GPIO0:复用功能=XTAL_32K_P +- GPIO1:复用功能=XTAL_32K_N, ADC1_CH0 +- GPIO2:复用功能=FSPIQ, ADC1_CH1 +- GPIO3:复用功能=JTAG_MTMS, ADC1_CH2 +- GPIO4:复用功能=JTAG_MTCK, ADC1_CH3 +- GPIO5:复用功能=JTAG_MTDI, ADC1_CH4 +- GPIO6:复用功能=FSPICLK +- GPIO7:复用功能=FSPID + +### LP 引脚(所有功耗模式可用,可唤醒 Deep-sleep) + +- GPIO8:LP GPIO=LP_GPIO0, 复用功能=FSPICS0, ⚡ Strapping +- GPIO9:LP GPIO=LP_GPIO1, 复用功能=FSPIHD, ⚡ Strapping +- GPIO10:LP GPIO=LP_GPIO2, 复用功能=FSPIWP +- GPIO11:LP GPIO=LP_GPIO3, 复用功能=VDD_SPI +- GPIO12:LP GPIO=LP_GPIO4, 复用功能=USB_D- +- GPIO13:LP GPIO=LP_GPIO5, 复用功能=USB_D+ +- GPIO14:LP GPIO=LP_GPIO6 + +## Deep-sleep 唤醒限制 + +- ✅ Deep-sleep:GPIO=GPIO8–14(LP 引脚) +- ✅ Light-sleep:GPIO=GPIO0–14 +- ❌ Deep-sleep:GPIO=GPIO0–7, GPIO22–27 + +## 新手安全 GPIO +> **GPIO1–5(ADC)、GPIO10–11、GPIO14** + +## 模组 WROOM-07 注意 +⚠️ WROOM-07 仅引出 **3 个 GPIO**,如果 GPIO 不够用必须换 WROOM-02C。 diff --git a/gpio/esp32-p4_gpio.md b/gpio/esp32-p4_gpio.md new file mode 100644 index 0000000..4cb3d4e --- /dev/null +++ b/gpio/esp32-p4_gpio.md @@ -0,0 +1,97 @@ +# ESP32-P4 GPIO 引脚映射 +> **芯片:esp32-p4** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) +> 状态:PRELIMINARY - 完整引脚映射待正式 Datasheet 和 TRM 补充 + +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, QFN104 待核实 Pin 号 — Datasheet v0.6 PRELIMINARY] +: 芯片使能。高电平=正常工作,低电平=芯片关闭。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 + +**VDD_HP** [P] +: HP CPU 核心供电(400MHz 双核 RISC-V),3.0-3.6V。 + +**VDD_LP** [P] +: LP CPU 核心供电(40MHz 单核 RISC-V),3.0-3.6V。 + +**VDD_PSRAM** [P] +: 封装内 PSRAM 独立供电,**1.8V**(16MB 或 32MB OPI/HPI)。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。QFN104 底部 EPAD 接 GND。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振。**不可复用为 GPIO。** + +**无射频天线** [-] +: **P4 无任何无线功能**(无 WiFi / 无 BLE / 无 Thread / 无 Zigbee)。 +: 需要无线连接时必须外挂协处理器(ESP32-C6/C5 模组),通过 SPI/SDIO/UART 通信。 + +**USB_HS_OTG_D- / USB_HS_OTG_D+** [I/O] +: USB 2.0 高速 OTG 480 Mbps,专用引脚。 + +**USB_FS_OTG_D- / USB_FS_OTG_D+** [I/O] +: USB 2.0 全速 OTG 12 Mbps,专用引脚。 + +**USB_Serial_JTAG** [I/O] +: 烧录和调试,专用引脚。 + +> P4 定位为应用处理器(非 MCU),QFN104 10x10mm 封装。MIPI CSI/DSI、H264、JPEG、ISP、2D-DMA。Datasheet v0.6 为初版,设计前务必联系 Espressif FAE 确认最新资料。 + +## Strapping 引脚(5个) + +- **GPIO35**:上电默认=Weak Pull-Up, 功能=下载模式:下拉到 GND = Download Boot +- **GPIO36**:上电默认=Floating(无内置上下拉), 功能=下载模式:上拉到 VDD = Download Boot +- 其余 3 个:上电默认=待 TRM 确认, 功能=启动配置 + +### 启动模式选择 + +- SPI Boot(正常):GPIO35=1, GPIO36=任意 +- Download Boot:GPIO35=0, GPIO36=1 + +### 固件下载接口 + +- UART0:引脚=TXD0=**GPIO37**, RXD0=**GPIO38** + +## ADC 映射 + +### ADC1(8通道) + +- ADC1_CH0:GPIO=GPIO16 +- ADC1_CH1:GPIO=GPIO17 +- ADC1_CH2:GPIO=GPIO18 +- ADC1_CH3:GPIO=GPIO19 +- ADC1_CH4:GPIO=GPIO20 +- ADC1_CH5:GPIO=GPIO21 +- ADC1_CH6:GPIO=GPIO22 +- ADC1_CH7:GPIO=GPIO23 + +参数:12-bit SAR,2 个 ADC 控制器。LP DIG ADC 待核实。 + +## 触摸传感器映射 + +- Touch1 - Touch14:GPIO=GPIO2 - GPIO15 + +## GPIO 功能分组 + +- GPIO0 - GPIO1:主要功能=通用数字 IO +- GPIO2 - GPIO15:主要功能=触摸传感器 + 通用 IO, 说明=14 个触摸通道 +- GPIO16 - GPIO23:主要功能=ADC1_CH0 - ADC1_CH7, 说明=8 通道 12-bit ADC +- GPIO24 - GPIO55:主要功能=通用 IO / 外设复用, 说明=含 UART/SPI/I2C/I2S/PWM 等 + +## 关键外设接口 + +- MIPI CSI:说明=2-lane 摄像头输入(专用引脚) +- MIPI DSI:说明=2-lane 显示输出(专用引脚) +- USB 2.0 HS OTG:说明=高速 480 Mbps(专用引脚) +- USB 2.0 FS OTG:说明=全速 12 Mbps +- USB Serial/JTAG:说明=烧录和调试 +- Ethernet RMII:说明=10/100 Mbps(专用引脚) +- SD/MMC:说明=SDIO 3.0(专用引脚) + +## 注意事项 + +- QFN104 封装(10x10mm),55 个可编程 GPIO +- 封装内集成 16MB 或 32MB PSRAM(1.8V OPI/HPI) +- 无无线功能,需搭配 C6/C5 等协处理器提供 WiFi/BLE +- 完整 IO MUX 表待 ESP32-P4 TRM 正式版发布 diff --git a/gpio/esp32-s2_gpio.md b/gpio/esp32-s2_gpio.md new file mode 100644 index 0000000..b85f4fd --- /dev/null +++ b/gpio/esp32-s2_gpio.md @@ -0,0 +1,112 @@ +# ESP32-S2 GPIO 引脚映射 +> **芯片:esp32-s2** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, Pin 56 QFN56] +: 芯片使能。高电平=正常工作,低电平=芯片关闭。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 + +**VDD** [P] +: 芯片主供电 3.0-3.6V,推荐 3.3V,需 >=500mA。 +: VDD3P3_RTC / VDD3P3_CPU。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振。**不可复用为 GPIO。** + +**LNA_IN** [I] +: 射频天线输入端口。**不可复用为 GPIO。** + +**XTAL_32K_P / XTAL_32K_N** [I/O] +: 32.768 kHz RTC 晶振(可选),XTAL_32K_P=GPIO15, XTAL_32K_N=GPIO16。 + +**USB_D- / USB_D+** [I/O, GPIO19/20] +: USB OTG 全速 12 Mbps。用作普通 GPIO 需固件禁用 USB OTG 并重配 IO MUX。 +: USB_D- 和 USB_D+ 同时也是 ADC2_CH8/CH9(WiFi 不可用)。 + +> S2 无蓝牙(此为与 ESP32 最大区别)。3 个 Strapping(GPIO0/45/46),比 ESP32 简单。 + +## Strapping 引脚(3个) + +- **GPIO0**:上电默认=Pull-Up, 功能=0=下载模式, 1=SPI Boot, 使用限制=不能在上电时被外部拉低 +- **GPIO45**:上电默认=Pull-Down, 功能=VDD_SPI 电压 0=1.8V, 1=3.3V, 使用限制=上电后锁存 +- **GPIO46**:上电默认=Pull-Down, 功能=0=静默启动(无串口日志), 使用限制=**仅输入**,不能做输出 + +## ADC 映射 + +### ADC1(WiFi 可用,10ch) + +- ADC1_CH0:GPIO=GPIO1 +- ADC1_CH1:GPIO=GPIO2 +- ADC1_CH2:GPIO=GPIO3 +- ADC1_CH3:GPIO=GPIO4 +- ADC1_CH4:GPIO=GPIO5 +- ADC1_CH5:GPIO=GPIO6 +- ADC1_CH6:GPIO=GPIO7 +- ADC1_CH7:GPIO=GPIO8 +- ADC1_CH8:GPIO=GPIO9 +- ADC1_CH9:GPIO=GPIO10 + +### ADC2(WiFi 不可用,10ch) + +- ADC2_CH0:GPIO=GPIO11 +- ADC2_CH1:GPIO=GPIO12 +- ADC2_CH2:GPIO=GPIO13 +- ADC2_CH3:GPIO=GPIO14 +- ADC2_CH4:GPIO=GPIO15, 备注=XTAL_32K_P +- ADC2_CH5:GPIO=GPIO16, 备注=XTAL_32K_N +- ADC2_CH6:GPIO=GPIO17, 备注=DAC_1 +- ADC2_CH7:GPIO=GPIO18, 备注=DAC_2 +- ADC2_CH8:GPIO=GPIO19, 备注=USB_D- +- ADC2_CH9:GPIO=GPIO20, 备注=USB_D+ + +## DAC + +- DAC_1:GPIO=GPIO17, 分辨率=8-bit +- DAC_2:GPIO=GPIO18, 分辨率=8-bit + +## USB OTG + +- USB_D-:GPIO=GPIO19, 说明=可切换为普通 GPIO +- USB_D+:GPIO=GPIO20, 说明=可切换为普通 GPIO + +## Flash 占用引脚 + +GPIO26–GPIO32:模组内部 Flash/PSRAM 占用 + +## 所有 GPIO 功能表 + +- 0:RTC=RTC_GPIO0, 备注=⚡ Strapping(启动模式) +- 1:ADC=ADC1_CH0, Touch=Touch1, RTC=RTC_GPIO1 +- 2:ADC=ADC1_CH1, Touch=Touch2, RTC=RTC_GPIO2 +- 3:ADC=ADC1_CH2, Touch=Touch3, RTC=RTC_GPIO3 +- 4:ADC=ADC1_CH3, Touch=Touch4, RTC=RTC_GPIO4 +- 5:ADC=ADC1_CH4, Touch=Touch5, RTC=RTC_GPIO5 +- 6:ADC=ADC1_CH5, Touch=Touch6, RTC=RTC_GPIO6 +- 7:ADC=ADC1_CH6, Touch=Touch7, RTC=RTC_GPIO7 +- 8:ADC=ADC1_CH7, Touch=Touch8, RTC=RTC_GPIO8 +- 9:ADC=ADC1_CH8, Touch=Touch9, RTC=RTC_GPIO9 +- 10:ADC=ADC1_CH9, Touch=Touch10, RTC=RTC_GPIO10 +- 11:ADC=ADC2_CH0, Touch=Touch11, RTC=RTC_GPIO11 +- 12:ADC=ADC2_CH1, Touch=Touch12, RTC=RTC_GPIO12 +- 13:ADC=ADC2_CH2, Touch=Touch13, RTC=RTC_GPIO13 +- 14:ADC=ADC2_CH3, Touch=Touch14, RTC=RTC_GPIO14 +- 15:ADC=ADC2_CH4, RTC=RTC_GPIO15, 备注=XTAL_32K_P +- 16:ADC=ADC2_CH5, RTC=RTC_GPIO16, 备注=XTAL_32K_N +- 17:ADC=ADC2_CH6, DAC=DAC_1, RTC=RTC_GPIO17 +- 18:ADC=ADC2_CH7, DAC=DAC_2, RTC=RTC_GPIO18 +- 19:ADC=ADC2_CH8, RTC=RTC_GPIO19, 备注=USB_D- +- 20:ADC=ADC2_CH9, RTC=RTC_GPIO20, 备注=USB_D+ +- 21:RTC=RTC_GPIO21 +- 26–32:备注=🔒 Flash PSRAM +- 43:备注=U0TXD +- 44:备注=U0RXD +- 45:备注=⚡ Strapping +- 46:备注=⚡ Strapping, **仅输入** + +## 新手安全 GPIO + +> **GPIO1–10(ADC1全通道)、GPIO11–14、GPIO17(DAC)、GPIO18(DAC)、GPIO21** diff --git a/gpio/esp32-s3_gpio.md b/gpio/esp32-s3_gpio.md new file mode 100644 index 0000000..5b822c4 --- /dev/null +++ b/gpio/esp32-s3_gpio.md @@ -0,0 +1,108 @@ +# ESP32-S3 GPIO 引脚映射 +> **芯片:esp32-s3** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, Pin 3 QFN56] +: 芯片使能。高电平=正常工作,低电平=芯片关闭。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 + +**VDD** [P] +: 芯片主供电 3.0-3.6V,推荐 3.3V,需 >=500mA。 +: VDD3P3_RTC / VDD3P3_CPU。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振。**不可复用为 GPIO。** + +**LNA_IN** [I] +: 射频天线输入端口(WiFi 4 + BLE 5.0)。**不可复用为 GPIO。** + +**XTAL_32K_P / XTAL_32K_N** [I/O] +: 32.768 kHz RTC 晶振(可选),XTAL_32K_P=GPIO15, XTAL_32K_N=GPIO16。 + +**USB_OTG_D- / USB_OTG_D+** [I/O, GPIO19/20] +: USB OTG 全速 12 Mbps。用作普通 GPIO 需固件禁用 USB OTG。 + +**USB_Serial_JTAG_D- / USB_Serial_JTAG_D+** [I/O] +: USB Serial/JTAG 控制器,专用独立引脚(不占用 GPIO)。 +: S3 是唯一同时具备双 USB 控制器(OTG + Serial/JTAG)的芯片。 + +> S3 无 DAC。Octal PSRAM 模组(S3R8/S3R8V)GPIO33-37 被 SPIIO4-SPIIO7 和 SPIDQS 占用。 + +## Strapping 引脚(4个) + +- **GPIO0**:上电默认=Weak Pull-Up, 功能=0=Download Boot(与 GPIO46 联合) +- **GPIO3**:上电默认=Floating, 功能=JTAG 信号源控制(需外部驱动) +- **GPIO45**:上电默认=Weak Pull-Down, 功能=VDD_SPI 电压 0=1.8V, 1=3.3V +- **GPIO46**:上电默认=Weak Pull-Down, 功能=Boot 模式 + ROM 日志控制 + +### 启动模式 +- SPI Boot:GPIO0=1, GPIO46=任意 +- Joint Download Boot:GPIO0=0, GPIO46=0 + +## ADC 映射 + +### ADC1(WiFi 可用,10ch) + +- ADC1_CH0:GPIO=GPIO1, Touch=Touch1, RTC=RTC_GPIO1 +- ADC1_CH1:GPIO=GPIO2, Touch=Touch2, RTC=RTC_GPIO2 +- ADC1_CH2:GPIO=GPIO3, Touch=Touch3, RTC=RTC_GPIO3 +- ADC1_CH3:GPIO=GPIO4, Touch=Touch4, RTC=RTC_GPIO4 +- ADC1_CH4:GPIO=GPIO5, Touch=Touch5, RTC=RTC_GPIO5 +- ADC1_CH5:GPIO=GPIO6, Touch=Touch6, RTC=RTC_GPIO6 +- ADC1_CH6:GPIO=GPIO7, Touch=Touch7, RTC=RTC_GPIO7 +- ADC1_CH7:GPIO=GPIO8, Touch=Touch8, RTC=RTC_GPIO8 +- ADC1_CH8:GPIO=GPIO9, Touch=Touch9, RTC=RTC_GPIO9 +- ADC1_CH9:GPIO=GPIO10, Touch=Touch10, RTC=RTC_GPIO10 + +### ADC2(WiFi 不可用,10ch) + +- ADC2_CH0:GPIO=GPIO11, Touch=Touch11, RTC=RTC_GPIO11 +- ADC2_CH1:GPIO=GPIO12, Touch=Touch12, RTC=RTC_GPIO12 +- ADC2_CH2:GPIO=GPIO13, Touch=Touch13, RTC=RTC_GPIO13 +- ADC2_CH3:GPIO=GPIO14, Touch=Touch14, RTC=RTC_GPIO14 +- ADC2_CH4:GPIO=GPIO15, RTC=RTC_GPIO15, 备注=XTAL_32K_P +- ADC2_CH5:GPIO=GPIO16, RTC=RTC_GPIO16, 备注=XTAL_32K_N +- ADC2_CH6:GPIO=GPIO17, RTC=RTC_GPIO17 +- ADC2_CH7:GPIO=GPIO18, RTC=RTC_GPIO18 +- ADC2_CH8:GPIO=GPIO19, RTC=RTC_GPIO19, 备注=USB_D- +- ADC2_CH9:GPIO=GPIO20, RTC=RTC_GPIO20, 备注=USB_D+ + +## GPIO 全功能表 + +- GPIO0:RTC=RTC_GPIO0, 备注=⚡ Strapping +- GPIO1–8:ADC=ADC1_CH0–7, Touch=Touch1–8, RTC=RTC, 备注=ADC1, 新手安全 +- GPIO9:ADC=ADC1_CH8, Touch=Touch9, RTC=RTC_GPIO9, 备注=FSPIHD 复用 +- GPIO10:ADC=ADC1_CH9, Touch=Touch10, RTC=RTC_GPIO10, 备注=FSPICS0 复用 +- GPIO11:ADC=ADC2_CH0, Touch=Touch11, RTC=RTC_GPIO11, 备注=FSPID 复用 +- GPIO12:ADC=ADC2_CH1, Touch=Touch12, RTC=RTC_GPIO12, 备注=FSPICLK 复用 +- GPIO13:ADC=ADC2_CH2, Touch=Touch13, RTC=RTC_GPIO13, 备注=FSPIQ 复用 +- GPIO14:ADC=ADC2_CH3, Touch=Touch14, RTC=RTC_GPIO14, 备注=FSPIWP 复用 +- GPIO15–18:ADC=ADC2_CH4–7, RTC=RTC, 备注=U0RTS/U0CTS/U1TXD/U1RXD +- GPIO19:ADC=ADC2_CH8, RTC=RTC_GPIO19, USB=**USB_D-**, 备注=U1RTS +- GPIO20:ADC=ADC2_CH9, RTC=RTC_GPIO20, USB=**USB_D+**, 备注=U1CTS +- GPIO21:RTC=RTC_GPIO21 +- GPIO26–32:备注=🔒 SPI Flash/PSRAM +- GPIO33–37:备注=🔒 Octal PSRAM(S3R8/S3R8V) +- GPIO38:备注=FSPIWP +- GPIO39:备注=MTCK (JTAG) +- GPIO40:备注=MTDO (JTAG) +- GPIO41:备注=MTDI (JTAG) +- GPIO42:备注=MTMS (JTAG) +- GPIO43:备注=U0TXD(烧录) +- GPIO44:备注=U0RXD(烧录) +- GPIO45:备注=⚡ Strapping +- GPIO46:备注=⚡ Strapping +- GPIO47–48:备注=SPICLK 差分,⚠️ 部分模组 1.8V + +## 新手安全 GPIO + +> **GPIO1–8, GPIO15–18, GPIO21, GPIO47, GPIO48** + +## 常用外设默认引脚 +- UART0 TX/RX:引脚=GPIO43 / GPIO44 +- USB OTG D-/D+:引脚=GPIO19 / GPIO20 +- JTAG TMS/TCK/TDI/TDO:引脚=GPIO42 / GPIO39 / GPIO41 / GPIO40 diff --git a/gpio/esp32_gpio.md b/gpio/esp32_gpio.md new file mode 100644 index 0000000..f3af077 --- /dev/null +++ b/gpio/esp32_gpio.md @@ -0,0 +1,138 @@ +# ESP32 GPIO 引脚映射 +> **芯片:esp32** | **类别:gpio** | **信源:** [Espressif 官方文档](https://docs.espressif.com) + +## 系统引脚(System Pins) + +**EN (CHIP_PU)** [I, Pin 9 QFN48] +: 芯片使能。高电平=正常工作,低电平=芯片关闭(最小功耗)。 +: **禁止浮空!** 必须外部上拉到 VDD(典型 10kΩ)。 +: 上电时序:VDD 稳定 >=50µs (t_STBL) 后 EN 拉高;EN 拉低 >=50µs (t_RST) 触发复位。 + +**VDD** [P] +: 芯片主供电 3.0-3.6V,推荐 3.3V,需 >=500mA。 +: VDD3P3_RTC(RTC域)/ VDD3P3_CPU(CPU IO域)/ VDD_SDIO(Flash供电,1.8V或3.3V由GPIO12选择)。 + +**GND** [P] +: 所有 GND 焊盘必须全部连接到电源地平面。QFN48 底部 EPAD 也接 GND。 + +**XTAL_P / XTAL_N** [-] +: 40 MHz 外部高速晶振,XTAL_P=Pin45, XTAL_N=Pin46。**不可复用为 GPIO。** +: 晶振两端对地各接负载电容(典型 15-22pF)。 + +**LNA_IN** [I, Pin2] +: 射频天线输入端口。**不可复用为 GPIO。** + +**XTAL_32K_P / XTAL_32K_N** [I/O] +: 32.768 kHz RTC 晶振(可选),XTAL_32K_P=GPIO32, XTAL_32K_N=GPIO33。 +: 不使用 RTC 晶振时可做普通 GPIO。 + +> ESP32 无原生 USB,烧录通过 UART0 (GPIO1=TX, GPIO3=RX)。芯片版本 v3.0/v3.1 为当前量产版本。 + +## 仅输入引脚(GPI) + +- **GPIO34**:说明=仅输入,无内部上拉/下拉 +- **GPIO35**:说明=仅输入,无内部上拉/下拉 +- **GPIO36** (SENSOR_VP):说明=仅输入,无内部上拉/下拉 +- **GPIO39** (SENSOR_VN):说明=仅输入,无内部上拉/下拉 + +> GPIO37(SENSOR_CAPP) 和 GPIO38(SENSOR_CAPN) 也是仅输入,但 WROOM-32 模组未引出。 + +## Flash/PSRAM 占用引脚(不可复用) + +- **GPIO6**:功能=SD_CLK / SPICLK, 说明=连接内部 Flash +- **GPIO7**:功能=SD_DATA0 / SPIQ, 说明=连接内部 Flash +- **GPIO8**:功能=SD_DATA1 / SPID, 说明=连接内部 Flash +- **GPIO9**:功能=SD_DATA2 / SPIHD, 说明=连接内部 Flash +- **GPIO10**:功能=SD_DATA3 / SPIWP, 说明=连接内部 Flash +- **GPIO11**:功能=SD_CMD / SPICS0, 说明=连接内部 Flash +- **GPIO16**:功能=SPICS1 / PSRAM_CS, 说明=PSRAM 片选(WROVER) +- **GPIO17**:功能=SPID / PSRAM_DATA, 说明=PSRAM 数据(WROVER) + +## Strapping 引脚 + +- **GPIO0**:引脚名=Boot, 上电默认=Pull-Up (1), 功能=LOW=下载模式, HIGH=正常启动, 使用限制=不能在上电时被外部拉低 +- **GPIO2**:引脚名=Boot, 上电默认=Pull-Down (0), 功能=与 GPIO0 联合决定启动模式, 使用限制=上电时需浮空或低 +- **GPIO5**:引脚名=SDIO Slave, 上电默认=Pull-Up (1), 功能=SDIO 从机时序控制, 使用限制=上电时必须保持高 +- **GPIO12 (MTDI)**:引脚名=VDD_SDIO, 上电默认=Pull-Down (0), 功能=0=3.3V, 1=1.8V Flash电压, 使用限制=**禁止上拉!会烧Flash!** +- **GPIO15 (MTDO)**:引脚名=Boot, 上电默认=Pull-Up (1), 功能=0=静默启动, 1=U0TXD打印日志, 使用限制=上电时需为高 + +### 启动模式 +- SPI Boot(正常启动):GPIO0=1, GPIO2=任意 +- Download Boot(烧录):GPIO0=0, GPIO2=0 + +## ADC 完整映射 + +### ADC1(WiFi 可用,8通道) + +- ADC1_CH0:GPIO=GPIO36 (SENSOR_VP), 类型=仅输入 +- ADC1_CH1:GPIO=GPIO37, 类型=仅输入(WROOM 未引出) +- ADC1_CH2:GPIO=GPIO38, 类型=仅输入(WROOM 未引出) +- ADC1_CH3:GPIO=GPIO39 (SENSOR_VN), 类型=仅输入 +- ADC1_CH4:GPIO=GPIO32, 类型=I/O +- ADC1_CH5:GPIO=GPIO33, 类型=I/O +- ADC1_CH6:GPIO=GPIO34, 类型=仅输入 +- ADC1_CH7:GPIO=GPIO35, 类型=仅输入 + +### ADC2(WiFi 不可用,10通道) + +- ADC2_CH0:GPIO=GPIO4 +- ADC2_CH1:GPIO=GPIO0, 备注=⚡ Strapping +- ADC2_CH2:GPIO=GPIO2, 备注=⚡ Strapping +- ADC2_CH3:GPIO=GPIO15, 备注=⚡ Strapping (MTDO) +- ADC2_CH4:GPIO=GPIO13, 备注=JTAG +- ADC2_CH5:GPIO=GPIO12, 备注=⚡ Strapping (MTDI) + JTAG +- ADC2_CH6:GPIO=GPIO14, 备注=JTAG +- ADC2_CH7:GPIO=GPIO27 +- ADC2_CH8:GPIO=GPIO25, 备注=DAC_CH1 +- ADC2_CH9:GPIO=GPIO26, 备注=DAC_CH2 + +> ⚠️ **ADC2 与 WiFi 冲突:使用 WiFi 时 ADC2 完全不可用,只能用 ADC1** + +## DAC + +- DAC_CH1:GPIO=GPIO25, 分辨率=8-bit +- DAC_CH2:GPIO=GPIO26, 分辨率=8-bit + +## 完整 GPIO 功能表 + +- 0:I/O=I/O, ADC=ADC2_CH1, Touch=Touch1, RTC=RTC_GPIO11, 备注=⚡ Strapping +- 1:I/O=I/O, 备注=U0TXD(默认) +- 2:I/O=I/O, ADC=ADC2_CH2, Touch=Touch2, RTC=RTC_GPIO12, 备注=⚡ Strapping +- 3:I/O=I/O, 备注=U0RXD(默认) +- 4:I/O=I/O, ADC=ADC2_CH0, Touch=Touch0, RTC=RTC_GPIO10, 备注=常用 1-Wire +- 5:I/O=I/O, 备注=⚡ Strapping +- 6–11:备注=🔒 Flash 占用 +- 12:I/O=I/O, ADC=ADC2_CH5, Touch=Touch5, RTC=RTC_GPIO15, 备注=⚡ **禁止上拉** +- 13:I/O=I/O, ADC=ADC2_CH4, Touch=Touch4, RTC=RTC_GPIO14, 备注=JTAG MTCK +- 14:I/O=I/O, ADC=ADC2_CH6, Touch=Touch6, RTC=RTC_GPIO16, 备注=JTAG MTMS +- 15:I/O=I/O, ADC=ADC2_CH3, Touch=Touch3, RTC=RTC_GPIO13, 备注=⚡ Strapping +- 16:I/O=I/O, 备注=🔒 PSRAM(WROVER) +- 17:I/O=I/O, 备注=🔒 PSRAM(WROVER) +- 18:I/O=I/O, 备注=VSPI CLK +- 19:I/O=I/O, 备注=VSPI MISO +- 21:I/O=I/O, 备注=I2C SDA 默认 +- 22:I/O=I/O, 备注=I2C SCL 默认 +- 23:I/O=I/O, 备注=VSPI MOSI +- 25:I/O=I/O, ADC=ADC2_CH8, DAC=DAC1, RTC=RTC_GPIO6 +- 26:I/O=I/O, ADC=ADC2_CH9, DAC=DAC2, RTC=RTC_GPIO7 +- 27:I/O=I/O, ADC=ADC2_CH7, Touch=Touch7, RTC=RTC_GPIO17 +- 32:I/O=I/O, ADC=ADC1_CH4, Touch=Touch9, RTC=RTC_GPIO9, 备注=32K_XP, ADC1 +- 33:I/O=I/O, ADC=ADC1_CH5, Touch=Touch8, RTC=RTC_GPIO8, 备注=32K_XN, ADC1 +- 34:I/O=**仅输入**, ADC=ADC1_CH6, RTC=RTC_GPIO4, 备注=无内部上下拉 +- 35:I/O=**仅输入**, ADC=ADC1_CH7, RTC=RTC_GPIO5, 备注=无内部上下拉 +- 36:I/O=**仅输入**, ADC=ADC1_CH0, RTC=RTC_GPIO0, 备注=SENSOR_VP +- 39:I/O=**仅输入**, ADC=ADC1_CH3, RTC=RTC_GPIO3, 备注=SENSOR_VN + +> ⚡ = Strapping | 🔒 = Flash/PSRAM | **仅输入** = 不能做输出 + +## 常用外设默认引脚 + +- UART0 TX/RX:默认引脚=GPIO1 / GPIO3 +- VSPI CLK/MISO/MOSI/CS:默认引脚=GPIO18 / GPIO19 / GPIO23 / GPIO5 +- HSPI CLK/MISO/MOSI/CS:默认引脚=GPIO14 / GPIO12 / GPIO13 / GPIO15 +- I2C0 SDA/SCL:默认引脚=GPIO21 / GPIO22 +- JTAG TMS/TCK/TDI/TDO:默认引脚=GPIO14 / GPIO13 / GPIO12 / GPIO15 + +## 新手安全 GPIO + +> **GPIO4, 13, 14, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33**