找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1985|回复: 8
打印 上一主题 下一主题
收起左侧

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”的方法没能成功,请教各位实现
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:752974 发表于 2022-2-10 09:39 | 只看该作者
通信中,收发数据的使用必须按通信协议解析,否则,不知道如何处理。
回复

使用道具 举报

板凳
ID:311903 发表于 2022-2-10 10:50 | 只看该作者
这就一个modbus 协议啊,根据协议解析就可以了
回复

使用道具 举报

地板
ID:313048 发表于 2022-2-10 10:54 | 只看该作者
串口做数据处理最好是中断接收,用队列存储,然后去轮询处理数据就可以了。
回复

使用道具 举报

5#
ID:978025 发表于 2022-2-10 14:25 | 只看该作者
munuc_w 发表于 2022-2-10 09:39
通信中,收发数据的使用必须按通信协议解析,否则,不知道如何处理。

抱歉,第一次接触这个通信协议
回复

使用道具 举报

6#
ID:161164 发表于 2022-2-10 14:40 | 只看该作者
不懂STM32
抽空写了一个51的
你可以参考看看
仿真可用
从机用的是Modbus Slave
所以命令格式是Func 03 命令(Senddata2)
而不是你的定位命令
而且没有命令回覆
只有定位数据
并把你要的数据在数码管显示










回复

使用道具 举报

7#
ID:978025 发表于 2022-2-14 12:50 | 只看该作者
lkc8210 发表于 2022-2-10 14:40
不懂STM32
抽空写了一个51的
你可以参考看看

万分感谢大佬的指点,我尝试一下
回复

使用道具 举报

8#
ID:625730 发表于 2022-2-14 13:28 | 只看该作者
你的问题是上位机(串口调试工具)如何解析下位机(单片机)的数据,还是STM32单片机解析另一块单片机通过串口发送过来的数据?如果是用电脑上的串口调试工具软件解析,那么市面上一些通用的串口工具是不能直接解析的,得针对性的开发上位机。
回复

使用道具 举报

9#
ID:978025 发表于 2022-2-28 08:59 | 只看该作者
TEC 发表于 2022-2-14 13:28
你的问题是上位机(串口调试工具)如何解析下位机(单片机)的数据,还是STM32单片机解析另一块单片机通过 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表