ESP32-C6 GPIO 速查
GPIO 编号 0–30,其中 GPIO14 只在内置 flash 的 QFN32 变体上存在,GPIO24–30 被 flash 占用——常用的 WROOM-1 模组(QFN40)实际引出 23 个,基本自由的 17 个(绿点),其余带前提。点击引脚看说明,用筛选按钮找可用脚。
点击任意引脚查看说明 —— 绿点自由使用,橙点有前提,红点勿用。
SPI 跑满 80MHz
和 C3 一样,SPI2 最高 80MHz 的前提是走 IO_MUX 直连:ESP-IDF 驱动只有在 bus 引脚(SCLK / MOSI / MISO 中实际用到的)全部落在 IO_MUX 位置时才走直连;任何一个不匹配,整条总线就静默改走 GPIO 矩阵,没有任何报错或日志。矩阵路径官方只保证 40MHz 及以下的行为与直连一致 [3],而分频不看路由,配 80MHz 引脚上照样输出 80MHz——超规格带病跑,可能点得亮,也可能间歇花屏。
| 信号 | IO_MUX 引脚 |
|---|---|
| SCLK (FSPICLK) | GPIO6 |
| MOSI (FSPID) | GPIO7 |
| MISO (FSPIQ) | GPIO2 |
| CS0 (FSPICS0) | GPIO16(默认串口 TX,别占) |
CS 不算 bus 引脚,走 GPIO 矩阵也不影响直连,而 C6 的 CS0 IO_MUX 位置 GPIO16 恰好是默认串口 TX——别为一个 CS 牺牲串口,随便挑个自由脚就行。注意 Arduino 核的默认 SPI 引脚(SS=18 / MOSI=19 / MISO=20 / SCK=21 [6])与 IO_MUX 位置不重合,走的是矩阵,只在 40MHz 内可靠——像 TFT_eSPI 这样自己指定引脚的库,按上表填即可。
接线示例(以 ST7789 屏为例,只写不读,MISO 不接):
| SCLK | MOSI | CS | DC | RST | BLK |
|---|---|---|---|---|---|
| GPIO6 | GPIO7 | GPIO18 | GPIO10 | GPIO11 | GPIO3 |
// bus 引脚匹配 IO_MUX 后,驱动自动走直连
spi_bus_config_t buscfg = {
.sclk_io_num = 6,
.mosi_io_num = 7,
.miso_io_num = -1, // 只写不读
.quadwp_io_num = -1,
.quadhd_io_num = -1,
};
spi_device_interface_config_t devcfg = {
.clock_speed_hz = SPI_MASTER_FREQ_80M,
.spics_io_num = 18,
// ...
};// User_Setup.h
#define TFT_SCLK 6
#define TFT_MOSI 7
#define TFT_CS 18
#define TFT_DC 10
#define TFT_RST 11
#define TFT_BL 3
#define TFT_BACKLIGHT_ON HIGH
#define SPI_FREQUENCY 80000000深睡与 LP 引脚
C6 比 C3 多了一个 LP(低功耗)核心:深度睡眠时主核断电,LP 核心还能继续跑——典型玩法是深睡中低功耗轮询传感器,有事再唤醒主核。但 LP 世界只有 GPIO0–7,且 LP 外设走 LP IO_MUX,引脚固定、不可经 GPIO 矩阵改道 [7]:
| 功能 | 引脚 |
|---|---|
| 深睡唤醒 | 0–7 任意 |
| LP I2C | SDA=GPIO6 / SCL=GPIO7 |
| LP UART | RX=GPIO4 / TX=GPIO5 |
取舍点:LP I2C 的 6 / 7 正是 80MHz SPI 的 SCLK / MOSI,「深睡采传感器」和「高速刷屏」在引脚上互斥,规划时先定谁优先。这个约束只管 LP 世界——主核醒着时 I2C / UART 照常走 GPIO 矩阵,任意脚都行。
选引脚决策
- 高速 SPI(屏幕 / 外部 flash)→ 固定
6 / 7,要读再加2;CS 任意自由脚(IO_MUX 的 CS0 在16,那是默认串口 TX,别占) - I2C / UART1 / PWM / WS2812 / TWAI(CAN) / I2S → 都走 GPIO 矩阵,没有固定引脚,任意自由脚都行
- I2C 记得上拉。Arduino 核默认
SDA=23/SCL=22[6]——这两个脚本来就自由,不像 C3 还牵扯 strapping - ADC →
GPIO0–6(ADC1 七个通道);C6 没有 ADC2,也就没有 C3 那个 ADC2 硬件缺陷的坑 - 深度睡眠唤醒 →
GPIO0–7(LP 域),比 C3 多两个 - 深睡期间跑 LP 核心 → 引脚固定且与 80MHz SPI 抢
6 / 7,见深睡与 LP 引脚 - 上电敏感负载(继电器 / MOS 驱动)→ 避开
8 / 9(boot strapping)、12 / 13(USB)和16(复位后输出 ROM 日志),首选3 / 10 / 11 / 18–23 - SDIO slave 从机 → 固定
18–23;不用 SDIO 时4 / 5的 strapping 电平无影响,放心用 - 模组上
GPIO24–30当作不存在(QFN40 裸片画板时它们接自己的 flash);GPIO14只有 QFN32 内置 flash 变体才有,QFN40 上本来就不存在
数据来源
核验于 2026-08-31。文中及引脚说明里的 [n] 编号对应以下来源: