news 2026/4/25 17:00:36

Pi 4B插针定义深度解读:UART串口引脚使用方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Pi 4B插针定义深度解读:UART串口引脚使用方法

树莓派4B的UART串口:从引脚定义到实战通信,一文讲透

你有没有遇到过这种情况——接好了线,写好了代码,树莓派就是收不到GPS模块的数据?或者用USB转TTL连上去,终端里只看到乱码甚至完全没反应?

别急,问题很可能出在UART串口配置上。而根源,往往是对“Pi 4B插针定义”理解不深,尤其是那两个关键引脚:GPIO14 和 GPIO15。

今天我们就来彻底拆解树莓派4B上的UART串口,从物理引脚、电平特性、系统配置到Python通信实战,一步步带你打通任督二脉。无论你是刚入门的新手,还是卡在某个环节的老手,这篇文章都能帮你把坑踩明白。


为什么是GPIO14和GPIO15?搞懂这俩引脚才算入门

树莓派4B背面那个40针的排母,看起来密密麻麻,其实它有一套非常清晰的设计逻辑。其中最常被用到的一组功能就是UART串口通信,对应的正是:

  • GPIO14(物理引脚8) → TXD(发送)
  • GPIO15(物理引脚10) → RXD(接收)

这两个引脚属于BCM编号体系下的通用IO,但在默认状态下已经被映射为硬件UART控制器(PL011 UART)的通信通道。它们工作在3.3V TTL电平下,意味着高电平代表“1”时电压约为3.3V,低电平为0V。

🔍 小贴士:千万不要直接接到5V设备!像Arduino Uno这类主控输出的是5V信号,如果直接连到GPIO15,轻则通信失败,重则烧毁树莓派GPIO!

更麻烦的是,默认情况下,树莓派操作系统会把这对引脚当作“串口控制台”使用——也就是说,开机过程中的内核日志、登录提示符都会通过这里输出。如果你想用自己的程序去读写数据,就得先把这个“默认权限”释放出来。

所以,真正要用好UART,光知道哪根线接哪根还不够,你还得动系统配置。


引脚编号别再傻傻分不清:Board、BCM、WiringPi到底怎么选?

新手最容易混淆的就是引脚编号方式。同一个物理位置,三种叫法,稍不留神就配错了GPIO。

类型特点推荐场景
物理引脚号(Board)按照从左到右、从上到下顺序编号1~40接线时方便对照板子
BCM编号芯片内部寄存器编号,如GPIO14、GPIO15编程控制首选
WiringPi编号第三方库自定义编号,现已弃用不推荐使用

举个例子:
- 物理引脚第8针 = BCM GPIO14 = 原来的WiringPi编号15(但现在没人用了)

结论很明确:写代码一律用BCM编号。因为所有现代库(比如RPi.GPIO、pyserial、gpiozero)都基于BCM,这样能确保你的脚本在不同版本的树莓派之间有更好的兼容性。


UART是怎么工作的?一句话说清本质

UART全称叫“通用异步收发器”,关键词是“异步”。这意味着它不需要一根专门的时钟线来同步双方节奏,而是靠事先约定好的波特率来协调数据传输速度。

比如你设成115200 bps,那发送方每秒发11万5千多个比特,接收方也按这个节奏一个一个采样。只要两边差得不太离谱,就能正确还原数据。

典型的数据帧结构如下(以最常见的8N1模式为例):

[起始位(0)] [D0][D1][D2][D3][D4][D5][D6][D7] [停止位(1)]

总共10位,传输一个字节。没有校验位,起止分明,简单高效。

常见的波特率有:9600、19200、38400、57600、115200。对于树莓派与传感器之间的通信,115200是最常用的选择,兼顾速度与稳定性。


硬件怎么接?三句话讲清楚正确连接方式

要实现树莓派与其他设备(比如USB-TTL模块、ESP32、STM32等)的串口通信,请牢记以下三条铁律:

  1. 交叉连接
    - Pi 的 TX(GPIO14) → 对方的 RX
    - Pi 的 RX(GPIO15) ← 对方的 TX

  2. 共地是必须的
    双方必须共用GND(物理引脚6),否则没有统一的参考电平,信号无法识别。

  3. 电平必须匹配
    如果对方是3.3V系统(如ESP8266、多数LoRa模块),可直连;如果是5V系统(如Arduino Uno),必须加电平转换电路或使用带电平匹配的模块。

⚠️ 再强调一遍:绝对不要让5V信号进入GPIO14/15!

典型的连接拓扑如下:

[树莓派4B] GPIO14 (TX) ──────→ [RX of USB-TTL] GPIO15 (RX) ←────── [TX of USB-TTL] GND ──→ GND │ [PC via USB]

这种结构非常适合你在PC端通过串口工具(如PuTTY、minicom、Screen)查看树莓派启动信息,或者调试嵌入式程序。


系统配置才是关键:为什么/dev/ttyS0总是打不开?

很多人明明接对了线,却始终无法打开/dev/ttyS0/dev/serial0,程序报错“No such device”或“Permission denied”。

原因只有一个:串口还被系统拿去当控制台用了

解决办法分两步走:

第一步:关闭串口登录 shell

运行:

sudo raspi-config

进入菜单:

Interfacing Options → Serial

然后回答两个问题:
- “Would you like a login shell to be accessible over serial?” →No
- “Would you like the serial port hardware to be enabled?” →Yes

这一步的作用是告诉系统:“我不需要通过串口登录了,请把硬件交给我自己用。”

第二步:确保UART永久启用

编辑配置文件:

sudo nano /boot/config.txt

确认里面包含这一行:

enable_uart=1

如果没有,加上它。这一行能防止系统因动态电源管理或其他覆盖设置而禁用UART。

同时检查是否误加了以下语句(旧版配置常见错误):

dtoverlay=pi3-disable-bt # 或 dtoverlay=disable-bt

这些会干扰UART资源分配,在Pi 4B上应注释掉或删除。

改完重启:

sudo reboot

验证是否成功

重启后执行:

ls /dev/ttyS*

正常应该看到:

/dev/ttyS0

还可以查看符号链接:

readlink /dev/serial0

通常指向/dev/ttyS0,这是推荐在代码中使用的路径,因为它具有更好的跨平台适应性。


Python实战:用pyserial轻松实现串口通信

一旦硬件和系统都准备就绪,剩下的就是写代码了。Python配合pyserial库,可以让串口编程变得异常简单。

安装依赖

pip install pyserial

示例代码:双向通信模板

import serial import time # 打开串口 ser = serial.Serial( port='/dev/serial0', # 推荐使用symbolic link baudrate=115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1 # 设置非阻塞读取 ) print("串口已打开,开始监听...") try: while True: # 检查是否有数据到达 if ser.in_waiting > 0: data = ser.readline().decode('utf-8', errors='ignore').strip() print(f"收到: {data}") # 主动发送心跳包(可选) ser.write(b'Hello from Raspberry Pi!\n') time.sleep(1) except KeyboardInterrupt: print("\n退出中...") finally: ser.close()

📌关键细节说明
- 使用/dev/serial0而不是/dev/ttyS0,避免未来更换型号时路径失效
-timeout=1是为了防止readline()永久阻塞
-in_waiting判断缓冲区是否有数据,提升响应效率
- 加errors='ignore'防止非法编码导致崩溃
- 记得将当前用户加入dialout组以获得访问权限:
bash sudo usermod -aG dialout $USER


实际应用场景:树莓派作为智能网关的核心桥梁

在真实的项目中,UART不只是用来“打印点东西”。它是树莓派连接外部世界的关键通道之一

场景1:接入GPS模块(如NEO-6M)

  • GPS模块持续广播NMEA语句(如$GPGGA)
  • 树莓派通过GPIO15接收,解析经纬度、时间、定位状态
  • 数据可用于轨迹记录、时间同步或上传至服务器

💡 提示:很多GPS模块默认波特率为9600,请在代码中对应调整。

场景2:驱动LoRa模组(如SX1278)

  • 使用AT指令通过UART配置LoRa参数(频率、扩频因子等)
  • 树莓派作为中心节点,收集远程传感器数据
  • 构建远距离、低功耗的无线传感网络

场景3:与STM32协同工作

  • STM32处理实时任务(电机控制、PID调节)
  • 树莓派负责高级运算(图像识别、网络通信)
  • 双方通过UART交换状态和命令,形成“主控+协处理器”架构

这些应用的背后,都是那一对小小的引脚在默默支撑。


常见问题与避坑指南

❌ 问题1:什么都收不到?

  • ✅ 检查是否已禁用串口控制台
  • ✅ 双方波特率是否一致
  • ✅ 接线是否交叉(TX→RX,RX←TX)
  • ✅ 是否共地
  • ✅ 用万用表测一下对方TX脚有没有电平跳动

❌ 问题2:/dev/ttyS0不存在?

  • ✅ 确保/boot/config.txt中有enable_uart=1
  • ✅ 查看启动日志:dmesg | grep uart,看是否有初始化信息
  • ✅ 是否启用了蓝牙相关覆盖层导致冲突?

❌ 问题3:通信不稳定、丢包严重?

  • ✅ 避免超过1米的长导线
  • ✅ 使用带屏蔽层的杜邦线
  • ✅ 加大电源滤波电容,减少噪声干扰
  • ✅ 高干扰环境下考虑升级为RS-485差分通信

工程级建议:让产品更可靠的设计实践

如果你是在做正式产品而非实验原型,以下几点值得参考:

  1. 保留调试接口
    即使最终产品封闭,也建议在PCB上预留UART排针或测试点,便于现场升级和故障排查。

  2. 命名清晰
    在电路板丝印上明确标注“UART_TX”、“UART_RX”、“GND”,避免装配出错。

  3. 增加防护
    在UART信号线上添加TVS二极管,防静电(ESD)击穿,提高工业环境下的可靠性。

  4. 注意蓝牙影响
    Pi 4B上蓝牙使用的是mini-UART(通常是ttyS0),而主UART用于GPIO14/15。若需高性能蓝牙通信,可通过锁定core_freq=250来稳定mini-UART时钟源。

  5. 权限管理自动化
    在部署脚本中自动添加用户到dialout组,避免每次手动操作。


结语:掌握UART,才真正打开了硬件交互的大门

回到最初的问题:为什么你的串口不通?

可能只是少勾了一个选项,或多接了一根5V线。

但背后反映的,是对树莓派插针定义和底层机制的理解深度。

GPIO14 和 GPIO15 看似普通,实则是连接数字世界与物理世界的桥梁。只有当你真正搞懂它们的功能、限制和配置方法,才能游刃有余地驾驭各种传感器、模组和微控制器。

下次当你拿起杜邦线准备连接UART时,不妨停下来想一想:
- 我的波特率设对了吗?
- 控制台关了吗?
- 电平安全吗?
- 共地了吗?

把这些细节都理顺了,你会发现,原来串口通信,也没那么难。

如果你在实际项目中遇到了其他UART难题,欢迎在评论区留言交流。我们一起把每一个坑,变成通往精通的台阶。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

18、办公软件间的协作:复制、嵌入与链接操作指南

办公软件间的协作:复制、嵌入与链接操作指南 在日常办公中,我们经常需要在不同的应用程序之间共享和交换信息,例如在Word和PowerPoint之间复制内容、嵌入对象等。本文将详细介绍如何在这些应用程序之间进行高效协作,以提高工作效率。 1. 演示文稿的审阅流程 在动物救援基…

作者头像 李华
网站建设 2026/4/24 19:21:28

Windows 10优化终极指南:用免费工具实现快速系统清理

Windows 10优化终极指南:用免费工具实现快速系统清理 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on the W10 d…

作者头像 李华
网站建设 2026/4/21 17:11:10

LangFlow重试机制配置最佳实践

LangFlow重试机制配置最佳实践 在构建基于大语言模型(LLM)的智能应用时,开发者常会遭遇一个看似微小却影响深远的问题:一次突如其来的网络抖动或API限流,就能让精心设计的工作流戛然而止。尤其是在LangFlow这类可视化流…

作者头像 李华
网站建设 2026/4/22 0:18:59

如何在3分钟内完整配置Windows 11 LTSC微软商店

如何在3分钟内完整配置Windows 11 LTSC微软商店 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 还在为专业版系统缺少应用商店而苦恼吗?&a…

作者头像 李华
网站建设 2026/4/22 23:59:22

Nexus Mods App实战指南:如何用5分钟完成游戏插件高效管理

Nexus Mods App实战指南:如何用5分钟完成游戏插件高效管理 【免费下载链接】NexusMods.App Home of the development of the Nexus Mods App 项目地址: https://gitcode.com/gh_mirrors/ne/NexusMods.App Nexus Mods App是一款专为游戏玩家设计的开源插件管理…

作者头像 李华