树莓派与STM32之间串口通信

目录

一、树莓派串口通信模块介绍

二、树莓派蓝牙、串口引脚映射对换步骤

1.启动串口

2. 禁用蓝牙(硬件串口与mini串口映射对换)

3.验证是否交换成功

三、树莓派安装mini串口调试助手

四、树莓派与电脑串口调试

五、树莓派与STM32串口调试


一、树莓派串口通信模块介绍

树莓派串口通信与蓝牙模块的基本介绍

树莓派3/4B有两个串口,分别为 “硬件串口”/dev/ttyAMA0 和“mini串口” /dev/ttyS0

“硬件串口”有单独的波特率时钟源,性能高、可靠,“mini串口”性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此“mini串口”有个致命的弱点是:波特率受到内核时钟的影响,内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连。

简单概括来说:“硬件串口”是全功能的,而“mini串口则是阉割过的。

在实际项目中遇到的问题是,如果使用“mini串口”/dev/ttyS0,在通讯需要奇偶校验时会报错。所以项目中为了稳定还是推荐使用“硬件串口” /dev/ttyAMA0

在树莓派3/4B中,由于板载蓝牙模块,因此这个“硬件串口”被默认分配给与蓝牙模块通信了,而把“mini串口”默认分配给了排针引出的GPIO Tx Rx。在开启串口通讯不做任何设置的时候,默认的串口通讯使用的是“mini串口”。

因此,如果要在项目中使用,为了通讯稳定,需要进行“硬件串口”与“mini串口”默认映射对换,把“硬件串口”/dev/ttyAMA0映射分配给GPIOTx Rx

二、树莓派蓝牙、串口引脚映射对换步骤


1.启动串口

首先打开此设置界面

然后选择此界面:

此举是将串口打开,点击OK,再重启树莓派。

2. 禁用蓝牙(硬件串口与mini串口映射对换)

映射对换的目的是将硬件串口作用在GPIO接口的Tx Rx上。我的项目上没有用到蓝牙通讯,所以禁用蓝牙后也没有再次开启,也没有测试再次开启蓝牙通讯是否正常,如果项目中有用到蓝牙通讯,那么进行这一步的时候要谨慎。

打开终端输入:

ls /dev -al 

查看所有串口映射,下拉找到这一行,如下图所示:

此时我们可以发现我们的serial0,也就是主串口映射为ttyS0,也就是主串口指向的是mini串口,前文我们提到mini串口效率低不稳定,所以这里我们需要将主串口指向硬件串口,也就是ttyAMA0

打开终端,输入:

sudo nano /boot/config.txt

滚轮到末尾最下方,加入内容:

dtoverlay=pi3-disable-bt

这样,ttyAMA0 得以释放,这时候树莓派也自动交换了ttyAMA0ttyS0,把serial0 分配给了 ttyAMA0

3.验证是否交换成功

打开终端,再次输入:

ls /dev -al

就可以看到如下图所示,这样我们就配置成功了。

三、树莓派安装mini串口调试助手

打开终端,输入:

sudo apt-get install minicom 

等待安装完成。

安装完成之后,接下来就是使用串口助手。在终端输入命令:

minicom -D /dev/ttyAMA0 -b 115200 

回车即可进入。这里 -D /dev/ttyAMA0 就是指向我们打开的串口端口号,和COM1这种是一样的, -b 115200是配置波特率,这一项我们在minicom中输入 Ctrl+A 在下方也是可以看到我们的波特率。

注意:这里我遇到了一个问题,就是提示打开 ttyAMA0 的时候没有权限,如果你也遇见了没有权限打开tty8的这种提示,打开终端输入:

sudo chmod 777 /dev/ttyUSB0

这里的 ttyUSB0 对应你提示没有权限的串口,然后回车就OK解决了。

minicom打开之后如图所示:

我打开minicom串口助手的时候,会发现键盘失灵,就是在minicom下,键盘跟没插似的。如果你没有遇到这种情况,就可以跳过这一小节。那么具体解决办法,参考这个博主的博文,里面有着详细的操作步骤:

https://blog.csdn.net/weixin_41276153/article/details/128037288?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168207712316800186528500%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168207712316800186528500&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-128037288-null-null.142^v86^wechat,239^v2^insert_chatgpt&utm_term=%E6%A0%91%E8%8E%93%E6%B4%BE%E4%B8%8Estm32%E4%B8%B2%E5%8F%A3%E9%80%9A%E4%BF%A1&spm=1018.2226.3001.4187

好了,到这里所有配置已经结束,接下来就可以验证了。

四、树莓派与电脑串口调试

打开电脑上的串口调试助手,把树莓派的minicom串口调试助手也打开。我用的是ttyAMA0,所以指令是:

minicom -D /dev/ttyAMA0 -b 115200

注意:电脑上的串口助手波特率等信息与树莓派上的信息要对应。

连线方式:

树莓派上的RX引脚   连接   USB-TTL上的TX引脚,

树莓派上的TX引脚   连接   USB-TTL上的RX引脚,

GND   与   GND相连。

USB-TTL插到电脑上之后就可以进行树莓派与电脑之间的串口调试了。

 串口调试助手网上随便找一个就可以,这里给个链接:

链接:https://pan.baidu.com/s/17CVgDrNb6OM6yVvCB5A8HQ?pwd=1mge 
提取码:1mge

五、树莓派与STM32串口调试

连线方式:

树莓派上的RX引脚   连接   STM32上的TX引脚,

树莓派上的TX引脚   连接   STM32上的RX引脚,

GND  与  GND相连(这个GND最好接上,让它们之间有一个统一的低电平,更容易接收到数据)。

我们可以写这么一个程序进行测试:树莓派发送“456”,STM32接收到之后发送“123”回来。

STM32端的程序就不挂了,网上有很多例程。把波特率、校验位、停止位等信息配置对了就可以。下面挂一下树莓派的发送“456”的程序。

import serialser = serial.Serial("/dev/ttyAMA0", 9600, timeout=0.1)  # 生成串口while True:ser.write(b'456') # 发送数据

效果如下图: 

最后再留几个树莓派接收数据的程序,这两句要放在while循环里,以达到串口实时接收信息的目的。

ser.flushInput()  # 清空缓存data = ser.read(1)  # 读取一个字节的数据

当然这只是举一个简单的例子,具体读取多少字节数据,或者其他更多设置,可以网上搜索一下进行修改 。

注意事项:

1.我做的这个项目中,结合到了串口通信与摄像头的实时检测,由于二者都是实时的,所以串口通信的读取间隔不能影响到摄像头视频流的采集。

所以,对于下面这句初始化代码中,timeout的取值十分重要。经过尝试,间隔为0.1s的时候,摄像头读取视频流是不卡顿的,但是有时候串口会接收不到信息。所以,具体情况还是需要你自己去亲自调试。

ser = serial.Serial("/dev/ttyAMA0", 9600, timeout=0.1)

2.另外就是我自己感觉,波特率为9600时的效果要比115200的效果好一点。 

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

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

相关文章

【python】选择合适的机器学习模型

文章目录 1. python包:lazypredict1.1 安装lazypredict1.2 使用lazypredict 2. 选择模型3. 常用第三方库 1. python包:lazypredict lazypredict包功能:了解哪些模型在没有任何参数调整的情况下效果更好 1.1 安装lazypredict 直接用pip安装…

AI是什么?AI工具集网站大全

大家好,我是网媒智星,今天给大家总结了一些AI工具,希望能给大家提供帮助。 AI是什么? AI 是人工智能的缩写,指的是通过计算机技术和算法来实现智能的能力。我们人类的智能是基于我们的大脑所实现的,而 AI…

文心一言的魔性作图,我愣住了……

最近啊,关于智能AI的新闻,可以说是一波接着一波。 刚开始的时候是关于AI绘画工具的,一键合成小姐姐,秒变插画大佬,只需要简单的输入几行描述就可以。 后来,ChatGPT爆火全网,且在程序员圈炸开了锅…

读者问:省厅选调 和 阿里开发岗怎么选?

经常有小伙伴问编程君:程序员年龄大了,要不要转公务员? 于我而言,虽然能去个不错的互联网公司或者也可能进事业单位。但是一旦走上创业这个道路,真的就是不回路! 很多时候别人问我如何做选择? 我…

“快跑”一个月后,我们上手实测了一把 360 智脑大模型!

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 一个多月前,360 集团官方正式宣布了基于 360 GPT 大模型开发的 360 智脑的到来。不过,彼时对于这款 AIGC 产品,周鸿祎曾评价道:360 AI 就像是个“孩子”&…

大厂技术高管如何融入创业公司

来自互联网公司技术高管的亲身经历与感悟 作者 | 日之崖 责编 | 朱珂欣 出品 | 思辨致知(ID:gh_66c6f63fe6b7) 我从 19 年 9 月从阿里巴巴离开,有幸加入了一家高速发展的创业公司,较好的完成了团队融入&#xff…

ChatGPT爆火后,怎样跳脱算力困局?

英特尔7大算力神器助力极致算力。 “请代替基金经理写一段年终总结”,“如何评价春节档电影大混战”,“请写出一段爬取网页内容的程序”……诸如此类问题,OpenAI开发的ChatGPT都可以给出一段“中肯”的回答。 2023年开年,全球AI领…

可能被ChatGPT取代10大高危职位里,有没有你...

来自:新智元 编辑:David 【导读】ChatGPT一出,很多人害怕自己的工作会被AI取代。最近,有外媒盘点了最可能被ChatGPT取代10大高危职位。 进NLP群—>加入NLP交流群 自从去年11月发布以来,OpenAI的ChatGPT已经被用来…

【动手学深度学习】(task123)注意力机制剖析

note 将注意力汇聚的输出计算可以作为值的加权平均,选择不同的注意力评分函数会带来不同的注意力汇聚操作。当查询和键是不同长度的矢量时,可以使用可加性注意力评分函数。当它们的长度相同时,使用缩放的“点-积”注意力评分函数…

普通人应该怎么赚钱,下班后可在家操作的四个兼职副业分享

大家好,我是蝶衣王的小编 不少朋友发觉,单靠薪水好像已经很难再存下钱了,甚至有时候还不够一个月的开销。实际上,如果你想要提升月收益,你可以选择发展副业。那发展什么副业才能赚钱呢 有小伙伴要问:我要…

疫情期间谁干谁赚钱的三个小副业,普通人也能干,基本不用你投资

一切生意的本质,都是低买高卖,只是有时,这个利差来自货物,有时利差来自服务而已。 疫情过后,三个生意千万不要干,谁干谁倒闭,天王老子救不了你。还有三个生意,谁干谁发财&#xff0…

有稳定工作,千万不要裸辞摆地摊

千万别因为看抖音看视频看多了,听信别人说摆摊的上万的,那都搏流量和收徒用的,不过也有人赚的,要付出很多时间的那种,哈哈! 五月份从一家百人规模互联网公司设计岗裸辞,干起来摆地摊&#xff0c…

工作只能解决温饱,副业才是你的未来

欢迎关注勤于奋、每天12点准时更新国外LEAD相关技术 今天这个标题,有几个人理解? 本来这个标题都取好了,而且也想跟大家分享一些知识,结果突然我QQ被强制下线,原来是被举报了,我真的是服了。 真的把我吓了一…

非常适合金融人的副业,不用坐班,时间自由!

最近在论坛上看到一个测试,特扎心: 以下三种情况,哪个让你最绝望? ❶ 月薪4500,花呗欠了10000 ❷ 被领导骂到哭,因为没钱不敢裸职 ❸ 租房子的中介公司突然倒闭,房东逼你搬出去,…

该怎么选择副业,三条建议形成自己的副业思维

受经济环境的影响,许多年轻人觉得原来稳定的工作不那么稳定,看着周围的朋友因为企业破产和失业,生活变得没有信心,也想找到自己的副业,在紧急情况下赚更多的钱。所以,年轻人在选择副业时也面临着很多困惑&a…

辞职文案火了,程序员的辞职理由要命不要钱。

今日刷微博,一位在丽江乞讨的姑娘火了,因为她的乞讨理由是,“本人美貌如花,所以不想上班,在此乞讨”…… 敢用这么奇葩的乞讨理由,这位姑娘背后的真实目的,我们暂按下不表。不过不想上班的理由有…

微信为什么使用 SQLite 保存聊天记录?

概要 SQLite 是一个被大家低估的数据库,但有些人认为它是一个不适合生产环境使用的玩具数据库。事实上,SQLite 是一个非常可靠的数据库,它可以处理 TB 级的数据,但它没有网络层。接下来,本文将与大家共同探讨 SQLite 在…

Linux找回用户密码

Linux中有两种用户模式,root用户和普通用户,这两种方法找回密码的方式各不相同,我们来分别在两种用户模式下完成找回密码的任务。 一.root用户找回密码 Linux拥有7个运行级别(0:关机、1:单用户、2&#xf…

Postgresql忘记密码,如何重置密码

一、前言 系统:windows系统 64位 Postgresql 版本:Postgresql 14 今天想测试一个PostgresSQL语法的 SQL,但是打开PostgresSQL之后沉默了。密码是什么? 想来当初知识安装随便玩一下,也没有太留意记一下密码,…

Centos8忘记密码了怎么办?Centos8修改密码超详细超实用方法

1. 重启Centos8,出现以下内容时赶紧按几下“上下方向键PgUp和PgDn”(首先要确保鼠标在界面内),使其停留在这个界面,然后选中第一行。 2. 按键盘上的“e”,进入编辑模式(edit select item&#…