关于CAN通讯的数据分包处理思路

引言:
一般我们在使用CAN通讯的时候,一帧数据包最多是8个字节,但是我们本身的协议或者数据可能会超出一帧的范围,这个时候就需要用到数据帧的拆包和组合。本文主要简单介绍思路,供后来者参考,希望前人指证。

具体思路:

1,确定数据分包的大小和数量。根据需要传输的数据量和传输时间(波特率),确定每个数据分包的大小和数量。

2,划分数据分包。将需要传输的数据按照每个数据分包的大小进行划分,并将每个数据分包进行编号。每包数据包含分包总数和数据分包编号, 如果防止出错则每包数据还需要增加校验。

3,封装CAN数据帧。 CAN数据帧包含CAN ID、数据长度、数据内容等信息。 将需要发送的数据连接至can发送端口。

简单例子:

假设要传输一个长度为20字节的数据,每个数据分包的大小为8字节,共分为4个数据分包,编号分别为1、2、3、4。每个数据包格式如下:
包总数 当前数据包编号1 数据1 数据2 数据3 数据4 数据5 本包校验和
包总数 当前数据包编号2 数据6 数据7 数据8 数据9 数据10 本包校验和
包总数 当前数据包编号3 数据11 数据12 数据13 数据14 数据15 本包校验和
包总数 当前数据包编号4 数据16 数据17 数据18 数据19 数据20 本包校验和

这样一个数据帧就通过四次发送到接收方,至于发送端和接收端的具体实现,需要读者自己搞一搞咯
分包数=数据总数/每包数据数
另外关于帧ID,也阔以和数据包总数挂钩,比如我收到这个ID,就知道有多少包数据过来,那样一包数据里面就可以多发1个数据。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓑衣客VS索尼克

感谢支持原创,感谢原创支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值