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

调试的基本步骤如下:

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以十六进制进行解析,从而完成整个收发过程。 

版权声明:本文为CSDN博主「无敌飞行器」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_52142819/article/details/120790995

调试的基本步骤如下:

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以十六进制进行解析,从而完成整个收发过程。 

版权声明:本文为CSDN博主「无敌飞行器」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_52142819/article/details/120790995

生成海报
点赞 0

无敌飞行器

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

OPENMV-STM32串口通信

OPENMV-STM32串口通信 前言 最近要准备工巡赛,突然要发现需要进行视觉传动,所以我最近几天又温顾了一下Openmv,以前学习Openmv都是通过电脑对其进行控制,但是这样学习OpenMV是远

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

调试的基本步骤如下: 1.修改串口设置 2.将STM32和树莓派串口连接 3.通过minicom工具来向STM32发送数据 4.编程获取树莓派数据点灯 树莓派3B引脚图 具体如下: 一、修改串口设置 树莓派CPU

定时器触发STM32 ADC的采样转换示例

开发板:STM32F446 Nucleo开发板IDE:  keil MDK初始化配置工具:stm32cubeMx例程内容:通过定时器触发ADC规则通道及注入通道的模数转换工作。下面基于STM32CubeMx进行些必要