标题: stm32单片机串口如何连续接收帧数据并提取所需数据? [打印本页]

作者: 陈琦琛    时间: 2022-2-9 15:53
标题: stm32单片机串口如何连续接收帧数据并提取所需数据?
如下图所示为设备通信指令解析



当发送启动测距指令“01 10 00 28 00 01 02 00 04 A1 BB”之后,设备开始启动测距,并不断发送测距数据。
接收到的数据如下图示



当发送“01 10 00 28 00 01 02 00 04 A1 BB”后设备会发送一次回复指令和n次测距数据直到收到停止命令 ,窗口助手接收到回复指令“01 10 00 28 00 01 81 C1”,然后就不断地发送测距数据帧 总共有47个字节,每个字符的含义在第一张图的数据解析。我想取出数据帧中的 第15个字节和第17个字节,也就是A基站和B基站的测量数据。

串口接收数据格式为 “一次回复指令+n次测距数据帧”

我使用了中断和IDLE中断,结合判断帧头为 “01 03 2A”的方法没能成功,请教各位实现

作者: munuc_w    时间: 2022-2-10 09:39
通信中,收发数据的使用必须按通信协议解析,否则,不知道如何处理。
作者: xws245925587    时间: 2022-2-10 10:50
这就一个modbus 协议啊,根据协议解析就可以了
作者: AUG    时间: 2022-2-10 10:54
串口做数据处理最好是中断接收,用队列存储,然后去轮询处理数据就可以了。
作者: 陈琦琛    时间: 2022-2-10 14:25
munuc_w 发表于 2022-2-10 09:39
通信中,收发数据的使用必须按通信协议解析,否则,不知道如何处理。

抱歉,第一次接触这个通信协议
作者: lkc8210    时间: 2022-2-10 14:40
不懂STM32
抽空写了一个51的
你可以参考看看
仿真可用
从机用的是Modbus Slave
所以命令格式是Func 03 命令(Senddata2)
而不是你的定位命令
而且没有命令回覆
只有定位数据
并把你要的数据在数码管显示











作者: 陈琦琛    时间: 2022-2-14 12:50
lkc8210 发表于 2022-2-10 14:40
不懂STM32
抽空写了一个51的
你可以参考看看

万分感谢大佬的指点,我尝试一下
作者: TEC    时间: 2022-2-14 13:28
你的问题是上位机(串口调试工具)如何解析下位机(单片机)的数据,还是STM32单片机解析另一块单片机通过串口发送过来的数据?如果是用电脑上的串口调试工具软件解析,那么市面上一些通用的串口工具是不能直接解析的,得针对性的开发上位机。
作者: 陈琦琛    时间: 2022-2-28 08:59
TEC 发表于 2022-2-14 13:28
你的问题是上位机(串口调试工具)如何解析下位机(单片机)的数据,还是STM32单片机解析另一块单片机通过 ...

是stm32单片机解析另一块单片机发过来的数据,这个我没能解决。后面我才用定时器中断查询的方法获取数据了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1