在现代嵌入式系统中,树莓派和STM32的结合使用已成为一种流行趋势,它们各自承担不同的角色,实现优势互补。树莓派以其强大的计算能力处理复杂算法,而STM32则以其高效的控制能力执行实际的硬件操作。本文将详细介绍如何实现基于树莓派4B和STM32的UART串口通信,并展示如何通过串口发送数据以及在STM32上接收和处理这些数据。
一、系统概述
本项目的核心是实现树莓派4B与STM32之间的UART通信。树莓派4B将作为上位机,负责运行复杂的图像处理算法,如基于YOLOv5-Lite的目标检测,并将检测结果发送至STM32。STM32作为下位机,负责解析接收到的数据,并根据这些数据执行相应的控制任务。
二、硬件连接
首先,需要将树莓派4B和STM32通过UART接口连接。树莓派4B的GPIO14(TXD)连接到STM32的PA9(TX),GPIO15(RXD)连接到STM32的PA10(RX)。确保正确连接后,可以开始软件配置。
三、树莓派4B配置
3.1 安装Serial
在树莓派4B上,首先需要安装Python的pyserial
库,用于串口通信。
pip install pyserial
3.2 配置UART
树莓派4B的UART配置可以通过修改/boot/config.txt
文件来实现。
sudo nano /boot/config.txt
在文件末尾添加以下行以启用UART。
enable-uart=1
3.3 编写Python发送代码
编写Python脚本,用于周期性地发送数据到STM32。
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', 115200, timeout=1)
while True:
# 假设发送的数据是当前时间的秒数
current_time = str(int(time.time()))
ser.write(current_time.encode())
time.sleep(1)
四、STM32配置
4.1 CubeMX配置
使用STM32CubeMX配置串口参数,设置波特率与树莓派4B相匹配(115200),并启用中断。
4.2 编写STM32代码
在STM32上,编写代码以初始化串口并处理接收到的数据。
#include "stm32f1xx_hal.h"
#include <stdio.h>
UART_HandleTypeDef huart1;
// 用于接收数据的缓冲区
uint8_t rxBuffer[100];
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
// 循环处理接收到的数据
while (1) {
// 检查是否有数据接收完毕
if (HAL_UART_Receive_IT(&huart1, rxBuffer, sizeof(rxBuffer)) == HAL_OK) {
// 处理接收到的数据
for (int i = 0; i < sizeof(rxBuffer); i++) {
printf("%c", rxBuffer[i]);
}
}
}
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
if (huart->Instance == USART1) {
// 数据接收完毕,处理数据
printf("Data received: ");
for (int i = 0; i < huart->RxXferSize; i++) {
printf("%c", rxBuffer[i]);
}
printf("\n");
// 重新启动接收中断
HAL_UART_Receive_IT(&huart1, rxBuffer, sizeof(rxBuffer));
}
}
// ...省略其他函数实现...
五、高级应用
在实际应用中,可以将树莓派4B的目标检测结果发送给STM32,例如,发送检测到的物体中心坐标,STM32根据这些坐标执行相应的控制逻辑。
六、总结
本文详细介绍了基于树莓派4B和STM32的UART串口通信实验。通过树莓派4B发送数据,STM32接收并处理这些数据,展示了两者如何协同工作。这种架构在智能硬件领域非常常见,适用于多种应用场景,如智能小车、无人机等。
✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进
❤欢迎关注我的知乎:对error视而不见
代码获取、问题探讨及文章转载可私信。
☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。
🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇