news 2026/4/3 1:52:55

通俗解释树莓派插针定义中各功能引脚用途

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
通俗解释树莓派插针定义中各功能引脚用途

一文搞懂树莓派40针GPIO引脚:从接线到通信的实战指南

你有没有过这样的经历?手握一块树莓派,想接个温湿度传感器,结果翻遍资料还是不确定该把线接到哪个针脚上?或者更糟——接完通电后系统直接死机,怀疑自己“烧板子”了?

别担心,这几乎是每个嵌入式新手都会踩的坑。而问题的根源,往往就在于没真正搞明白那排看似简单的40个金属插针到底代表什么

今天我们就来彻底拆解树莓派这40个引脚的秘密。不是照搬手册念参数,而是用你能听懂的话,讲清楚每一类引脚是干什么的、怎么安全使用、常见错误怎么避坑,并配上真实开发中的代码和技巧。

准备好了吗?我们从最基础也最容易被忽视的地方开始。


电源和地线:别小看它们,90%的故障出在这儿

很多人一上来就想玩GPIO控制LED,却忘了先理清供电逻辑。记住一句话:任何电路都必须形成回路,而这个回路的起点是电源,终点是地线(GND)

树莓派提供了两类直流输出引脚:

3.3V 和 5V 引脚:能供多少电?能不能反接?

  • 3.3V 引脚(物理引脚1和17)
  • 这是树莓派内部稳压芯片输出的基准电压。
  • 最大总电流建议不要超过100mA,单个外设最好控制在50mA以内。
  • 常见用途:给I²C传感器(如BME280)、逻辑电平转换模块供电。
  • ❗警告:绝对不能用来驱动电机或继电器线圈!否则轻则重启,重则SoC损坏。

  • 5V 引脚(物理引脚2和4)

  • 直接来自你的电源适配器(通过USB-C或Micro USB输入),所以它的电流能力取决于你用的电源。
  • 理论上可以提供1A以上电流(如果你的电源支持),适合带点负载。
  • 比如某些需要5V工作的LCD屏、蜂鸣器、光耦模块等可以用它。
  • ⚠️ 极其重要:禁止通过5V引脚给树莓派反向供电!
    • 虽然技术上可行,但绕过了过流保护电路,一旦短路可能永久损坏主板。

✅ 实战建议:高功耗设备(比如多个继电器+摄像头)请务必使用独立外部电源,共地即可,不要指望树莓派“包打天下”。

GND 地线:为什么要有8个?

你可能会问:“地不就是零电压吗?一个就够了啊。”
理论上没错,但在实际布线中,地线阻抗会引入噪声和压降,尤其是在长导线或高频信号场景下。

树莓派设计了8个GND引脚(Pin 6、9、14、20、25、30、34、39),目的就是:
- 让你在不同位置就近接地,减少走线长度;
- 多点接地降低整体回路阻抗;
- 提高I²C、SPI这类对信号完整性敏感的通信稳定性。

🛠️ 调试经验:如果你发现I²C总线偶尔读不到数据,第一件事就是检查GND是否连接牢固,最好用万用表测一下两端是否导通。


GPIO:真正的“万能钥匙”,但也最危险

General Purpose Input/Output —— 通用输入输出引脚,简称GPIO,是树莓派与外界交互的核心接口。

听起来很强大?确实。但它也是最容易误操作导致硬件损坏的部分。

关键电气特性(敲黑板!)

参数数值说明
工作电平3.3V TTL输出高电平≈3.3V,低电平≈0V
单脚最大输出电流16mA驱动一个小LED刚好够
全芯片总输出电流≤50mA所有GPIO加起来别超这个值
是否耐5V❌ 不耐!接5V信号会烧芯片

这意味着什么?

👉你不能直接将GPIO连接到Arduino Uno这类5V系统的数字引脚上!

后果很严重:即使只是短暂接触,也可能造成GPIO内部ESD保护结构击穿,最终导致整个SoC失效。

✅ 安全做法:
- 使用电平转换芯片(如TXS0108E、74LVC245);
- 或者加限流电阻+二极管钳位电路;
- 更简单的方法:用光耦隔离。

如何控制一个LED?别忘加电阻!

你以为这样就行?

GPIO.output(18, GPIO.HIGH) # 点亮

错!少了关键一步:串联限流电阻

LED正向压降约2V,树莓派输出3.3V,如果不加电阻,电流可能达到几十毫安,远超GPIO承受范围。

✔ 正确接法:
- LED阳极 → 220Ω电阻 → GPIO18
- LED阴极 → GND

代码示例(使用RPi.GPIO库):

import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) LED_PIN = 18 GPIO.setup(LED_PIN, GPIO.OUT) try: while True: GPIO.output(LED_PIN, True) # 亮 time.sleep(0.5) GPIO.output(LED_PIN, False) # 灭 time.sleep(0.5) except KeyboardInterrupt: pass finally: GPIO.cleanup() # 释放引脚,防止下次误触发

📌 注意:GPIO.cleanup()很重要!退出程序时不清理,下次运行可能因引脚状态残留而出问题。


特殊功能复用:同一个引脚,多种身份

树莓派的GPIO不仅仅是普通IO,很多还支持“硬件外设模式”,称为Alternate Function(替代功能)。

比如 BCM14 和 BCM15,默认是串口TX/RX,但也可以当普通GPIO用;BCM18 可以输出PWM信号用于调光或舵机控制。

查看当前引脚功能的小工具:

gpio readall

安装方法:

sudo apt install wiringpi

⚠️ 提醒:WiringPi已不再维护,但在老项目中仍常见。推荐新项目使用gpiozero或直接操作/sys/class/gpio


I²C:两根线连一堆传感器

Inter-Integrated Circuit(I²C)是一种经典的双线制串行总线,特别适合连接多个低速外设。

树莓派上的I²C引脚

功能BCM编号物理引脚
SDA(数据)GPIO2Pin 3
SCL(时钟)GPIO3Pin 5

特点:
- 支持多主多从,靠地址识别设备;
- 默认速率100kbps,可提升至400kbps;
- 内部可启用上拉电阻(通常默认开启);
- 每个从机有唯一7位地址(常见范围0x20~0x77)。

怎么知道有没有接好?用扫描命令!
sudo i2cdetect -y 1

输出示例:

0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76 --

看到3c76?说明OLED屏和RTC时钟都在线!

Python读取也很简单:

import smbus bus = smbus.SMBus(1) address = 0x76 # BME280地址 chip_id = bus.read_byte_data(address, 0xD0) print(f"芯片ID: {hex(chip_id)}") # 应返回0x60

💡 应用场景:
- 温湿度传感器(DHT22不行!要用BME280)
- OLED显示屏(SSD1306驱动)
- 实时时钟(DS3231)
- EEPROM存储芯片


SPI:高速传输的首选

Serial Peripheral Interface(SPI)比I²C快得多,常用于需要大量数据吞吐的场合。

树莓派SPI0引脚分配

名称BCM物理引脚作用
MOSI1019主发从收
MISO921主收从发
SCLK1123时钟同步
CE0824片选0
CE1726片选1

特点:
- 全双工通信,速率可达数十MHz(默认最高62.5MHz);
- 每次只能选一个从机(通过CE片选);
- 适合TFT屏幕、高速ADC、无线模块等。

Python操作示例(使用spidev):

import spidev spi = spidev.SpiDev() spi.open(0, 0) # bus=0, device=0 (CE0) spi.max_speed_hz = 1_000_000 # 设置1MHz # 发送命令并读响应(例如读ADC) response = spi.xfer([0x01, 0x80]) # 请求数据 print("收到:", response) spi.close()

📌 实际应用:
- 驱动ILI9341 TFT液晶屏(搭配fbcp实现帧缓冲复制)
- 连接MAX31865铂电阻测温模块
- 控制WS2801 LED灯带(虽然NeoPixel更常用DMA方式)


UART:异步串口,调试神器

Universal Asynchronous Receiver/Transmitter(UART)是最古老的串行通信方式之一,至今仍是调试嵌入式系统的利器。

树莓派默认串口引脚

  • TXD(发送)→ GPIO14(Pin 8)
  • RXD(接收)→ GPIO15(Pin 10)

默认情况下,这个串口被用于Linux系统的控制台输出(console)。也就是说,你如果用串口线连上去,能看到启动日志。

要把它释放出来做普通通信,得关闭串口登录功能:

sudo raspi-config # 进入 "Interface Options" → "Serial Port" # 选择:否(不启用shell),是(启用硬件串口)

然后就可以用PySerial读写数据了:

import serial ser = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) while True: if ser.in_waiting: data = ser.readline().decode().strip() print("收到:", data)

应用场景:
- GPS模块(NMEA语句输出)
- HC-05蓝牙模块
- 与Arduino进行串口通信
- 工业PLC通信(Modbus RTU)


实战案例:做一个智能环境监测站

假设我们要做一个小型物联网网关,功能如下:
- 采集温湿度气压(BME280 via I²C)
- 显示数据(OLED via I²C)
- 用户按键手动刷新(GPIO输入)
- 数据上传MQTT到云端(WiFi)
- 可选:通过LoRa远距离传输(UART连接SX127x模块)

接线清单:
| 设备 | 连接方式 | 引脚 |
|------|----------|------|
| BME280 | I²C | SDA→Pin3, SCL→Pin5, VCC→3.3V, GND→GND |
| OLED屏 | I²C | 同上(地址不同,可共用总线) |
| 按键 | GPIO输入 | 一端接GPIO21(Pin29),另一端接GND,启用内部上拉 |
| LoRa模块 | UART | TX→Pin10(RX), RX→Pin8(TX), 注意电平匹配 |

主循环逻辑伪代码:

初始化I²C总线 初始化OLED显示 配置按键为输入,启用上拉 (可选)配置UART连接LoRa模块 while True: if 按键被按下 or 时间到每5秒: temp, humi, press = 读取BME280() 更新OLED显示 发布MQTT消息 (可选)通过LoRa发送数据包 sleep(0.1)

遇到问题怎么办?

🔧典型坑点与解决办法

  1. I²C设备找不到?
    - 检查VCC/GND是否接反
    - 用i2cdetect -y 1扫描地址
    - 查看设备是否有地址跳线(ADDR引脚)

  2. SPI屏幕花屏?
    - 降低SCLK频率试试
    - 加0.1μF陶瓷电容滤波
    - 检查MOSI/MISO是否接反

  3. 串口收不到数据?
    - 确认波特率一致
    - 检查TX/RX交叉连接(树莓派TX接对方RX)
    - 关闭Linux串口控制台(raspi-config设置)


最佳实践总结:安全高效开发的5条铁律

  1. 永远先查引脚图
    bash pinout
    这个命令能显示当前树莓派型号的完整引脚布局,包括BCM编号、物理编号和复用功能。

  2. 优先使用HAT/pHAT扩展板
    - 自带防呆接口
    - 集成电源管理
    - 即插即用,避免飞线风险

  3. 高噪声环境加滤波电容
    - 在每个模块的VCC与GND之间并联一个0.1μF陶瓷电容
    - 抑制高频干扰,提高通信可靠性

  4. 远离5V信号区
    - 所有接入信号必须≤3.3V
    - 必要时使用电平转换或光耦隔离

  5. 养成cleanup()习惯
    - 每次测试后运行GPIO.cleanup()
    - 或写成上下文管理器确保资源释放


到现在为止,你应该已经清楚了每一个插针背后的含义。它们不只是金属柱子,而是你通往物理世界的接口。

无论是点亮第一颗LED,还是搭建复杂的边缘计算节点,理解这些引脚的工作原理,都是你迈向真正硬件开发的第一步。

如果你正在尝试某个具体项目却卡在接线上,欢迎在评论区留言描述你的需求和遇到的问题——我们一起排查,把想法变成现实。

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

【程序员必看】Open-AutoGLM迭代升级:3天掌握智能编码新范式

第一章:Open-AutoGLM智能编码新范式的崛起随着大语言模型在软件开发领域的深度渗透,一种以自然语言驱动代码生成的全新范式正在重塑编程实践。Open-AutoGLM作为开源智能编码引擎的代表,融合了生成式语言建模与代码语义理解能力,使…

作者头像 李华
网站建设 2026/3/29 1:17:15

手把手教学:如何在华为/小米/OPPO手机上安全刷入Open-AutoGLM系统

第一章:Open-AutoGLM系统概述与刷机前必读 Open-AutoGLM 是一个面向智能车载设备的开源自动化语言模型集成系统,专为在边缘计算环境中运行大语言模型(LLM)而设计。该系统基于轻量化 Linux 内核构建,集成了 GLM 系列模型…

作者头像 李华
网站建设 2026/3/25 6:58:55

Xenia GPU模拟器深度解析:从Xbox 360到现代PC的图形转换革命

Xenia GPU模拟器深度解析:从Xbox 360到现代PC的图形转换革命 【免费下载链接】xenia Xbox 360 Emulator Research Project 项目地址: https://gitcode.com/gh_mirrors/xe/xenia Xenia GPU模拟器作为Xbox 360模拟器研究项目的核心组件,通过精密的图…

作者头像 李华
网站建设 2026/3/29 21:43:40

【大模型本地化新突破】:Open-AutoGLM在Windows上的极致优化方案

第一章:Open-AutoGLM本地化部署的背景与意义随着大语言模型在企业级应用中的广泛落地,数据隐私、响应延迟和系统可控性成为关键考量因素。将模型本地化部署不仅能规避公有云环境下的数据泄露风险,还能根据业务需求灵活调整计算资源与推理流程…

作者头像 李华
网站建设 2026/3/27 14:06:50

从零开始搞定字体安装:TTF文件系统配置全攻略

还在为字体安装发愁吗?🤔 别担心,今天我们就来聊聊如何轻松搞定TTF字体文件的系统配置问题!无论你是设计小白还是办公达人,这篇字体安装指南都能帮到你。 【免费下载链接】TimesNewRoman字体文件下载 Times New Roman …

作者头像 李华
网站建设 2026/3/28 19:25:14

TensorFlow与Observable集成:Web端AI可视化分析

TensorFlow与Observable集成:Web端AI可视化分析 在人工智能加速落地的今天,一个日益突出的问题摆在数据科学家面前:如何让训练好的模型真正被业务方“看见”、理解并信任?许多精巧的深度学习系统最终沦为“黑箱”,困在…

作者头像 李华