OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2630|回复: 9

上位机与单片机(下行)-通讯协议-之帧报文格式 以及 校验

[复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-29
在线时间
16 小时
发表于 2019-11-22 14:40:36 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 mian0mian903 于 2019-11-22 14:42 编辑


     现在 要  上位机  与  单片机 进行通讯, 定义  通讯时 帧 共计20字节,



微信图片_20191122143246.png


现在 有提出 这三个 帧报文  格式,请问 各位 大佬 那种 帧 格式 较好,以及 这当中 要做 多少次 校验(8字节的数据到底要不要分为2-3组进行传输以及校验)??????


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-11-22 16:44:39 | 显示全部楼层
成功没有捷径
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-11-22 19:04:01 | 显示全部楼层
1、帧头需要搞那么长?
2、目标地址一个字节够了;
3、感觉添个帧长度最好;
4、校验是否太多,太复杂了,一个整体CRC或者CHECKSUM校验足够了
一分耕耘一分收获。
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-11-22 20:31:12 | 显示全部楼层
帧头太长 校验太多
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-29
在线时间
16 小时
 楼主| 发表于 2019-11-25 10:28:57 | 显示全部楼层
yklstudent 发表于 2019-11-22 19:04
1、帧头需要搞那么长?
2、目标地址一个字节够了;
3、感觉添个帧长度最好;

帧头长,我考虑的是 防止被 错误输入 导致后续通讯的数据 整体错位  。(也就是 由于异常先接收到半帧数据,刚好卡在了数据位置,1 - 3S 后面接收 又正常了,因为 错位 后续数据接受 整体失灵)
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-29
在线时间
16 小时
 楼主| 发表于 2019-11-25 10:33:07 | 显示全部楼层
mian0mian903 发表于 2019-11-25 10:28
帧头长,我考虑的是 防止被 错误输入 导致后续通讯的数据 整体错位  。(也就是 由于异常先接收到半帧数 ...

多次校验  我也是 出于这样的考虑,增加 通讯 的故障 防护能力
回复

使用道具 举报

0

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
887
金钱
887
注册时间
2018-4-20
在线时间
491 小时
发表于 2019-11-25 10:39:09 | 显示全部楼层
mian0mian903 发表于 2019-11-25 10:28
帧头长,我考虑的是 防止被 错误输入 导致后续通讯的数据 整体错位  。(也就是 由于异常先接收到半帧数 ...

有帧头帧尾还怕什么整体错位,最多丢一组数据,另外建议协议中加一个数据长度,不要帧尾
回复

使用道具 举报

6

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2012-12-30
在线时间
48 小时
发表于 2019-11-25 11:17:43 | 显示全部楼层
帧头太长了
如果数据中有和帧头相同的怎么转义没有定义
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-29
在线时间
16 小时
 楼主| 发表于 2019-11-25 11:46:32 | 显示全部楼层
BG4RFF 发表于 2019-11-25 11:17
帧头太长了
如果数据中有和帧头相同的怎么转义没有定义

转义 这个 你提示的对,这么看来格式3 比较好,不会出要不要 转义 的问题。。
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-11-28 23:04:58 | 显示全部楼层
1、格式:帧头+数据+校验+帧尾
帧头:0x0A,帧尾0x0B
转义:0x0C,数据遇到帧头、帧尾、转义字就转义;
0x0A->0x0C  0x01
0x0B->0x0C  0x02
0x0C->0x0C  0x03
接收到数据后,先反转义。
2、举例
传输数据:0x01 0x0A 0x03 0x0C->打包发送:0x0A 0x01 0x0C 0x01 0x03 0x0C 0x 0x03 校验 0x0B
接收后反转义解析。
这样保证帧头帧尾唯一,多帧传输也易找到一帧。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-27 14:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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