开发板引脚速查
树莓派、Arduino Uno 和 ESP32 的引脚一次查全,编号对照、复用功能和电源地线都标在同一张表里。
开发板
BCM2711 / BCM2712(Raspberry Pi 4 / 5)。物理引脚号是排针从左下角开始数的那套编号,2 的倍数是偶数排在下面一行(3V3 在 1 号)。写代码时用的是 BCM 编号,看排针找线的工具用物理编号,WiringPi 是第三套、容易和 BCM 混淆,新项目建议只用 BCM。
| 物理引脚 | BCM 编号 | WiringPi 编号 | 功能说明 |
|---|---|---|---|
| 1 | — | — | 电源 3.3V 电源输出,来自板载稳压器,给外设取电的推荐电压。 |
| 2 | — | — | 电源 5V 电源输出,直接来自 USB-C 供电,绕过稳压器,能带较大电流但受电源限制。 |
| 3 | GPIO2 | 8 | I2C I2C1 SDA,默认接了 1.8kΩ 上拉电阻。接别的 I2C 设备直接用这对。 |
| 4 | — | — | 电源 5V 电源输出。 |
| 5 | GPIO3 | 9 | I2C I2C1 SCL,默认接了 1.8kΩ 上拉电阻。 |
| 6 | — | — | 地线 地。 |
| 7 | GPIO4 | 7 | 普通 GPIO 通用 IO,同时是 1-Wire 默认引脚和 GPCLK0 时钟输出。默认带 1-Wire 功能时会占用它。 |
| 8 | GPIO14 | 15 | UART 串口 UART0 TXD,接串口设备的 RX。系统串口控制台默认占用,要在 raspi-config 里关掉才能当普通串口用。 |
| 9 | — | — | 地线 地。 |
| 10 | GPIO15 | 16 | UART 串口 UART0 RXD,接串口设备的 TX。 |
| 11 | GPIO17 | 0 | 普通 GPIO 通用 IO,常用作普通输出。 |
| 12 | GPIO18 | 1 | PWM / 定时器 PWM0 或 PCM_CLK,也是 I2S 的时钟脚,硬件 PWM 首选。 |
| 13 | GPIO27 | 2 | 普通 GPIO 通用 IO。 |
| 14 | — | — | 地线 地。 |
| 15 | GPIO22 | 3 | 普通 GPIO 通用 IO。 |
| 16 | GPIO23 | 4 | 普通 GPIO 通用 IO。 |
| 17 | — | — | 电源 3.3V 电源输出。 |
| 18 | GPIO24 | 5 | 普通 GPIO 通用 IO。 |
| 19 | GPIO10 | 12 | SPI SPI0 MOSI,主输出从输入。 |
| 20 | — | — | 地线 地。 |
| 21 | GPIO9 | 13 | SPI SPI0 MISO,主输入从输出。 |
| 22 | GPIO25 | 6 | 普通 GPIO 通用 IO,也常当软件 PWM 用。 |
| 23 | GPIO11 | 14 | SPI SPI0 SCLK,时钟。 |
| 24 | GPIO8 | 10 | SPI SPI0 CE0,片选 0。 |
| 25 | — | — | 地线 地。 |
| 26 | GPIO7 | 11 | SPI SPI0 CE1,片选 1。 |
| 27 | GPIO0 | 30 | I2C ID_SD,与 GPIO1 组成 I2C0,专门给 HAT 的 EEPROM 识别用。除非做 HAT,别动这两个脚。 |
| 28 | GPIO1 | 31 | I2C ID_SC,HAT EEPROM 的时钟线,板上已有 1.8kΩ 上拉。 |
| 29 | GPIO5 | 21 | 普通 GPIO 通用 IO。 |
| 30 | — | — | 地线 地。 |
| 31 | GPIO6 | 22 | 普通 GPIO 通用 IO。 |
| 32 | GPIO12 | 26 | PWM / 定时器 PWM0,和 GPIO18 共用同一个 PWM 通道,两个只能选一个。 |
| 33 | GPIO13 | 23 | PWM / 定时器 PWM1,与 GPIO18/12 组共通道。 |
| 34 | — | — | 地线 地。 |
| 35 | GPIO19 | 24 | SPI SPI1 MISO,也是 PCM_FS。 |
| 36 | GPIO16 | 27 | 普通 GPIO 通用 IO。 |
| 37 | GPIO26 | 25 | 普通 GPIO 通用 IO。 |
| 38 | GPIO20 | 28 | SPI SPI1 MOSI,也是 PCM_DIN,需要启用 SPI1 才生效。 |
| 39 | — | — | 地线 地。 |
| 40 | GPIO21 | 29 | SPI SPI1 SCLK,也是 PCM_DOUT。 |
按功能分组
| 功能 | 引脚 | 数量 |
|---|---|---|
| 电源 | 1、2、4、17 | 4 |
| 地线 | 6、9、14、20、25、30、34、39 | 8 |
| I2C | 3、5、27、28 | 4 |
| SPI | 19、21、23、24、26、35、38、40 | 8 |
| UART 串口 | 8、10 | 2 |
| PWM / 定时器 | 12、32、33 | 3 |
| 普通 GPIO | 7、11、13、15、16、18、22、29、31、36、37 | 11 |
表格里的引脚是第一列的编号(树莓派用物理引脚号、另外两块用丝印名)。同一根线可能同时属于多个功能,比如 Arduino 的 D11 既是 SPI 的 MOSI 也是 PWM,这里按最常见的用途归了一类。
接线前必须确认的几件事
先确认逻辑电平,再接线。树莓派和 ESP32 的 IO 都是 3.3V,Arduino Uno 是 5V。把 Uno 的 5V 输出接到树莓派或 ESP32 的 IO,基本会立刻打穿那个引脚,甚至烧掉整颗芯片。跨电平通信要么用电阻分压、要么用专用的电平转换模块,或者干脆只接信号低的一侧做单向输入。
ESP32 的启动脚。GPIO0、2、5、12、15 在上电瞬间会被芯片采样来决定启动模式。GPIO12 拉高会进不了正常启动,GPIO0 拉低会进下载模式,GPIO15 需要保持低电平。这些脚接继电器、LED、传感器时要先确认上电默认状态,否则表现为「板子一直重启」「烧录失败」,而代码本身完全没问题。
树莓派三套编号的坑。物理引脚 11 是 GPIO17,WiringPi 里叫 0,BCM 里叫 17 或 GPIO17。网上教程三套混着写,最容易接错线。经验做法是接线看物理引脚号、写代码看 BCM,不要用 WiringPi 编号,因为它已经停止维护,且在 Pi 5 上不支持。
上拉电阻和外设冲突。树莓派 GPIO2/3 板上已有 1.8kΩ 上拉,再加 I2C 模块自带的 4.7kΩ 上拉会并把阻值拉低,某些设备会出现时序不稳。GPIO0/1 也有上拉,而且是留给 HAT EEPROM 的。ESP32 的 GPIO34 到 39 没有内部上拉,接按键时必须在外部加电阻。
供电预算别只看引脚数量。树莓派的 3.3V 排针输出实际能给的电流有限(受板载稳压器限制,别超过 50mA),驱动电机、灯带这类负载要用外部电源,并且共地。ESP32 的 3V3 约 600mA,但 Wi-Fi 发射瞬时电流能到 500mA,加上一堆传感器很容易掉压重启,最稳的是单独给 5V 引脚供电。