树莓派3B+与STM32进行串口通讯传输信息

本文详细介绍了如何在树莓派3B+上配置串口,以便与STM32进行通信。首先,通过关闭蓝牙、修改系统配置文件来释放硬件串口。然后,通过minicom工具发送数据,并提供了树莓派发送数据到STM32的Python代码示例。关键在于解决波特率不稳定问题,以及STM32解析串口数据的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调试的基本步骤如下:

1.修改串口设置

2.将STM32和树莓派串口连接

3.通过minicom工具来向STM32发送数据

4.编程获取树莓派数据点灯

树莓派3B+引脚图

 具体如下:

一、修改串口设置

树莓派CPU内部有两个串口:

1.硬件串口(官方称为PL011 UART)

2.迷你串口(官方成为mini-uart)

       在树莓派2B/B+这些老版树莓派上,官方设计时都是将“硬件串口”分配给GPIO的UART(GPIO14&GPIO15),因此可以独立调整串口的速率和模式。

       而树莓派3B的设计上,官方在设计时将硬件串口分配给了新增的蓝牙模块上,而将一个没有时钟源,必须由内核提供时钟参考源的“迷你串口”分配给了GPIO的串口,这样以来由于内核的频率本身是变化的,就会导致“迷你串口”的速率不稳定,这样就出现了无法正常使用的情况。

目前解决方法:

     关闭蓝牙对硬件串口的使用,将硬件串口重新恢复给GPIO的串口使用,也就意味着树莓派3的板载蓝牙和串口,两者是无法兼得的。

1.关闭蓝牙:

sudo systemctl disable hciuart

2.修改第一个配置文件

sudo nano /lib/systemd/system/hciuart.service

将文档中的所有“ttyAMA0”(若没有,就改serial1)改成“ttyS0”,总共需要修改两处,修改完后Ctrl+O保存退出。

3.修改第三个配置文件

sudo nano /boot/config.txt

在文档的结尾加上

dtoverlay=pi3-miniuart-bt

4.修改第四个配置文件

sudo nano /boot/cmdline.txt

把内容改成如下

dwc_otg.lpm_enable=0  console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4  elevator=deadline fsck.repair=yes   rootwait

5.更新系统后重启

    一条一条的逐步执行以下命令

sudo apt-get update
sudo apt-get upgrade 
sudo reboot

6.重启后关闭蓝牙串口,打开硬件串口

Interfacing Options  =>  Serial  =>No  =>Yes

7.输入命令检查结果

ls -l /dev

结果应该是serial0 ->ttyAMA0,serial1 ->ttyS0

二、通过串口连接树莓派与STM32

三、通过minicom工具来获取串口上的数据

1.安装minicom工具

sudo apt-get install minicom

2.通过命令获取串口上的数据

minicom -b 9600 -o -D /dev/ttyAMA0

四、树莓派发送数据指令

进入到树莓派的命令行当中进行如下操作
在命令行中输入如下命令

sudo chmod 777 /dev/ttyAMA0

这里要先获取权限,否则后面代码会报错
6. 接着进入python3中,输入如下代码,这里一定一定要注意,不要安装serial库!!!因为这个是安装好的,再安装会提示serial中无Serial!

>>> import serial
>>> ser = serial.Serial('/dev/ttyAMA0',115200)

检验串口是否打开,若未打开则输入 ser.open() 打开

>>> ser.isOpen()  
True 

接着我们打开串口,设置波特率,再发送串口信息

>>> ser.write(b'Raspberry pi')
12

由于最初不确定STM32与树莓派的发送与接收格式,采用树莓派发送a1,STM32接收到0xa1灯闪烁一直失败,最后解决方法是,树莓派发送字符形式,STM32以十六进制进行解析,从而完成整个收发过程。 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值