news 2026/4/18 9:14:29

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/18 3:45:10

MediaGo:终极m3u8下载教程,快速掌握流媒体视频提取

MediaGo&#xff1a;终极m3u8下载教程&#xff0c;快速掌握流媒体视频提取 【免费下载链接】m3u8-downloader m3u8 视频在线提取工具 流媒体下载 m3u8下载 桌面客户端 windows mac 项目地址: https://gitcode.com/gh_mirrors/m3u8/m3u8-downloader 还在为无法下载在线视…

作者头像 李华
网站建设 2026/4/18 3:46:04

Qwen3-4B-Instruct代码生成实战:编程助手系统搭建教程

Qwen3-4B-Instruct代码生成实战&#xff1a;编程助手系统搭建教程 1. 引言 1.1 学习目标 本文旨在指导开发者从零开始&#xff0c;基于阿里开源的大语言模型 Qwen3-4B-Instruct-2507 搭建一个可实际运行的编程助手系统。通过本教程&#xff0c;读者将掌握&#xff1a; 如何…

作者头像 李华
网站建设 2026/4/18 3:46:41

电商客服实战:用Sambert快速搭建多情感语音应答系统

电商客服实战&#xff1a;用Sambert快速搭建多情感语音应答系统 1. 引言&#xff1a;智能客服的语音表达力升级需求 在当前电商服务场景中&#xff0c;自动化客服系统已广泛应用于售前咨询、订单查询、售后处理等环节。然而&#xff0c;传统的文本回复或机械式语音播报往往缺…

作者头像 李华
网站建设 2026/4/18 3:44:30

环世界模组管理终极指南:告别加载混乱,轻松打造完美殖民地

环世界模组管理终极指南&#xff1a;告别加载混乱&#xff0c;轻松打造完美殖民地 【免费下载链接】RimSort 项目地址: https://gitcode.com/gh_mirrors/ri/RimSort 还在为环世界模组管理头疼吗&#xff1f;当你精心收集了几百个模组&#xff0c;准备大展身手时&#x…

作者头像 李华
网站建设 2026/4/18 5:34:42

从零部署DeepSeek-OCR:CUDA升级、vLLM集成与Docker发布

从零部署DeepSeek-OCR&#xff1a;CUDA升级、vLLM集成与Docker发布 1. 引言&#xff1a;为何需要构建高性能OCR推理服务&#xff1f; 在企业级文档自动化处理场景中&#xff0c;传统OCR工具已难以满足日益复杂的业务需求。DeepSeek-OCR作为一款基于深度学习的先进光学字符识别…

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

PaddleOCR古籍数字化:学者必备的AI工具

PaddleOCR古籍数字化&#xff1a;学者必备的AI工具 你是否曾面对一堆泛黄的百年文献&#xff0c;想逐字录入却无从下手&#xff1f;传统扫描仪识别不了那些斑驳、倾斜甚至手写的古体字&#xff0c;手动输入又耗时耗力——这几乎是每一位历史研究者都会遇到的“数字鸿沟”。而今…

作者头像 李华