引脚号、GPIO 号与引脚功能——三件不同的事
本页回答的问题:“引脚表写 J3-10,代码写 GPIO38,丝印写 FSPIWP——这是同一根针吗?”
三套编号,三个问题
| 体系 | 回答 | 属于 |
|---|---|---|
| 排针位置(J3 触点 10) | “物理上在哪?” | 板卡及其布局 |
| GPIO 编号(GPIO38) | “芯片的哪条 I/O 线?” | 芯片,经板卡布线引出 |
| 功能/丝印名(FSPIWP、U0TXD、GP25-LED) | “接着什么/适合干什么?” | 芯片复用功能+板卡接线 |
MCUID 板卡页上每个引脚链接都同时携带三者:SVG 引脚块是排针位置,claim 行点名 GPIO,功能列列出官方复用功能。
修订课:同一器件,换了 GPIO
最清晰的例子是 ESP32-S3-DevKitC-1 的 RGB LED:v1.0 由 GPIO48 驱动(J3 触点 16),v1.1 由 GPIO38 驱动(J3 触点 10)。板卡布局几乎没变——一次修订重新布线了驱动同一个 LED 的 GPIO。所以"LED 引脚"在你说出修订之前不是事实。见板载 LED 为什么在 GPIO38 或 GPIO48。
丝印课:功能名不是 GPIO 号
- 在 ESP32-DevKitC 上,标着 D0、D1、D2、D3、CMD、CLK 的引脚是 SPI flash 线——这些名字描述一个永不消失的内部功能,所有变体都一样。
- 在 Pico 上,GP25 既是"GPIO 25"也是"用户 LED"——是板卡接线让这一脚特殊;芯片并不知道 LED 的存在。
软件默认课
“Pico 的 UART0 在 GP0/GP1"来自 pico-sdk 板级头文件——这是软件约定。可以改,但只能改到该外设的其他合法复用脚(RP2040 IO bank 里 UART0 的 TX/RX 另在 GP12/13 和 GP16/17——不在 GP7);硬件事实是每个外设存在于哪些复用脚,默认值是 SDK 板级配置恰好选的。Pico 2 的 pico2.h 板头在 RP2350 上选了同样的 UART0/I2C0 默认——默认仍只是默认;RP2350 自己的合法复用集是数据手册事实,RP2040 的表覆盖不了它。ESP32 的 U0TXD/U0RXD 同理:芯片默认把 UART0 路由到固定引脚(DevKitC-1 排针表中的 GPIO43/44),IO 矩阵可重映射大多数功能。
本页不能告诉你的
- 每颗芯片的完整复用功能表——归芯片数据手册所有;MCUID 按板卡发布排针表,功能列逐条引自官方文档。
- 克隆板可能在相同位置印不同的丝印名——用板卡自己的文档核对,别套参考板的。
来源
- MCUID 数据记录:ESP32-S3-DevKitC-1(按修订区分的 LED 字段)、ESP32-DevKitC(flash 线引脚)、Pico / Pico 2(GP25 LED、板级头文件默认值)
- pico-sdk 板级头文件 pico.h(tag 2.3.1)——软件默认约定,按约定引用
- pico-sdk io_bank0.h——各外设固定的硬件复用脚(commit
079c6f39)