Files
esp32-dev/gpio/esp32_gpio.md
T

139 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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_RTCRTC域)/ VDD3P3_CPUCPU IO域)/ VDD_SDIOFlash供电,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 完整映射
### ADC1WiFi 可用,8通道)
- ADC1_CH0GPIO=GPIO36 (SENSOR_VP), 类型=仅输入
- ADC1_CH1GPIO=GPIO37, 类型=仅输入(WROOM 未引出)
- ADC1_CH2GPIO=GPIO38, 类型=仅输入(WROOM 未引出)
- ADC1_CH3GPIO=GPIO39 (SENSOR_VN), 类型=仅输入
- ADC1_CH4GPIO=GPIO32, 类型=I/O
- ADC1_CH5GPIO=GPIO33, 类型=I/O
- ADC1_CH6GPIO=GPIO34, 类型=仅输入
- ADC1_CH7GPIO=GPIO35, 类型=仅输入
### ADC2WiFi 不可用,10通道)
- ADC2_CH0GPIO=GPIO4
- ADC2_CH1GPIO=GPIO0, 备注=⚡ Strapping
- ADC2_CH2GPIO=GPIO2, 备注=⚡ Strapping
- ADC2_CH3GPIO=GPIO15, 备注=⚡ Strapping (MTDO)
- ADC2_CH4GPIO=GPIO13, 备注=JTAG
- ADC2_CH5GPIO=GPIO12, 备注=⚡ Strapping (MTDI) + JTAG
- ADC2_CH6GPIO=GPIO14, 备注=JTAG
- ADC2_CH7GPIO=GPIO27
- ADC2_CH8GPIO=GPIO25, 备注=DAC_CH1
- ADC2_CH9GPIO=GPIO26, 备注=DAC_CH2
> ⚠️ **ADC2 与 WiFi 冲突:使用 WiFi 时 ADC2 完全不可用,只能用 ADC1**
## DAC
- DAC_CH1GPIO=GPIO25, 分辨率=8-bit
- DAC_CH2GPIO=GPIO26, 分辨率=8-bit
## 完整 GPIO 功能表
- 0I/O=I/O, ADC=ADC2_CH1, Touch=Touch1, RTC=RTC_GPIO11, 备注=⚡ Strapping
- 1I/O=I/O, 备注=U0TXD(默认)
- 2I/O=I/O, ADC=ADC2_CH2, Touch=Touch2, RTC=RTC_GPIO12, 备注=⚡ Strapping
- 3I/O=I/O, 备注=U0RXD(默认)
- 4I/O=I/O, ADC=ADC2_CH0, Touch=Touch0, RTC=RTC_GPIO10, 备注=常用 1-Wire
- 5I/O=I/O, 备注=⚡ Strapping
- 611:备注=🔒 Flash 占用
- 12I/O=I/O, ADC=ADC2_CH5, Touch=Touch5, RTC=RTC_GPIO15, 备注=⚡ **禁止上拉**
- 13I/O=I/O, ADC=ADC2_CH4, Touch=Touch4, RTC=RTC_GPIO14, 备注=JTAG MTCK
- 14I/O=I/O, ADC=ADC2_CH6, Touch=Touch6, RTC=RTC_GPIO16, 备注=JTAG MTMS
- 15I/O=I/O, ADC=ADC2_CH3, Touch=Touch3, RTC=RTC_GPIO13, 备注=⚡ Strapping
- 16I/O=I/O, 备注=🔒 PSRAMWROVER
- 17I/O=I/O, 备注=🔒 PSRAMWROVER
- 18I/O=I/O, 备注=VSPI CLK
- 19I/O=I/O, 备注=VSPI MISO
- 21I/O=I/O, 备注=I2C SDA 默认
- 22I/O=I/O, 备注=I2C SCL 默认
- 23I/O=I/O, 备注=VSPI MOSI
- 25I/O=I/O, ADC=ADC2_CH8, DAC=DAC1, RTC=RTC_GPIO6
- 26I/O=I/O, ADC=ADC2_CH9, DAC=DAC2, RTC=RTC_GPIO7
- 27I/O=I/O, ADC=ADC2_CH7, Touch=Touch7, RTC=RTC_GPIO17
- 32I/O=I/O, ADC=ADC1_CH4, Touch=Touch9, RTC=RTC_GPIO9, 备注=32K_XP, ADC1
- 33I/O=I/O, ADC=ADC1_CH5, Touch=Touch8, RTC=RTC_GPIO8, 备注=32K_XN, ADC1
- 34I/O=**仅输入**, ADC=ADC1_CH6, RTC=RTC_GPIO4, 备注=无内部上下拉
- 35I/O=**仅输入**, ADC=ADC1_CH7, RTC=RTC_GPIO5, 备注=无内部上下拉
- 36I/O=**仅输入**, ADC=ADC1_CH0, RTC=RTC_GPIO0, 备注=SENSOR_VP
- 39I/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**