很多朋友第一次拿到毫米波雷达模块时都会遇到同样的问题串口明明有数据但不知道它在说什么。这篇文章只讲一件事1.STM32 如何驱动 R60AFD1 60G 毫米波雷达模块2.如何解析串口协议3. 如何把“原始字节流”变成“有人/无人、运动、跌倒、驻留、体征值”4.如何在 STM32 里做成可用的状态输出文档手册1770107489.pdf本次用的是Micradar的雷达传感器一、模块能做什么R60AFD1 是一款 60G 毫米波雷达模块常见能力包括1.有人/无人检测2.运动检测3.跌倒检测4.驻留检测5.人体体征值输出你可以把它理解成一个“会讲串口协议的智能传感器”。二、硬件连接我这里用的是 STM32F103C8T6雷达模块走 USART2。接线建议雷达 TX - STM32 USART2_RX雷达 RX - STM32 USART2_TXGND 共地VCC 按模块要求接5V串口参数波特率115200数据位8停止位1校验位None三、协议先看懂R60AFD1 发出来的不是中文而是一帧一帧的二进制数据。帧格式53 59 帧头控制字 功能域命令字当前数据类型长度 数据长度数据 真正的状态内容校验 前面所有字节求和后取低 8 位54 43 帧尾四、驱动思路驱动这类雷达核心不是“发命令”而是“收帧 解析”。建议拆成 3 层1. 串口接收层收到 1 个字节就交给解析器2.协议解析层识别帧头、长度、校验、帧尾3.状态映射层把原始数据翻译成有人、运动、跌倒等状态这样代码会非常清晰。五、STM32 端怎么做1. 串口中断接收雷达数据通过 USART2 进来每收到 1 个字节就喂给解析函数。void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart-Instance USART2) { Radar60G_OnRxByte(aRx2Buffer[0]); HAL_UART_Receive_IT(UART2_Handler, (uint8_t *)aRx2Buffer, 1); } }2. 状态机解析解析器内部一般会做这些事1. 找帧头2.读控制字3.读命令字4.读长度5.读数据6.校验7.识别帧尾这一步做完才能拿到一帧完整数据。3. 解码成业务状态雷达最终会输出类似这些状态P有人/无人M运动F跌倒R驻留B体征值我这里融合了温度模块单独驱动会是这样[RADAR] ctrl80(HUMAN) cmd03 len1 sr06(BODYVAL) P1 M0 F0 R0 B12意思就是有人无运动无跌倒无驻留体征值为 12六、调试时重点看什么如果雷达没有正常工作先看这几件事1. 串口有没有收到字节先确认 RX 是否有数据。2. 波特率是否正确模块和 STM32 必须都是 115200手册上写的后面可以自行改。3. 帧头是否正确必须是53 594. 校验是否通过如果校验不通过说明数据有丢失或者串口有干扰。5. 雷达是否真的配置成功有些模块上电后还要配置安装高度人体检测开关跌倒检测开关驻留时间七、总结R60AFD1 雷达模块驱动的关键其实只有一句话把串口字节流变成可用的人体状态。只要你把下面三步做好基本就算驱动成功了1. 串口接收2.协议解析3.状态映射