news 2026/4/23 14:59:54

Raspberry Pi 4B插针定义对照表:实用参考完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Raspberry Pi 4B插针定义对照表:实用参考完整指南

树莓派4B插针全解析:从零开始掌握GPIO扩展的硬核指南

你有没有过这样的经历?
手握一块树莓派4B,杜邦线在桌上铺了一堆,却因为接错一个引脚,导致传感器没反应、程序崩溃,甚至烧了板子。别担心——这不是你不够细心,而是GPIO这扇门,从来就不该靠“试”来打开

今天,我们就把这扇门彻底推开。不玩虚的,不堆术语,只讲实战中真正需要知道的事。带你从物理布局到通信协议,从寄存器配置到避坑经验,完整吃透Raspberry Pi 4B 的 40 针 GPIO 接口


为什么你的项目总出问题?可能一开始就错了编号方式

先问一个问题:你在写代码时用的是GPIO18还是“第12号引脚”?

很多人没意识到,树莓派有两种引脚编号体系:

  • 物理引脚号(Pin Number):按实际位置从1到40数
  • BCM编号(Broadcom SOC编号):对应芯片内部的GPIO通道

✅ 正确做法:编程一律使用 BCM 编号
因为只有 BCM 才与底层寄存器绑定,不会因排针方向或接线习惯改变而错乱。

举个例子:
- 物理第12号引脚 → 实际是 BCM GPIO18
- 如果你在代码里写pin = 12,但没指定编号模式,很可能控制的是另一个完全不同的引脚!

import RPi.GPIO as GPIO # 错误示范(默认可能是BOARD模式) GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) # 控制的是物理12脚,不是GPIO18! # 正确做法 GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) # 明确指向BCM GPIO18

记住一句话:接线看物理编号,写代码认 BCM 编号


插针布局全景图:哪些能用?哪些千万别碰?

Raspberry Pi 4B 的 40 针插针看起来密密麻麻,其实结构非常清晰。我们可以把它分成四类:

类型数量功能
电源引脚2 × 3.3V + 2 × 5V提供系统供电
地线(GND)8 个共用地回路,越多越好
通用GPIO28 个可自由配置输入/输出
专用功能引脚若干复用为 I²C、SPI、UART 等

关键参数必须牢记(否则迟早翻车)

参数后果警告
工作电压3.3V 逻辑接5V信号会损坏SoC!
单引脚最大输出电流16mA超过易发热损坏
所有GPIO总输出电流上限≤50mA否则可能烧毁BCM2711芯片
内部上拉/下拉电阻~50kΩ悬空输入务必启用,防误触发

⚠️血泪教训:有人直接拿树莓派驱动继电器模块,结果不出三天就死机重启。原因?负载电流超过限制,电源波动拉垮整个系统。

解决方案很简单:加一级隔离(比如使用光耦或ULN2003驱动芯片),让树莓派只负责“发命令”,不动手“扛重活”。


每一根引脚都在哪?一张表说清楚

下面这张对照表,是你今后开发最常查阅的参考。建议收藏+打印贴墙上。

物理引脚BCM号名称类型主要用途
13.3V电源给低功耗设备供电
25V电源直连外部电源输入
3GPIO2SDA1复用I²C 数据线
45V电源多路径供电增强稳定性
5GPIO3SCL1复用I²C 时钟线
6GND地线必须共地才能通信
7GPIO4GPCLK0复用输出系统时钟,可驱动WS2812灯带同步
8GPIO14TXD0复用UART 发送端
9GND地线——
10GPIO15RXD0复用UART 接收端(注意默认用于串口登录)
11GPIO17GPIO按钮输入 / LED指示灯
12GPIO18PWM0复用支持硬件PWM,适合风扇调速、蜂鸣器
13GPIO27GPIO自定义控制
14GND地线——
15GPIO22GPIO中断检测、状态反馈
16GPIO23GPIO——
173.3V电源第二个3.3V输出点
18GPIO24GPIO——
19GPIO10MOSI复用SPI 主出从入
20GND地线——
21GPIO9MISO复用SPI 主入从出
22GPIO25GPIO——
23GPIO11SCLK复用SPI 时钟信号
24GPIO8CE0_N复用SPI 片选0(低有效)
25GND地线——
26GPIO7CE1_N复用SPI 片选1,支持双设备
27GPIO0ID_SD专用HAT扩展板识别用,普通用户勿动
28GPIO1ID_SC专用同上,专用于I²C EEPROM通信
29GPIO5GPIO——
30GND地线——
31GPIO6GPIO——
32GPIO12PWM1复用第二路PWM输出
33GPIO13PWM1/SPI_TxD复用多功能复用引脚
34GND地线——
35GPIO19MISO/GPIO复用可切换为普通IO
36GPIO16GPIO继电器控制常用
37GPIO26GPIO——
38GPIO20GPIO——
39GND地线——
40GPIO21GPIO——

📌重点提示
- 引脚27和28(ID_SD / ID_SC)是给官方HAT扩展板用的,不要随便拿来当普通I²C用,否则可能导致系统识别错误。
- GPIO18 和 GPIO12 支持硬件PWM,比软件模拟更稳定,优先用于电机、舵机、呼吸灯等场景。


三大通信接口实战拆解:I²C、SPI、UART 怎么选?怎么配?

当你想连接外设时,一定会遇到这个问题:该用哪种通信方式?

答案取决于三个因素:速度需求、连线复杂度、设备类型

I²C:最适合传感器网络

适用场景
  • 温湿度传感器(如SHT31、BME280)
  • OLED显示屏(SSD1306)
  • 实时时钟(DS3231)
优点
  • 只需两根线(SDA + SCL)
  • 支持多设备挂载(最多128个)
  • 自带地址机制,无需片选
缺点
  • 速率较低(通常100~400kbps)
  • 上拉电阻影响稳定性(建议使用2.2kΩ~4.7kΩ)
如何启用?
sudo raspi-config # 选择 "Interface Options" → "I2C" → Enable
Python读取I²C设备示例(以TMP102温度传感器为例)
import smbus2 bus = smbus2.SMBus(1) # 使用I2C Bus 1 address = 0x48 # TMP102地址 data = bus.read_i2c_block_data(address, 0, 2) raw_temp = (data[0] << 4) | (data[1] >> 4) temperature = raw_temp * 0.0625 if raw_temp < 2048 else (raw_temp - 4096) * 0.0625 print(f"当前温度: {temperature:.2f}°C")

🔧调试技巧:用i2cdetect -y 1查看总线上有哪些设备在线。


SPI:高速数据传输首选

适用场景
  • 高速ADC/DAC(如MCP3008)
  • TFT液晶屏
  • Flash存储芯片
优点
  • 全双工、速度快(最高可达数十MHz)
  • 时钟由主机提供,同步性好
  • 支持多个片选,轻松管理多设备
缺点
  • 线多(至少4根)
  • 不支持地址广播,每个从机都要独立CS
如何启用?
sudo raspi-config # Interface Options → SPI → Enable
Python操作SPI设备(以MCP3008 ADC为例)
import spidev spi = spidev.SpiDev() spi.open(0, 0) # Bus 0, Device 0 (CE0) spi.max_speed_hz = 1_000_000 # 设置1MHz # 发送读取通道0的指令 resp = spi.xfer([1, (8 + 0) << 4, 0]) adc_value = ((resp[1] & 3) << 8) + resp[2] spi.close() print(f"ADC值: {adc_value}")

💡性能建议:对于高采样率应用,尽量减少open/close调用,保持连接复用。


UART:经典串行通信,调试利器

适用场景
  • 与Arduino、ESP32通信
  • GPS模块数据接收
  • 系统调试日志输出
默认占用问题!

树莓派4B的UART0(GPIO14/TX, GPIO15/RX)默认被用作Linux控制台输出。如果你要用它通信,必须先关闭串口登录服务:

sudo systemctl disable serial-getty@ttyS0.service

同时,在/boot/config.txt添加:

enable_uart=1
Python串口通信示例
import serial ser = serial.Serial('/dev/ttyS0', baudrate=115200, timeout=1) ser.write(b'HELLO\n') if ser.in_waiting: response = ser.readline().decode('utf-8').strip() print("收到:", response) ser.close()

🚨特别注意:UART是异步通信,双方波特率必须严格一致,否则数据乱码。


实战案例:做一个智能温控风扇系统

我们来整合前面所有知识,做一个真实的小项目。

系统组成

  • DHT22 温湿度传感器(通过GPIO轮询读取)
  • OLED 屏幕(I²C接口显示数据)
  • 小型直流风扇(通过PWM控制转速)
  • 树莓派4B主控

工作流程

  1. 每隔2秒读取一次DHT22数据
  2. 在OLED屏幕上实时显示温湿度
  3. 当温度 > 30°C,启动风扇并根据温差调节PWM占空比
  4. 日志上传至本地服务器或MQTT云端

核心代码片段(简化版)

import Adafruit_DHT import board import digitalio import adafruit_ssd1306 from PIL import Image, ImageDraw, ImageFont import RPi.GPIO as GPIO import time # 初始化组件 sensor = Adafruit_DHT.DHT22 pin = 4 # GPIO4 # OLED初始化 i2c = board.I2C() oled = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c) oled.fill(0) oled.show() # PWM风扇控制 GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) fan_pwm = GPIO.PWM(18, 1000) # 1kHz频率 fan_pwm.start(0) # 字体准备 font = ImageFont.load_default() while True: humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) if temperature is not None: # 控制风扇 duty = max(0, min(100, (temperature - 25) * 20)) fan_pwm.ChangeDutyCycle(duty) # 显示更新 image = Image.new("1", (oled.width, oled.height)) draw = ImageDraw.Draw(image) draw.text((0, 0), f"Temp: {temperature:.1f}C", font=font, fill=255) draw.text((0, 16), f"Humi: {humidity:.1f}%", font=font, fill=255) oled.image(image) oled.show() time.sleep(2)

这个项目涵盖了:
- 通用GPIO读取(DHT22)
- I²C设备驱动(OLED)
- 硬件PWM输出(风扇调速)

是不是感觉一下子打通任督二脉了?


新手最容易踩的5个坑,你知道几个?

  1. 误将5V接到GPIO引脚
    - 后果:永久性损坏SoC
    - 解决:所有信号电平确认为3.3V,不确定就加电平转换模块(如TXS0108E)

  2. 忘记共地(GND未连接)
    - 现象:通信失败、数据跳变
    - 解决:确保主控与外设之间至少有一根GND相连

  3. SPI片选混乱
    - 现象:多个设备互相干扰
    - 解决:每个设备分配独立CE引脚,或使用GPIO模拟片选

  4. UART被系统占用
    - 现象:无法收到数据
    - 解决:禁用serial-getty服务并启用enable_uart=1

  5. GPIO电流超限
    - 现象:系统不稳定、自动重启
    - 解决:大功率设备通过继电器或MOSFET驱动,树莓派只输出控制信号


写在最后:掌握GPIO,才是掌控硬件的第一步

你看,树莓派的强大不在CPU多快,也不在内存多大,而在于它能把数字世界和物理世界真正连接起来。

只要你理解了这40根引脚背后的逻辑,就能:
- 让一盏灯随音乐节奏闪烁
- 让一台机器人感知环境自主行动
- 把家里的老电器变成智能设备

这才是嵌入式开发的魅力所在。

所以,下次当你拿起杜邦线的时候,请记住:

不是随便插进去就行,而是每一根线,都承载着你对系统的理解和设计意图。

如果你正在做某个基于GPIO的项目,或者遇到了具体的技术难题,欢迎在评论区留言交流。我们一起把想法变成现实。

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

RAN-第一级(aa)

定位与特点 &#x1f3af; 定位&#xff1a;RAZ分级阅读体系的起点 &#x1f4d6; 级别&#xff1a;最初级&#xff08;相当于美国学前班水平&#xff09; &#x1f476; 适合年龄&#xff1a;3-5岁 &#x1f1fa;&#x1f1f8; 英语水平&#xff1a;零基础或初学者 &#x1f…

作者头像 李华
网站建设 2026/4/23 10:44:42

JavaScript QR码识别终极指南:从入门到精通

JavaScript QR码识别终极指南&#xff1a;从入门到精通 【免费下载链接】jsQR A pure javascript QR code reading library. This library takes in raw images and will locate, extract and parse any QR code found within. 项目地址: https://gitcode.com/gh_mirrors/js/…

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

Vue3中后台管理系统实战:从零到一的开发避坑指南

Vue3中后台管理系统实战&#xff1a;从零到一的开发避坑指南 【免费下载链接】vue3-admin-element-template &#x1f389; 基于 Vue3、Vite2、Element-Plus、Vue-i18n、Vue-router4.x、Vuex4.x、Echarts5等最新技术开发的中后台管理模板,完整版本 vue3-admin-element 正在开发…

作者头像 李华
网站建设 2026/4/23 14:29:30

Qwen1.5-0.5B微调避坑指南:3小时花5块就出效果

Qwen1.5-0.5B微调避坑指南&#xff1a;3小时花5块就出效果 你是不是也和我当初一样&#xff0c;刚接触大模型微调时既兴奋又紧张&#xff1f;想动手试试Qwen1.5-0.5B这种轻量级但能力不俗的模型&#xff0c;又怕一不小心“烧”掉几百块算力费。别担心&#xff0c;作为一个从零…

作者头像 李华
网站建设 2026/4/23 12:46:51

YOLOv5保姆级教程:没GPU也能跑,云端1小时1块立即体验

YOLOv5保姆级教程&#xff1a;没GPU也能跑&#xff0c;云端1小时1块立即体验 你是不是也遇到过这种情况&#xff1f;应届生找工作&#xff0c;发现很多岗位都写着“熟悉目标检测”“掌握YOLO系列模型”&#xff0c;心里一紧&#xff1a;这玩意儿听着高大上&#xff0c;但自己连…

作者头像 李华
网站建设 2026/4/17 7:30:06

DLSS版本自由切换:游戏画质优化的终极解决方案

DLSS版本自由切换&#xff1a;游戏画质优化的终极解决方案 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏更新后DLSS效果变差而烦恼吗&#xff1f;&#x1f914; 每次新版本发布&#xff0c;画质反而下降&a…

作者头像 李华