树莓派5引脚定义手册:UART通信引脚说明

树莓派5串口通信实战指南:从引脚定义到稳定通信的完整路径

你有没有遇到过这样的情况——接好了线,写好了代码,树莓派却收不到GPS模块的数据?或者串口输出全是乱码,调试信息像天书一样?

别急,这多半不是你的程序出了问题,而是UART引脚配置没搞明白。尤其是刚从树莓派3/4迁移过来的朋友,面对树莓派5的新电源架构和设备树机制,很容易在“看似简单”的串口通信上栽跟头。

今天我们就来彻底讲清楚:树莓派5到底哪些引脚能用来做串口?怎么用才不会出错?主串口和迷你串口有什么区别?为什么有时候明明连对了就是不通?

我们不堆术语,不抄手册,只讲你在开发板前真正需要知道的东西。


为什么UART仍是嵌入式开发的“基本功”?

尽管I²C、SPI甚至以太网都越来越普及,但UART依然是最实用、最可靠的调试与通信手段之一。原因很简单:

  • 只需两根信号线(TX/RX)+ 地线就能双向通信
  • 几乎所有微控制器、传感器、模组都支持
  • Linux系统默认通过串口输出启动日志(console)
  • 不依赖时钟线,布线灵活,适合长距离传输(配合电平转换)

更重要的是,当你SSH连不上、网络不通的时候,只有串口还能救你一命

而要让这一切正常工作,第一步就是搞清物理引脚和功能映射之间的关系


树莓派5的40针GPIO里,哪几个是用来跑UART的?

树莓派5延续了经典的40针排布,但内部SoC(BCM2712)的功能复用逻辑更复杂了。我们先看最关键的两个引脚:

物理引脚BCM编号默认功能实际用途
Pin 8GPIO14UART0_TXD主串口发送端 → 接外部设备RX
Pin 10GPIO15UART0_RXD主串口接收端 ← 接外部设备TX
Pin 6——GND共地!必须连接

结论先行
如果你要接 GPS、蓝牙、Wi-Fi 模组或任何串口设备,优先使用 Pin 8 和 Pin 10,也就是 GPIO14 和 GPIO15。

这两个引脚对应的是Primary UART(PL011 UART0),性能强、稳定性高,是官方推荐用于关键通信的通道。

那其他GPIO也能当串口用吗?

可以,但有条件。

比如:
- GPIO16 / GPIO17(Pin 28 / Pin 27)可配置为 Mini UART 的 TX/RX
- 其他GPIO可通过软件模拟(bit-banging),但仅限低速场景

不过我们要重点提醒一句:Mini UART 是个“坑点密集区”,稍后细说。


Primary UART vs Mini UART:别再傻傻分不清

很多人踩坑,就是因为不知道树莓派有两个串口控制器。它们的区别,直接决定了你项目的成败。

对比项Primary UART (UART0)Mini UART (SBI UART)
设备节点/dev/ttyAMA0/dev/ttyS0
控制器类型PL011(工业级IP核)简化版 SBI
波特率稳定性高(独立时钟源)低(依赖 core_freq 动态变化)
FIFO 缓冲区16字节,有效防丢包极小,易溢出
是否受CPU频率影响是!
默认是否启用是(常作控制台)
适用场景关键通信、高速传输、工业应用调试烧录、低速传感等非核心任务

举个真实案例:

一位开发者用 Mini UART 连接一个波特率为 115200 的温湿度传感器,白天运行正常,晚上偶尔断联。查了一周才发现:系统节能模式下调低了 core_freq,导致实际波特率偏差超过容限!

解决方法?换成/dev/ttyAMA0,问题消失。

所以记住一句话:

要做可靠通信,就用 Primary UART;Mini UART 只适合临时用途。


如何正确启用串口?三步走,一步都不能少

很多初学者以为“插上线就能通”,结果发现根本读不到数据。其实背后有三个关键步骤必须完成:

第一步:关闭串口登录 shell(禁用控制台)

这是最常见的冲突来源!

树莓派出厂默认把串口当作系统控制台使用,意味着:
- 内核启动信息会从串口输出
- 系统还会监听串口等待用户登录

这就占用了/dev/ttyAMA0,你的程序自然打不开它。

✅ 解决方案:

运行:

sudo raspi-config

进入Interfacing Options → Serial Port
- 是否启用登录 shell? →No
- 是否启用硬件串口? →Yes

保存退出并重启。

或者手动编辑/boot/firmware/cmdline.txt,删除其中的:

console=serial0,115200

⚠️ 注意:树莓派5的配置文件路径是/boot/firmware/,不再是旧版的/boot/

第二步:确保用户有权访问串口设备

Linux下串口设备属于dialout组,默认普通用户无权操作。

运行这条命令把你当前用户加进去:

sudo usermod -aG dialout $USER

然后注销重新登录,权限才会生效。

验证是否成功:

ls -l /dev/ttyAMA0

应看到类似:

crw-rw---- 1 root dialout 204, 64 Apr 5 10:00 /dev/ttyAMA0

如果你的用户名在dialout组里,就可以读写了。

第三步:正确选择设备节点

记住这个对应关系:

UART 类型Linux设备节点推荐用途
Primary UART/dev/ttyAMA0外设通信、调试输出
Mini UART/dev/ttyS0辅助通道(需手动启用)

如果要用 Mini UART(比如主串口已被占用),还需要在/boot/firmware/config.txt中添加:

dtoverlay=uart1

然后重启生效。


实战代码示例:C语言 & Python 怎么写?

C语言:直接操作 ttyAMA0 发送数据

#include <stdio.h> #include <fcntl.h> #include <termios.h> #include <unistd.h> int main() { int fd = open("/dev/ttyAMA0", O_RDWR); struct termios options; if (fd == -1) { perror("无法打开串口"); return -1; } tcgetattr(fd, &options); cfsetispeed(&options, B115200); cfsetospeed(&options, B115200); options.c_cflag = (options.c_cflag & ~CSIZE) | CS8; // 8位数据 options.c_cflag &= ~(PARENB | CSTOPB); // 无校验,1停止位 options.c_cflag |= CLOCAL | CREAD; // 启用接收 tcsetattr(fd, TCSANOW, &options); write(fd, "Hello Pi5!\n", 11); close(fd); return 0; }

编译运行:

gcc uart_send.c -o uart_send ./uart_send

💡 提示:若提示权限错误,请确认已加入dialout组。


Python:用 pyserial 快速实现收发循环

安装依赖:

pip install pyserial

代码如下:

import serial import time # 打开主串口,波特率115200 ser = serial.Serial('/dev/ttyAMA0', 115200, timeout=1) try: while True: ser.write(b'Ping\n') response = ser.readline() if response: print(f"收到: {response.decode().strip()}") time.sleep(1) except KeyboardInterrupt: print("\n退出") finally: ser.close()

这段代码每秒发一次“Ping”,并监听回应,非常适合测试传感器回传。


常见问题排查清单(附解决方案)

问题现象可能原因解决办法
Permission denied用户未加入dialoutsudo usermod -aG dialout $USER
收到乱码或数据错乱波特率不匹配 / Mini UART频率漂移检查双方设置;改用/dev/ttyAMA0;锁定core_freq=250
串口完全打不开被系统控制台占用raspi-config关闭串口登录
数据丢失频繁使用了 Mini UART 且无流控改用 Primary UART 或降低波特率
连接 Arduino 时损坏树莓派5V电平直接接入 GPIO(致命错误!)必须使用双向电平转换器(如 TXS0108E)

🔥血泪教训提醒
树莓派所有GPIO都是3.3V TTL电平绝对不能直接接5V设备
即使只是短暂通电,也可能永久损坏SoC。
对接 Arduino Uno、STM32F103 等5V系统时,请务必使用电平转换模块。


最佳实践建议:老手是怎么做的?

  1. 始终优先使用 GPIO14/GPIO15(Pin 8/10)作为主通信通道
    - 性能稳、兼容好、不易出问题

  2. 调试阶段开启串口日志记录
    bash screen /dev/ttyAMA0 115200 > log.txt
    把原始数据存下来,方便事后分析协议格式或异常行为。

  3. 避免热插拔
    - 插拔瞬间可能产生电压尖峰
    - 建议断电接线,或使用光耦/磁耦隔离模块

  4. 多串口需求怎么办?
    - 方案一:USB转TTL适配器(CP2102、CH340)——即插即用
    - 方案二:I²C/SPI转UART桥芯片(如 MCP2200)——节省USB口
    - 方案三:软件模拟UART(仅限<9600bps)

  5. 生产环境建议固定核心频率
    若不得不使用 Mini UART,可在config.txt添加:
    ini core_freq=250
    防止动态调频导致波特率失准。


写在最后:掌握串口,才算真正入门嵌入式

你看,UART看起来只是“发几个字节”的小事,但它背后涉及:
- 引脚复用机制
- 设备树配置
- 权限管理
- 电平匹配
- 系统资源竞争

这些正是嵌入式开发的核心思维方式。

当你能在树莓派5上稳定地与GPS、LoRa、PLC、电机驱动器通过串口对话时,你就已经迈过了从“玩玩具”到“做产品”的门槛。

而这本该是一份手册就能教会你的事。

希望这篇指南能成为你工具箱里那张磨得发亮的接线图——每次遇到通信问题,翻出来一看,就知道该从哪里下手。

如果你正在做一个需要用串口连接外部设备的项目,欢迎在评论区留言交流。遇到了什么奇怪的现象?我们一起拆解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1191408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Multisim示波器垂直刻度调整:快速理解最佳实践

以下是对您提供的博文内容进行深度润色与结构重构后的技术类教学文章。整体风格更贴近一位经验丰富的电子工程教师/资深仿真工程师的自然讲述口吻&#xff0c;去除了AI生成痕迹、模板化表达和刻板章节标题&#xff0c;强化了逻辑连贯性、实操指导性和教学感染力&#xff1b;同时…

leetcode 3314(位运算,lowbit)

3314: 构造最小位运算数组Ⅰ思路1&#xff1a;枚举class Solution { public:vector<int> minBitwiseArray(vector<int>& nums) {vector<int> ans(nums.size(),-1);for(int i0;i<nums.size();i){int xnums[i];for(int j1;j<x;j){int yj|(j1);if(yx)…

risc-v五级流水线cpu用于PLC系统的完整指南

用RISC-V五级流水线CPU重塑PLC&#xff1a;从架构原理到工业实战当传统PLC遇到性能瓶颈在现代工厂的控制柜里&#xff0c;一台台PLC默默执行着逻辑判断、信号采集与设备联动。但如果你拆开那些“服役”多年的控制器&#xff0c;可能会惊讶地发现&#xff1a;它们的核心仍是上世…

LED显示屏尺寸大小测量错误导致控制卡异常?一文说清

一块LED屏显示歪了&#xff1f;别急着换控制卡&#xff0c;先检查这个参数你有没有遇到过这样的情况&#xff1a;新装的LED大屏&#xff0c;画面一播放&#xff0c;左边挤成一团&#xff0c;右边却拉得老长&#xff1b;或者文字刚出来就缺了一角&#xff0c;怎么调内容都没用。…

聚焦组织效能:互联网高速增长期 HR 系统的核心选择标准

在互联网行业&#xff0c;高速增长是企业发展的常见状态&#xff0c;但随之而来的是组织架构频繁调整、人员规模快速扩张、跨部门协同难度增加等组织管理难题。传统人工或基础 HR 工具往往难以应对这些挑战&#xff0c;此时选择适配的 HR 系统就成为关键。本文围绕 “互联网公司…

高考模拟阅读理解题目:《民族》

民族 一、雾锁江城 汉口码头的雾&#xff0c;是灰黄色的&#xff0c;稠得像熬了整夜的米汤。 我紧了紧西装外套&#xff0c;初冬的江风裹着水汽&#xff0c;往衣领里钻。身后的苦力正从“江安轮”上卸下我的货——二十箱福建安溪的铁观音&#xff0c;茶叶箱上“旧金山陈氏茶行”…

GEO战略新纪元:2026年,执行之外更需顶层咨询 从算法执行到战略规划——AI搜索时代的企业生存法则

GEO战略新纪元&#xff1a;2026年&#xff0c;执行之外更需顶层咨询从算法执行到战略规划——AI搜索时代的企业生存法则当AI成为用户获取信息的首要入口&#xff0c;GEO已不再是单纯的技术优化&#xff0c;而是决定企业未来十年生死存亡的核心战略。本文深度解析2026年GEO战略咨…

Xilinx FPGA中USB3.0物理层接口调试核心要点

Xilinx FPGA中USB3.0物理层接口调试实战&#xff1a;从链路训练到信号完整性的深度突破 在高速数据采集系统日益普及的今天&#xff0c;USB3.0&#xff08;SuperSpeed USB&#xff09;凭借其5 Gbps的理论带宽&#xff0c;已成为工业相机、医疗成像设备和测试仪器中的标配接口。…

新手前端别慌:3天搞懂CSS写在哪,页面立马不丑了(附避坑指南)

新手前端别慌&#xff1a;3天搞懂CSS写在哪&#xff0c;页面立马不丑了&#xff08;附避坑指南&#xff09;新手前端别慌&#xff1a;3天搞懂CSS写在哪&#xff0c;页面立马不丑了&#xff08;附避坑指南&#xff09;先骂两句&#xff0c;再开始讲课CSS 是啥&#xff1f;——网…

三极管开关电路与逻辑电平匹配仿真设计实践指南

三极管开关电路与逻辑电平匹配&#xff1a;从原理到仿真的实战设计在嵌入式系统和数字接口设计中&#xff0c;一个看似简单却无处不在的“小角色”——三极管&#xff0c;常常承担着关键任务。你是否曾遇到这样的问题&#xff1a;3.3V的MCU GPIO口无法驱动5V继电器&#xff1f;…

图解PCB布线规则设计入门:多层板层间分布逻辑

图解PCB布线规则设计入门&#xff1a;多层板层间分布逻辑从一个“时钟抖动”问题说起某团队在调试一款基于ARM处理器的工业HMI主板时&#xff0c;发现触摸屏偶发失灵。经过示波器抓取I2C信号&#xff0c;发现SCL线上存在明显的毛刺和振铃现象。进一步排查后定位到&#xff1a;I…

Nature Sensors:国内首篇,仿生触觉新突破!清华团队研发“鸽眼”传感器,让机器人感知逼近人类!

来源&#xff1a;机器触觉前沿图1 Nature Sensors封面图&#xff0c;SuperTac在封面上展示&#xff08;右下角&#xff09;全文速览随着机器人技术从“预设程序执行”向“具身智能交互”发展&#xff0c;机器人与环境的物理交互能力成为制约其自主性与适应性的关键瓶颈。触觉感…

硬件I2C电气特性详解:上拉电阻与驱动能力

硬件I2C为何总丢包&#xff1f;揭秘上拉电阻与驱动能力的底层博弈你有没有遇到过这种情况&#xff1a;I2C代码写得严丝合缝&#xff0c;时序配置也没问题&#xff0c;可偏偏通信时不时失败——读不到传感器数据、EEPROM写入超时、RTC时间错乱。重启能好一阵&#xff0c;但干扰一…

基于广义benders分解法的综合能源系统优化规划(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&a…

线程池调度下的CPU治理

一、业务背景 在xx系统中&#xff0c;xx标签匹配模块是支撑多个下游业务的关键数据源。该模块每小时需要定时对 20万 x 1000条MVEL规则进行处理&#xff0c;涵盖&#xff1a; 标签匹配条件判断动态标签集合处理 任务采用 线程池并发处理 &#xff0c;最大并发线程数为 60 。随…

使用Vitis构建低延迟控制环路:操作指南

如何用Vitis打造微秒级响应的控制环路&#xff1f;实战全解析你有没有遇到过这样的场景&#xff1a;电机控制系统的响应总是“慢半拍”&#xff0c;哪怕算法再先进&#xff0c;动态性能也上不去&#xff1f;又或者在数字电源设计中&#xff0c;明明理论带宽足够&#xff0c;实测…

HID协议项目应用:简易游戏手柄开发教程

从零打造一个即插即用的游戏手柄&#xff1a;HID协议实战全解析 你有没有想过&#xff0c;自己动手做一个能被电脑“秒认”的游戏手柄&#xff1f;不需要装驱动、不用配对蓝牙&#xff0c;一插上USB就能在Steam或模拟器里操控角色——这听起来像是高端外设才有的体验&#xff…

大数据领域数据科学:助力企业数字化营销的策略

大数据领域数据科学&#xff1a;助力企业数字化营销的策略关键词&#xff1a;大数据、数据科学、企业数字化营销、营销策略、数据分析、用户画像、精准营销摘要&#xff1a;本文聚焦于大数据领域的数据科学如何助力企业实现数字化营销&#xff0c;通过详细介绍相关核心概念、算…

[特殊字符]_可扩展性架构设计:从单体到微服务的性能演进[20260120163651]

作为一名经历过多次系统架构演进的老兵&#xff0c;我深知可扩展性对Web应用的重要性。从单体架构到微服务&#xff0c;我见证了无数系统在扩展性上的成败。今天我要分享的是基于真实项目经验的Web框架可扩展性设计实战。 &#x1f4a1; 可扩展性的核心挑战 在系统架构演进过…

OpenAMP在边缘控制器中的实践:新手入门必看

以下是对您提供的博文《OpenAMP在边缘控制器中的实践&#xff1a;新手入门必看》进行深度润色与重构后的专业级技术文章。全文已彻底去除AI痕迹、模板化表达和空洞套话&#xff0c;转而以一位有十年嵌入式系统开发经验的工程师视角&#xff0c;用真实项目语境、踩坑总结、设计权…