树莓派GPIO引脚概述:40pin引脚定义、编号方式与UART映射

好,咱们正式开始动手之前,得先把树莓派这张“脸”认清楚。我说的就是那个40pin的GPIO排针。

很多新手拿到树莓派,第一反应是:“这密密麻麻的针脚,哪个是哪个?” 别急,我刚开始玩树莓派的时候,也对着这40个引脚发过呆。有一次还因为接错线,直接把一个传感器模块烧了。嗯,从那以后,我再也不敢小看引脚定义了。

树莓派40pin引脚物理布局

树莓派从早期的26pin,发展到现在的40pin标准。不管你是Zero、3B+还是4B,只要不是那种计算模块,排针的物理排列都是一样的。你想想看,这其实是个好事——学会了,所有板子通用。

引脚分两排,每排20个。靠近SD卡槽或者板子边缘的那一排是1号引脚。我个人习惯把板子竖着放,让USB口朝下,这样1号引脚就在左上角。

记住这个口诀: 左上为1,右上为2,左下为39,右下为40。

下面这张图,是我自己画的一个引脚布局示意,你对照着板子看,一目了然。

树莓派40pin GPIO 引脚布局(俯视图) 1 3 5 7 9 11 13 15 17 19 2 4 6 8 10 12 14 16 18 20 TXD (GPIO14) RXD (GPIO15) 3.3V (1) GND (39) 注意:物理引脚编号(BOARD模式)从1到40,左上角为1号

GPIO编号方式:BOARD vs BCM

树莓派的GPIO编号,有两种方式。这可以说是新手最容易搞混的地方。我见过不少人在论坛上问:“为什么我写的代码控制不了引脚?” 结果一看,编号方式搞反了。

说白了,就是两套“命名系统”:

  • BOARD编号:就是物理引脚的位置编号。1到40,简单粗暴。你拿万用表量,拿杜邦线插,用的就是这套。
  • BCM编号:是Broadcom芯片内部定义的GPIO编号。比如GPIO2、GPIO3。这个编号和物理位置没有直接关系。

我建议你刚开始学的时候,用BOARD模式。为什么?因为物理位置不会变,你对着板子数就行。等你熟悉了芯片内部结构,再用BCM模式会更灵活。

编号方式 命名规则 优点 缺点
BOARD 物理引脚位置 (1-40) 直观,对板子接线方便 不同型号板子引脚功能可能不同
BCM 芯片内部GPIO编号 与芯片手册一致,跨板兼容性好 需要查映射表,不直观
我的小技巧: 在代码里,我习惯用变量名来区分。比如 LED_PIN_BOARD = 11 和 LED_PIN_BCM = 17。这样一看就知道用的是哪种编号。

UART引脚映射:TXD与RXD

好,重点来了。我们做串口通信,最关心的就是UART的收发引脚。

树莓派默认的UART(也就是ttyAMA0或者ttyS0),对应的引脚是:

  • TXD(发送):物理引脚8,对应BCM编号GPIO14
  • RXD(接收):物理引脚10,对应BCM编号GPIO15

这里有个坑,我必须要说。树莓派3B+和4B上,默认的UART是“迷你UART”(mini UART),它和蓝牙共用。如果你直接用它做串口通信,波特率会漂移。我曾经被这个问题折腾了一下午,数据总是乱码。

避坑指南: 如果你用的是树莓派3B+或4B,并且启用了蓝牙,建议使用硬件UART(ttyAMA0)。需要在 /boot/config.txt 中配置 dtoverlay=disable-bt,或者使用PL011 UART。

下面这个表格,把常用的UART引脚映射整理了一下,建议你收藏。

功能 BOARD引脚 BCM GPIO 说明
TXD 8 14 数据发送
RXD 10 15 数据接收
GND 6, 9, 14, 20, 25, 30, 34, 39 - 共地必须接
3.3V 1, 17 - UART电平标准

UART与GPIO的复用关系

你可能会问:“GPIO14和GPIO15,我能不能当普通IO用?” 答案是:可以,但默认情况下它们被配置为UART功能。

树莓派的引脚是“多功能复用”的。同一个物理引脚,可以当GPIO用,也可以当UART、I2C、SPI用。具体是什么功能,由引脚复用寄存器决定。

我个人习惯是:如果这个项目要用串口,我就把GPIO14/15专门留给UART,不去动它。省得后面调试的时候,搞不清到底是硬件问题还是配置问题。

核心原则: 在 /boot/config.txt 中,通过 dtoverlay 可以切换引脚功能。比如 dtoverlay=uart2 可以把GPIO0/1映射为UART。

如何快速验证UART引脚是否可用

理论说完了,咱们来点实际的。怎么确认你的TXD和RXD是好的?

一个最简单的办法:回环测试。把TXD和RXD用杜邦线短接,然后发数据。如果发出去的数据能原样收回来,说明引脚和UART硬件都没问题。

我曾经在一个项目里,怎么调都收不到数据。最后发现是杜邦线虚焊了。你想想看,排查了半天,结果是线的问题,多冤。

所以,我建议你每次接线后,都先做一次回环测试。花不了两分钟,但能省下大把的排查时间。

# 回环测试命令(在树莓派终端执行)
# 先安装工具
sudo apt-get install minicom

# 短接TXD和RXD后,运行
minicom -b 115200 -o -D /dev/ttyAMA0

# 在终端输入任意字符,如果能回显,说明UART通路正常
小提示: 如果用的是树莓派4B,默认串口设备可能是 /dev/ttyS0。用 ls -l /dev/serial* 可以查看当前映射关系。

好了,这一章的内容就到这里。引脚编号和UART映射是后面所有实验的基础。你最好拿块板子,对照着上面的图,一个一个引脚认一遍。别偷懒,磨刀不误砍柴工。