news 2026/9/12 19:38:38

Python串口通信避坑指南:树莓派与STM32 RT1064的数据交互实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python串口通信避坑指南:树莓派与STM32 RT1064的数据交互实战

串口通信避坑指南:树莓派与STM32 的数据交互实战

近些日子有个智能小车方面的项目, 这里需要将树莓派跟那种STM32利用串口展开交流。原本以为这不过是轻松搞定的连线, 以及简简单单书写好几行代码的事儿, 然而实际遭遇的麻烦远比设想的多好多。先是树莓派的串口怎么都没办法开启, 接着又是STM32接收数据出现乱码的状况, 而后还有两边通信协议相互不匹配的问题, 差不多把所有可能碰到的陷阱问题整个体验一番了。这篇章体内容就是专注去梳理整合这些遭遇麻烦的经历以及对应的解决办法, 期望能够给予那些正忙于尝试树莓派跟嵌入式设备进行通信事宜的友人们提供一定程度的助力帮助。

串口通信看上去好像很古老, 然而在嵌入式跟单板计算机共同协作工作的情景当中, 它依旧是最为直接、最为可靠的通信方式当中的一种。不存在繁杂的网络协议栈, 不存在驱动兼容性方面的问题, 仅仅将几根线连接在一起,数据便能够开始流动起来。可是, 这种所谓的“简单”背后隐藏着相当多的细节, 像电平匹配、波特率校准、数据帧解析、流控制等, 只要任何一个环节出现问题, 通信就会遭遇失败。尤其是在你将具备完整Linux系统运行环境的树莓派与资源存在限制情形的STM32单片机放置到一起的时候, 这两者之间的编程模型乃是不同的, 其系统时序情形亦不一样, 再者调试手段方面的差异着实巨大, 如此一来便更加要求有一套清晰的实践予以实施办法来能够规避风险了。

本文会从实际项目着手, 不但会告知你怎样使树莓派与STM32成功实现通信, 甚至还会深入探究那些易被忽视的细节: 一、树莓派的/dev/为何有时会“不见”? 二、STM32中断接收数据为何会出现丢包情况? 三、怎样设计一个既简单又稳健的通信协议去处理粘包及错误? 我们会把作为树莓派端的主要工具, 联合具体的代码示例以及调试技巧, 使你在动手进行实践时避开那些令我熬夜调试的“大坑”。

1. 环境准备与硬件连接:从混乱到有序

在着手写代码起始之时, 准确无误的硬件连接以及软件环境乃是成功得以实现的根基所在。要是在这一极为关键紧要的步骤当中有所疏忽大意, 那么后续开展的所有调试工作极有可能是在错误的导向路径之上无谓地损耗时间, 白费精力, 徒劳无功。

1.1 硬件连线:不仅仅是TX接RX

在树莓派(以4B作为示例)的GPIO各个引脚当中 的 GPIO的 以4B为例 物理引脚8(/TXD)以及 还有物理这个引脚10(/RXD)便是 是默认的 属于那种硬件串口(比如说UART)的引脚。到了STM32开发板(以常见的逐飛科技核心板当作例子)这里 其串口引脚就得 需要去查看原理图 一般来说通常都是 某一个USART里面的TX和RX引脚 就像比如说和 这样。

注意, 最基础的连接原则乃是交叉连接, 即树莓派的TXD要去接STM32的RXD, 树莓派的RXD则须接STM32的TXD。除此之外, 一定要连接两者的GND, 也就是地线, 以此为信号提供共同的参考电平, 而这可是很多初学者容易忽略进而导致通信不稳定的关键所在。

然而, 仅仅把这三根线连接起来, 也就是TXD, RXD, GND, 这或许还不行。要是你的通信距离在较长的范围, 也就是超过1米, 或者所处环境干扰比较大这样的情况下, 那就得考虑去添加电平转换了。树莓派的GPIO是3.3V电平, 而好多STM32开发板尽管同样是3.3V, 可是有些模块或者转换芯片有可能是5V。直接将3.3V和5V设备连接起来, 就有可能会损坏树莓派。稳妥的举措是用到一个3.3V/5V双向电平转换模块, 比如等等, 或者去确认你的STM32板载IO电平同样是3.3V。

一个清晰的连接对照表能帮你快速排查硬件问题:

设备端信号线连接目标引脚说明电压

树莓派 4B

TXD ()

STM32 RXD

物理引脚 8

3.3V

树莓派 4B

RXD ()

STM32 TXD

物理引脚 10

3.3V

树莓派 4B

GND

STM32 GND

物理引脚 6 (或其他GND)

0V

STM32

TXD (如 PA9)

树莓派 RXD

3.3V

STM32

RXD (如 PA10)

树莓派 TXD

3.3V

1.2 树莓派串口配置:解开系统“占用锁”

树莓派原本默认的那个硬件串口, 也就是(/dev/)的那个, 被分配给了蓝牙模块, 与此同时, 另一个迷你串口, 即(/dev/ttyS0), 被分配给了GPIO引脚。为了能够获得稳定的、高性能的通信, 我们需要进行交换。把它们交换一下, 并且将硬件串口释放出来。

起先, 借助SSH要么直接连接终端至树莓派, 运用raspi-工具予以配置。

sudo raspi-config

在界面中依次选择:

当被问到“Would you like a login shell to be over?”的时候, 要选择No, (这一点是很重要的哦, 不然的话串口就会被登录终端给占用啦)。当被问到“Would you like the port to be?”的时候, 要选择Yes。

接下来,需要编辑引导配置文件,确保硬件UART被正确启用:

sudo nano /boot/config.txt

在文件末尾添加或修改以下两行:

enable_uart=1 dtoverlay=disable-bt

让第一行去强制性地启用UART, 将第二行用于禁用蓝牙从而去释放硬件串口, 进行保存并且退出(Ctrl+X, 接着是Y, 随后回车), 重新启动一下树莓派来令更改产生效果。

将其重新启动之后, 对串口设备展开验证。去执行 ls -l /dev/* 这个操作, 你理应能够看到类似于以下这般的输出结果:

/dev/serial0 -> ttyAMA0 /dev/serial1 -> ttyS0

这意味着, /dev/区域也即我们这些GPIO引脚所对应的串口, 此刻已然指向了硬件串口, 你能够借助这个终端工具来开展快速测试。

sudo apt-get install minicom -y sudo minicom -b 115200 -o -D /dev/ttyAMA0

要是呈现出界面并且不存在错误, 那就表明串口设备已然就绪。按下Ctrl+A, 接着按下X从而退出。

1.3 环境与库安装

树莓派通常预装了。我们使用pip来安装功能强大的库:

sudo pip3 install pyserial

在完成安装之后, 能够去撰写一个最为简单的测试脚本.py, 以此来检验库是否工作处于正常状态:

import serial try: # 尝试打开串口,不进行实际通信 ser = serial.Serial('/dev/ttyAMA0', 115200, timeout=1) print(f"串口 {ser.port} 打开成功,配置为:{ser}") ser.close() print("串口已关闭。") except serial.SerialException as e: print(f"打开串口失败:{e}")

执行.py, 要是瞅见成功开启的讯息, 那就表明串口环境已准备妥当。

2. 树莓派端串口编程核心技巧

掌握了基础环境,我们来深入的库。它虽然接口简单,但

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

工业级AC-DC封闭式电源的可靠性设计与选型核心逻辑

1. 工业现场的真实痛点:为什么“能用”远远不够 我在深圳一家做PLC控制柜集成的公司干了八年,经手过上千台设备的电源选型。最早那会儿,客户只要求“通电就行”,我们图省事,直接上一批20元/只的通用AC-DC模块——输入标…

作者头像 李华
网站建设 2026/9/12 19:34:17

企业双线备份怎么采购和验收:两条宽带不等于业务不断网

准备给公司加一条备用线路,先别只比较“电信加联通”还是“两条千兆”。要先回答:主线出问题时,哪些业务必须恢复,能接受多久,备用线是否真能独立工作。 本文是面向企业 IT、行政与采购的通用检查方法,不是…

作者头像 李华
网站建设 2026/9/12 19:33:36

一张AI设计稿,逼得展台搭建方通宵救火

客户拿着一张AI生成的效果图来问:明天就要进场展台搭建,能不能做?很多人以为,效果图到手就等于展台可以直接落地,却不知道这一刻,展台搭建团队就要开启全套加急救火模式。首先,就是图纸突围。 设…

作者头像 李华
网站建设 2026/9/12 19:31:32

2026年外贸建站公司推荐:多语言、谷歌收录、询盘和费用边界

2026年外贸建站公司推荐:多语言、谷歌收录、询盘和费用边界摘要:外贸建站公司推荐不能只看英文页面案例,而要看服务商能否讲清多语言、谷歌收录、海外访问、产品资料、询盘表单、费用续费和后续维护边界。2026年企业做外贸网站,可…

作者头像 李华
网站建设 2026/9/12 19:31:24

基于CNN的多输入单输出回归预测系统设计与实现

1. 项目概述:基于CNN的多输入单输出回归预测系统在工业数据分析和预测建模领域,多变量输入的单输出回归问题一直是个经典挑战。最近我在一个设备寿命预测项目中,成功实现了基于卷积神经网络(CNN)的回归预测模型,特别适合处理具有空…

作者头像 李华
网站建设 2026/9/12 19:30:55

医疗推理提速:用Neo4j知识图谱替代传统规则引擎

1. 医疗推理为什么要落在“图”上 2018年我参与过一个合理用药审查系统的改造,当时团队用关系型数据库存了药品说明书、适应证、禁忌证和不良反应数据,配合一堆规则引擎做冲突检测。规则写得多了之后,出现一个很尴尬的现象: 规则…

作者头像 李华