树莓派与STM32之间串口通信

这篇具有很好参考价值的文章主要介绍了树莓派与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

树莓派如何与stm32通信,树莓派,stm32,单片机,嵌入式硬件,opencv,linux

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

1.启动串口

首先打开此设置界面

树莓派如何与stm32通信,树莓派,stm32,单片机,嵌入式硬件,opencv,linux

然后选择此界面:

树莓派如何与stm32通信,树莓派,stm32,单片机,嵌入式硬件,opencv,linux

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

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

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

打开终端输入:

ls /dev -al 

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

树莓派如何与stm32通信,树莓派,stm32,单片机,嵌入式硬件,opencv,linux

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

打开终端,输入:

sudo nano /boot/config.txt

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

dtoverlay=pi3-disable-bt

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

3.验证是否交换成功

打开终端,再次输入:

ls /dev -al

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

树莓派如何与stm32通信,树莓派,stm32,单片机,嵌入式硬件,opencv,linux

三、树莓派安装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打开之后如图所示:

树莓派如何与stm32通信,树莓派,stm32,单片机,嵌入式硬件,opencv,linux

我打开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 serial

ser = serial.Serial("/dev/ttyAMA0", 9600, timeout=0.1)  # 生成串口

while True:

    ser.write(b'456') # 发送数据

效果如下图: 

树莓派如何与stm32通信,树莓派,stm32,单片机,嵌入式硬件,opencv,linux

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

ser.flushInput()  # 清空缓存

data = ser.read(1)  # 读取一个字节的数据

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

注意事项:

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

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

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

2.另外就是我自己感觉,波特率为9600时的效果要比115200的效果好一点。 文章来源地址https://www.toymoban.com/news/detail-561603.html

到了这里,关于树莓派与STM32之间串口通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于openmv与stm32之间的串口通信实现

    已经在研一度过快3个月了,研究生学习跟本科学习还是有很大区别的,要善于自己找资料善于自己总结,因此我也决定从现在开始时不时的写写博客总结后面每段时间遇到的各种困难以及解决方法,为以后工作积累经验也方便以后查阅。 这是我第一篇博客,之前都是在做关

    2024年02月14日
    浏览(24)
  • 【单片机】基于STM32的UART串口通信

    简单讲解一下UART通信协议,以及UART能够实现的一些功能,还有有关使用STM32CubeMX来配置芯片的一些操作。实验内容基于 正点原子精英板 开发板,单片机芯片为 STM32F103ZET6 。 在后面我会以我使用的STM32F429开发板来举例讲解(其他STM32系列芯片大多数都可以按照这些步骤来操作

    2024年01月17日
    浏览(56)
  • K210视觉循迹,STM32之间串口通信 #智能车

    目录 个人感慨与感悟 K210视觉循迹 本人是一名大二的二本学生,本篇文章记录一下我这一年多的学习历程(主要还是针对标题的内 容)。 下面是我的一些经历和感悟,不感兴趣的可以直接跳过 -——————————        高考完之后,在我收到录取通知书之后,父母让

    2024年01月19日
    浏览(27)
  • 通过Linux串口实现树莓派与电脑通信

    目录 一  串口说明 二  USB—TTL模块 ● usb-ttl模块接口  三  串口通信常用的API 四  修改串口的配置文件  五  串口通信代码验证 ● 发送一个字符/字符串到串口 ● 树莓读取串口数据(字符) ● 代码拓展(双方) 我在基于全志H6实现Linux串口通信这篇文章中也有详解介绍:

    2024年02月08日
    浏览(40)
  • STM32G0+EMW3080+阿里云实现单片机WiFi智能联网功能(一)EMW3080实现和PC之间的串口通讯

    项目描述:该系列记录了STM32G0+EMW3080实现单片机智能联网功能项目的从零开始一步步的实现过程; 硬件环境:单片机为STM32G030C8T6;物联网模块为EMW3080V2-P;网联网模块的开发板为MXKit开发套件,具体型号为XCHIP MXKit-Base V2.2; 软件环境:STM32需要的软件有STM32CubeMX和STM32CubeIDE;

    2024年02月10日
    浏览(43)
  • STM32简单串口通信

    题目要求: 一. 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解\\\"USB/TTL转232\\\"模块(以CH340芯片模块为例)的工作原理。 二. 安装 stm32CubeMX,配合Keil,使用HAL库(或标准库)方式,设置USART1 波特率为115200,1位停止位,无校验位,完成下列任务: 1)STM32系统给上

    2024年01月18日
    浏览(30)
  • 多串口通信(stm32)

    在做项目的过程中我们会同时使用多个串口,如:Esp8266wifl模块,HC-05蓝牙模块,还有串口下载,这些都需要多个串口通信。 串口作为 MCU 的重要外部接口,同时也是软件开发重要的调试手段,其重要性不言而喻。 现在基本上所有的 MCU 都会带有串口, STM32 自然也不例外。

    2024年04月29日
    浏览(31)
  • 【STM32串口通信】

    每天更新STM32学习笔记 串口通信的数据按 位 顺序传输,其数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口,故串口通信至少需要两根线(GND和一根信号线)来实现单工通信。若要实现全双工通信,则要三根线(GND和两根信号线)。 串口通信的数据包由起始位、数

    2024年02月04日
    浏览(36)
  • STM32—串口通信

    目录 通信基础知识 通信的本质 时钟信号划分 同步通信 异步通信 通信方式划分 串行通信 串行通信 串行传输 优点 缺点  并行通信 并行通信 并行传输 优点 缺点  通信方向划分 单工 半双工 全双工  总线协议(电气协议) USART  串口通信协议  数据帧格式 USART功能框图  流

    2024年02月04日
    浏览(32)
  • STM32 学习————串口通信

    众所周知,串口通信是MCU最基本的通信方式,对于STM32来说也是如此。本文重点讲述STM32单片机的串口通信,主要包括的内容是:通信基础知识、串口通信原理、USART有关寄存器和自定义编写串口通信函数。 通信目的:的将一个设备数据传送到另一个设备,扩展硬件系统。 通

    2024年02月01日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包