树莓派4B与STM32串口通信

目录

2上篇文章的补充

2.1 树莓派通信设置

3树莓派与STM32通信

3.1接线准备

3.2代码

3.2.1 STM32代码:

3.2.2树莓派代码:


2上篇文章的补充

2.1 树莓派通信设置

在上篇文章的基础上,进一步的设置

终端输入:sudo minicom -s

找到 Serial port setup

为了避免数据传输时出现混乱,需要将下位机的串口设置与PC上的串口调试助手的设置保持一致,包括波特率、校验位等参数的调整。特别是在低波特率下进行数据传输时,受到的干扰相对较小,因此需要特别注意。同时,硬件流控制(F)与软件流控制(G)也需要调整为NO,以确保数据传输的稳定性和正确性。按照下图的方式修改

修改完后回车保存即可 

3树莓派与STM32通信

3.1接线准备

树莓派引脚图:

 树莓派的TXD接STM32的RXD即PA10,树莓派的RXD接STM32的TXD即PA9

同时别忘了:树莓派和STM32要共地!共地!共地!!!!

3.2代码

3.2.1 STM32代码:

STM32代码只用于发送1、2、3、4.树莓派接收后作出反应

        USART_SendData(USART1, '1');
        
        // ??????
        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
        
        // ??10?
        delay_ms(1000);
		        
		USART_SendData(USART1, '2');
		while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
        delay_ms(1000);
        USART_SendData(USART1, '3');
		while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
		delay_ms(1000);
		USART_SendData(USART1, '4');
		while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
        delay_ms(1000);
3.2.2树莓派代码:

具体功能:一个垃圾分类识别的程序,主要功能是读取一个视频文件并播放,同时通过串口读取传感器发送的数据来实时统计不同类型垃圾的数量,并在视频播放窗口的右上角显示垃圾分类数量信息和摄像头实时画面。

部分代码:

mport cv2
import numpy as np
import serial

指定要播放的视频文件路径
video_path = '/home/pi/Videos/wx.mp4'

创建视频捕捉对象
cap_video = cv2.VideoCapture(video_path)

创建摄像头捕捉对象
cap_camera = cv2.VideoCapture(0)

检查是否成功打开视频文件和摄像头
if not cap_video.isOpened() or not cap_camera.isOpened():
print("无法打开视频文件和摄像头!")
exit()
# 将垃圾分类数量信息的图像复制到当前帧的右上角,作为背景
display_image = frame_video.copy()
display_image[display_ypos:display_ypos+garbage_info_frame.shape[0], display_xpos:display_xpos+garbage_info_frame.shape[1]] = 255
cv2.rectangle(display_image, (display_xpos, display_ypos), (display_xpos+garbage_info_frame.shape[1], display_ypos+garbage_info_frame.shape[0]), (255, 255, 255), -1)
if garbage_type_text:

视频效果:

树莓派与STM32串口实验

上篇文章:树莓派4B串口通信配置方式-CSDN博客

需要完整代码的:请关注、点赞、收藏,评论区留下邮箱

### 回答1: 树莓派STM32通信可以通过多种方式实现,以下是一种常见的方式: 1. 首先,确保树莓派STM32之间的物理连接。可以使用串口、SPI、I2C等通信接口。 2. 在树莓派上安装相关的开发环境或库文件,例如Python的RPi.GPIO库或C语言的WiringPi库。这些库文件可以方便地操作树莓派的GPIO引脚。 3. 在树莓派上编写代码,通过GPIO引脚与STM32进行通信。可以使用GPIO库提供的函数来设置引脚的输入输出状态,读取或写入数据。 4. 在STM32上编写代码,通过相应的通信接口与树莓派进行通信。例如,如果使用串口通信,可以使用STM32的串口库函数来配置串口参数、发送和接收数据。 5. 在树莓派上使用相应的通信协议和命令,发送需要的数据给STM32。例如,可以使用GPIO库的函数来设置GPIO引脚的状态,并通过串口将命令发送给STM32。 6. 在STM32上接收树莓派发送的数据,并根据需要进行处理。 需要注意的是,树莓派STM32本身的特性和接口选择会对通信的实现方式产生影响。因此,在编写通信代码之前,需要了解树莓派STM32的硬件规格和接口定义,确保代码的正确性和稳定性。此外,通信的协议选择也需要根据具体应用的需求来确定,例如串口通信时可以选择使用ASCII码或二进制码进行数据传输。 ### 回答2: 树莓派STM32通信的代码主要有两种方式,一种是使用串口通信,另一种是使用I2C总线通信。 如果使用串口通信,首先需要在树莓派上配置一个串口,并连接到STM32的串口。在树莓派上可以使用Python编程语言,通过编写串口通信相关的代码来实现与STM32的通信。以下是一个简单的串口通信代码示例: '''python import serial ser = serial.Serial('/dev/ttyS0', 115200) # 配置串口,波特率为115200 while True: data = input("请输入要发送的数据:") # 从终端获取要发送的数据 ser.write(data.encode()) # 发送数据 received_data = ser.readline().decode().strip() # 接收数据 print("接收到的数据:", received_data) ser.close() # 关闭串口 ''' 如果使用I2C总线通信,首先需要在树莓派上启用I2C功能,并通过对应的引脚连接到STM32的I2C口。同样,可以使用Python编程语言,在树莓派上编写相应的I2C通信代码实现与STM32的通信。以下是一个简单的I2C通信代码示例: '''python import smbus bus = smbus.SMBus(1) # 创建一个I2C对象,参数为I2C总线号,树莓派3B/3B+为1,树莓派4B为0 address = 0x12 # STM32的I2C地址 while True: data = input("请输入要发送的数据:") # 从终端获取要发送的数据 bus.write_byte(address, ord(data)) # 发送数据 received_data = bus.read_byte(address) # 接收数据 print("接收到的数据:", chr(received_data)) bus.close() # 关闭I2C ''' 需要注意的是,以上代码仅是简单的示例,实际使用时还需要根据具体的通信需求进行修改和扩展。同时,树莓派STM32之间的通信需要保证硬件连接的正确性和信号电平的兼容性。 ### 回答3: 树莓派是一款小型的单板计算机,而STM32是一款32位微控制器。要实现树莓派STM32的通信,可以通过串口进行数据传输。 首先,在树莓派上连接一个USB转串口模块,并将其与STM32的串口进行连接。然后,在树莓派上安装相应的串口通信库,例如pySerial。 接下来,编写树莓派的Python代码,示例如下: ```python import serial # 打开串口,设置波特率为9600 ser = serial.Serial('/dev/ttyUSB0', 9600) # 发送数据到STM32 ser.write('Hello STM32!') # 接收STM32返回的数据 response = ser.readline() print(response) # 关闭串口 ser.close() ``` 上面的代码中,通过指定串口的路径(例如`/dev/ttyUSB0`)和波特率(例如9600)来打开串口,并向STM32发送数据。然后通过`readline()`函数接收STM32返回的数据,并打印出来。最后,关闭串口。 需要注意的是,树莓派STM32之间的通信协议需要一致。在STM32的代码中,需要确保串口的波特率和树莓派设置的波特率一致,并正确处理接收和发送的数据。 以上为一种基本的树莓派STM32通信的代码实现方式,具体的应用场景和需求可能会有所不同,编写代码的细节也会有所差异。这只是一个简单的示例,供参考。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值