news 2026/4/16 17:43:41

一文说清树莓派4b引脚功能图与GPIO对应关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一文说清树莓派4b引脚功能图与GPIO对应关系

以下是对您提供的博文内容进行深度润色与专业重构后的版本。我以一位深耕嵌入式系统多年、常年带团队做边缘AI硬件集成的工程师视角重写全文,彻底去除模板化表达和AI腔调,强化技术逻辑链条、实战经验沉淀与教学节奏感。全文无“引言/概述/总结”等刻板结构,不堆砌术语,而是像一位老师在工位旁边画图边讲解——有细节、有踩坑、有取舍权衡、有底层原理支撑。


树莓派4B那40个针脚,到底该怎么用?别再靠猜了

你有没有遇到过这种情况:

  • 接好BME280,i2cdetect -y 1扫出来一片空白;
  • 换根线、换插槽、重启十次,还是没反应;
  • 最后发现——SDA线插在了 Pin 18(BCM GPIO24),而它根本不支持I²C
  • 或者UART收发乱码,查了半天波特率、停止位、校验位,最后发现:蓝牙没关,GPIO14/15早被hciuart占着了。

这不是你代码写错了,也不是传感器坏了。这是你还没真正看懂——那张被无数人截图保存、却极少有人逐行读完的树莓派4B引脚功能图

它不是一张“接线参考表”,而是一份芯片级接口契约:告诉你哪些引脚能干啥、怎么切换角色、供电能不能扛住、噪声从哪来、冲突在哪埋着。今天我们就把它摊开,一层层剥,不讲虚的,只讲你在焊板子、接线、调试时真正会卡住的地方


先搞清一个根本问题:Pin 3 和 GPIO2,到底谁听谁的?

很多人第一次接I²C,看到文档说“SDA接Pin 3”,就真把杜邦线怼进排针第三孔;结果代码里又写board.SDA = board.Pin(3)——这已经错了两次。

为什么?

因为树莓派的引脚体系,本质是两套编号并存、且绝不自动转换

编号类型是什么怎么用常见误用
物理引脚编号(Board Pin)就是你眼睛看到的排针顺序:左上角是Pin 1,右下角是Pin 40。纯机械定位,印在PCB上。接线时你只能认这个。万用表测电压、示波器探头扎点、杜邦线插哪一孔,全靠它。把Pin 12当成GPIO12(实际是GPIO18),接错PWM输出,烧不坏但永远没信号。
BCM GPIO编号Broadcom芯片内部寄存器地址编号,比如GPIO2、GPIO14、GPIO18。Linux内核驱动、Python库、C语言操作GPIO,全认这个。写代码时必须用它。RPi.GPIO.setmode(RPi.GPIO.BCM)不是可选项,是铁律。config.txt里写dtoverlay=i2c-gpio,bus=1,i2c_gpio_sda=3——这里3是BCM编号,不是Pin 3!

✅ 正确姿势:
- 接线看物理编号(Pin X);
- 配置看BCM编号(GPIOY);
- 查映射,只信官方来源:pinout.xyz(实时可交互)、raspi-gpio get(运行时验证)、或直接翻 RPi HW Docs 。

💡小技巧:终端敲raspi-gpio get,它会列出所有GPIO当前模式(IN/OUT/ALT0~5)、电平、上下拉状态。比翻文档快十倍,而且反映真实硬件状态——很多“配置没生效”,其实就卡在这一步。


一个引脚,六种身份:复用功能(AF)不是开关,是协议握手

BCM2711的每个GPIO(除了电源/地)都像一个多功能USB-C口:同一根线,可以传视频、充快充、走数据,但不能同时干三件事。

它的实现方式,是在SoC内部设了一个叫GPFSEL的寄存器组(GPIO Function Select),每个GPIO占3位,共8种组合(0~7),其中AF0~AF5是有效外设模式,AF7是保留。

重点来了:AF不是软件“启用”就能用的,它需要整套协议栈配合。

以最常踩坑的 UART 为例:

  • 物理 Pin 8 → BCM GPIO14 → 默认 AF0 = UART0 TX
  • 但你echo "hello" > /dev/ttyAMA0却没反应?
  • 很可能:/dev/ttyAMA0被蓝牙服务占着(Raspberry Pi OS默认启用蓝牙串口)。

这时候光改寄存器没用。你得:
1. 在/boot/config.txt加:
ini dtoverlay=disable-bt enable_uart=1
2. 然后sudo systemctl disable hciuart
3. 最后sudo reboot

否则,即使你把GPIO14设成AF0,驱动层也找不到可用的TTY设备。

再看SPI:

  • Pin 19(MOSI)= GPIO10 = AF2
  • 但SPI的片选(CS)是硬绑定的:CS0固定为GPIO8(Pin 24),CS1为GPIO7(Pin 26)
  • 你想用GPIO22做CS?不行。硬件不支持。别折腾设备树覆盖,BCM2711没留这个口。

📌 关键结论:

AF切换 ≠ 功能开启。它是“释放引脚权限”的第一步,后面必须跟上设备树启用、驱动加载、用户空间设备节点生成——缺一不可。

下面这张表,是我压箱底整理的高频AF组合速查表(仅列真正常用、稳定、文档明确支持的):

物理PinBCM GPIO常用AF对应外设必须做的配置
Pin 3GPIO2AF3I²C0 SDAdtparam=i2c_arm=on+ 外接4.7kΩ上拉
Pin 5GPIO3AF3I²C0 SCL同上
Pin 8GPIO14AF0UART0 TXenable_uart=1+dtoverlay=disable-bt
Pin 10GPIO15AF0UART0 RX同上
Pin 12GPIO18AF5PWM0dtoverlay=pwm,pin=18,func=5
Pin 19GPIO10AF2SPI0 MOSIdtparam=spi=on
Pin 21GPIO9AF2SPI0 MISO同上
Pin 23GPIO11AF2SPI0 SCLK同上

⚠️ 注意:func=5表示AF5,不是“第五个功能”。AF编号是芯片定义的,不是我们编的。查手册第6章《GPIO Function Select》确认。


电源和地,不是“随便接就行”的背景板

新手最容易忽视的,其实是那几根标着“5V”“3.3V”“GND”的线。

它们不是稳压器说明书里的理想模型,而是真实PCB上会发热、会压降、会耦合噪声的铜箔。

先说3.3V:它很脆,别当“万能电源”

  • 来源:AP2112K-3.3稳压芯片,标称1A,但实测持续输出>500mA时,电压开始跌到3.2V以下
  • 影响:ADC采样偏差增大(尤其ADS1115这类高精度芯片)、SD卡偶发掉盘、某些Wi-Fi模块握手失败;
  • 典型翻车现场:
  • 接一个BME280(0.1mA)+ DHT22(0.5mA)+ OLED(20mA)= 20.6mA → 安全;
  • 接一个PMS5003(100mA工作电流)→ 3.3V直接掉到2.9V,OLED花屏,BME280通信超时。

✅ 正确做法:
- 所有>50mA的外设(摄像头模组、SSD硬盘、继电器模块、大功率LED灯带),务必单独供电
- 树莓派只负责信号线(I²C/SPI/UART/GPIO),电源线断开;
- 若必须共用3.3V,加一级低压差LDO(如MIC5205)做二次稳压,或换用外部3.3V电源模块。

再说5V:它很强,但也很危险

  • 来源:USB-C输入端直出(经保险丝F1),理论可提供1.2A,但受制于:
  • USB-C电源质量(劣质充电器纹波大);
  • 散热(F1保险丝温升高会限流);
  • 板载走线电阻(长导线+大电流 = 显著压降)。
  • ⚠️ 绝对禁止:
  • 反向供电(从5V引脚往树莓派灌电)→ 烧F1保险丝甚至PMIC;
  • 接>5.25V电压 → 永久损坏SoC;
  • 用5V给WS2812B供电却不隔离信号电平 → GPIO输出3.3V高电平,WS2812B识别为低,灯不亮。

✅ 安全方案:
- WS2812B类LED灯带:5V单独供电,信号线必须加电平转换(TXS0108E或2N7002 MOSFET电路);
- 继电器模块:5V由外部适配器供,控制端(IN)接树莓派GPIO,中间串1kΩ电阻防灌入电流

地线(GND):不是“所有黑线都一样”

树莓派4B有8个GND引脚,但它们在PCB上并非完全等效:

  • Pin 6/9/14/20:靠近CPU和内存,属于“数字地”(DGND),适合传感器、MCU通信回路;
  • Pin 25/30/34/39:靠近USB 3.0和千兆网口,属于“模拟/噪声地”(AGND),适合电机驱动、继电器、大电流负载;

💡 工程经验:
- 温湿度传感器(BME280)、OLED、I²C设备 → 接Pin 9(DGND);
- 12V直流电机+L298N驱动板 → GND接Pin 34(靠近USB侧),并用粗线单点连接到电源地,避免电机噪声窜入数字电路


实战推演:一个环境监测终端,怎么规划引脚?

我们不列清单,直接动手“布线”。

需求:
- BME280(I²C)
- PMS5003(UART)
- LED状态灯(GPIO输出)
- 蜂鸣器报警(PWM音调)
- DHT22(1-Wire,可选)

✅ 第一步:锁定不可动引脚
- I²C必须用 Pin 3/5(GPIO2/3,AF3)→ 占用;
- UART要接PMS5003 → 选 Pin 8/10(GPIO14/15,AF0),但得关蓝牙 → 记得加disable-bt
- PWM蜂鸣器 → Pin 12(GPIO18,AF5)→ 加dtoverlay=pwm,pin=18,func=5
- LED灯 → 任选空闲GPIO,比如 Pin 11(GPIO17),普通输出即可;
- DHT22(1-Wire)→ GPIO4(Pin 7),需启用dtoverlay=w1-gpio,gpiopin=4

❌ 冲突检查:
- GPIO4(1-Wire)和 I²C / UART / PWM 全不冲突 → OK;
- GPIO17(LED)无复用需求 → OK;
- 所有外设总电流:BME280 0.1mA + PMS5003待机3mA + LED 5mA ≈ 8.1mA → 3.3V绰绰有余;

✅ 第二步:配置固化(/boot/config.txt

# 启用I²C dtparam=i2c_arm=on # 启用UART(禁用蓝牙) dtoverlay=disable-bt enable_uart=1 # 启用PWM dtoverlay=pwm,pin=18,func=5 # 启用1-Wire dtoverlay=w1-gpio,gpiopin=4 # 可选:禁用未用引脚,减少干扰 # dtoverlay=disable-bt # dtoverlay=spi0-1cs # 如果不用SPI,可注释掉

✅ 第三步:代码验证(Python)

import board import busio import digitalio import pwmio # I²C自动映射到GPIO2/GPIO3 i2c = busio.I2C(board.SCL, board.SDA) print("I²C devices:", [hex(x) for x in i2c.scan()]) # 应该看到0x76(BME280) # UART:自动映射到GPIO14/GPIO15 import serial uart = serial.Serial("/dev/ttyAMA0", baudrate=9600, timeout=1) uart.write(b"PASSIVE\r\n") # PMS5003指令 # PWM蜂鸣器 buzzer = pwmio.PWMOut(board.D18, frequency=262, duty_cycle=0) # 中音Do buzzer.duty_cycle = 32768 # 50%占空比

✅ 这段代码的关键在于:全部用board.xxx常量,而不是硬编码数字board.SCL背后是设备树解析出的真实BCM编号,跨平台兼容(Pi 4B / Pi 5 / Compute Module都适用)。


最后送你三条“血泪口诀”

  1. “Pin是手,GPIO是脑,AF是上岗证”
    插线看Pin,编程用GPIO,功能靠AF——三者缺一不可,也绝不能混用。

  2. “没扫到I²C设备?先查上拉,再查AF,最后查驱动”
    90%的I²C故障,根源是:没接4.7kΩ上拉(尤其长线)、GPIO没设AF3、或者i2c-dev模块没加载(lsmod | grep i2c)。

  3. “3.3V能带的动,5V不一定敢接;GND接错,比接错信号还致命”
    电源和地是整个系统的基准。它们一歪,所有信号都飘。布线时,永远先规划电源路径,再走信号线。


如果你正在做一个项目,卡在某个引脚不通、某个外设不响应,欢迎把你的接线图、raspi-gpio get输出、dmesg | grep -i i2c日志贴出来——我们可以一起逐行看,到底是哪里没对上那张图。

毕竟,硬件开发没有玄学,只有没看清的引脚定义。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 17:41:44

智能家居中i2s音频接口设计:完整指南

以下是对您提供的博文《智能家居中I2S音频接口设计:完整技术分析指南》的 深度润色与专业重构版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、有“人味”——像一位十年嵌入式音频系统工程师在技术分享会上娓娓道来&a…

作者头像 李华
网站建设 2026/4/16 15:55:13

电商推荐系统实战:用PyTorch-2.x-Universal-Dev-v1.0快速实现模型训练

电商推荐系统实战:用PyTorch-2.x-Universal-Dev-v1.0快速实现模型训练 1. 为什么电商推荐系统值得你花10分钟上手 你有没有想过,当用户在电商平台上浏览商品时,那些精准出现在首页的“猜你喜欢”、购物车页面的“买了又买”、结算页的“搭配…

作者头像 李华
网站建设 2026/4/16 9:05:04

如何优化YOLOE推理速度?几个实用技巧分享

如何优化YOLOE推理速度?几个实用技巧分享 YOLOE(Real-Time Seeing Anything)作为新一代开放词汇目标检测与分割模型,以“零样本迁移实时推理”双优势迅速在工业场景中崭露头角。但很多工程师在实际部署时发现:明明文档…

作者头像 李华
网站建设 2026/4/16 15:54:59

轻量嵌入模型怎么选?Qwen3-Embedding-0.6B给出答案

轻量嵌入模型怎么选?Qwen3-Embedding-0.6B给出答案 1. 为什么轻量嵌入模型正在成为新刚需? 你有没有遇到过这样的情况: 想给一个中小规模知识库快速配上语义搜索,但发现8B模型在4卡A10上跑得吃力,显存占用超95%&…

作者头像 李华
网站建设 2026/4/16 14:28:20

零基础也能用!BSHM人像抠图镜像一键部署,实测效果惊艳

零基础也能用!BSHM人像抠图镜像一键部署,实测效果惊艳 你是不是也遇到过这些情况: 想给产品图换背景,但PS抠图太费时间; 做短视频需要透明人像,可专业软件学不会; 设计师朋友说“这个边缘要精细…

作者头像 李华
网站建设 2026/4/16 15:02:19

BusyBox工具链构建:从零实现完整示例

以下是对您提供的博文内容进行 深度润色与工程化重构后的版本 。全文已彻底去除AI生成痕迹,语言更贴近一线嵌入式工程师的技术博客风格:逻辑清晰、节奏紧凑、有实战温度、有踩坑经验、有设计权衡,同时严格遵循您提出的全部格式与表达规范&a…

作者头像 李华