OpenEdv-开源电子网

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

谁有CAN通讯多字节分包发送,接收数据拆包的例程

[复制链接]

4

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2019-5-9
在线时间
121 小时
发表于 2021-2-23 17:24:03 | 显示全部楼层 |阅读模式
30金钱
题目描述可能不太清楚;
就是CAN发送或接受数据的字节数是0~8个字节的范围,
但是如果我要一次发送50个字节和一次接收50个字节,
那么我应该怎么进行分包和拆包比较好,
有没有比较好的例程给我参考一下

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

使用道具 举报

4

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2019-5-9
在线时间
121 小时
 楼主| 发表于 2021-2-23 17:26:35 | 显示全部楼层
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8645
金钱
8645
注册时间
2020-5-11
在线时间
4102 小时
发表于 2021-2-24 10:41:34 | 显示全部楼层
按串口处理数据一样,定义一个帧协议,如:两字节帧头+50字节数据+一字节校验=53字节;
共每帧8字节,按顺序发送7个包呗,结尾补0.
接收方就像串口那样每帧的8字节挨个调用串口中断处理字节的函数就行了,注意校验以及超时处理。
专治疑难杂症
回复

使用道具 举报

4

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2019-5-9
在线时间
121 小时
 楼主| 发表于 2021-2-24 13:22:17 | 显示全部楼层
那接收数据怎么接收比较好,我看了原子的例程是在主函数中轮询的,如果轮询时间久就会出现丢包现象,是要在中断中进行数据接收处理吗?还是有其他好的办法?烦请再请教一下
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2021-2-24 13:31:21 | 显示全部楼层
吖基哈 发表于 2021-2-24 13:22
那接收数据怎么接收比较好,我看了原子的例程是在主函数中轮询的,如果轮询时间久就会出现丢包现象,是要在 ...

用fifo。CAN接收中断,将数据存入fifo,主函数从fifo读出数据解析。
回复

使用道具 举报

13

主题

271

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5387
金钱
5387
注册时间
2017-8-14
在线时间
248 小时
发表于 2021-2-24 14:54:20 | 显示全部楼层
拆开发送,并在Id中 加上  拆分的 编号,收到后 按 Id中的编号 再 合并起来就可以了
详细资料扣扣群204408503自行下载
回复

使用道具 举报

4

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2019-5-9
在线时间
121 小时
 楼主| 发表于 2021-2-25 11:21:51 | 显示全部楼层
Acuity 发表于 2021-2-24 13:31
用fifo。CAN接收中断,将数据存入fifo,主函数从fifo读出数据解析。

有没有类似的例子或者帖子可以让我参考下,之前没用过
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2019-7-13
在线时间
33 小时
发表于 2021-4-21 18:32:57 | 显示全部楼层
15765协议可以满足你的需求,你可以查一下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 03:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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