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

  • 7
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
树莓派通过USB串口与STM32进行通信时,你需要进行以下步骤: 1. 首先,确保你的树莓派已经正确连接了USB串口线,并且STM32也通过串口与树莓派相连。 2. 确认树莓派上已安装了相应的串口驱动程序。你可以通过运行以下命令来检查是否存在/dev/ttyUSB0设备: ``` ls /dev/ttyUSB0 ``` 如果该设备不存在,你可能需要安装相应的串口驱动程序。 3. 在树莓派上使用Python编程语言来实现串口通信。你可以使用PySerial库来简化串口通信的操作。确保已经在树莓派上安装了PySerial库。你可以通过运行以下命令来安装: ``` pip install pyserial ``` 4. 编写Python代码来进行串口通信。以下是一个基本的示例代码: ```python import serial # 打开串口连接 ser = serial.Serial('/dev/ttyUSB0', 9600) # 向STM32发送数据 ser.write(b'Hello STM32!') # 从STM32接收数据 data = ser.readline() print(data) # 关闭串口连接 ser.close() ``` 在这个示例中,我们首先打开了/dev/ttyUSB0设备的串口连接,并设置波特率为9600。然后,我们向STM32发送了一条消息,并等待从STM32接收到的数据。最后,我们关闭了串口连接。 5. 运行Python代码,确保树莓派STM32能够正常进行串口通信。 请注意,以上只是一个基本的示例代码,具体的串口通信协议和数据格式还需要根据你的具体应用进行定制。同时,还需要根据你的硬件设置和串口参数进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值