调试的基本步骤如下:
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
暂无评论