你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32 CAN通讯,大于8字节如何发送?

[复制链接]
qazplm3218 提问时间:2019-8-21 14:09 /
最近刚刚接触CAN 通讯,想通过实验来慢慢学习和理解。网上查了下大于8字节如何发送,都说是拆包发送。我的理解是:如果是8字节就发送一帧,大于8字节就发送两帧,是这么理解吗?
发送8字节数据截图:

发送8字节数据

发送8字节数据




发送16字节截图:

发送16字节数据

发送16字节数据
收藏 1 评论12 发布时间:2019-8-21 14:09

举报

12个回答
废鱼 回答时间:2019-8-21 14:20:04
最大8字节,分包发送,有标准的分包格式。网上搜一下就能找到。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

TLLED 回答时间:2019-8-21 14:46:09
一帧只有8个字节,多了就的分包了

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

qazplm3218 回答时间:2019-8-21 14:51:04
有分包的代码吗??能否贴出来参考下??
思行一 回答时间:2019-8-21 16:11:38
如果有FD CAN可以使用FD CAN,没有就分包发送
奏奏奏 回答时间:2019-8-21 16:16:48
qazplm3218 发表于 2019-8-21 14:51
有分包的代码吗??能否贴出来参考下??

大概我把我自定义的说一下:
一共8个字节
第一个字节定义为功能码,
第二个字节定义为一共几条,
第三个字节定义为当前是第几条,
当第一条时第四个字节定义为有效数据总长度,
最后那个字节定义为校验值

我发个我的例子来看一下比较直观:

29 03 01 0A 01 01 02 CRC8
29 03 02 14 03 01 19 CRC8
29 03 03 00 00 35 CRC8

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

STM1024 回答时间:2019-8-21 16:31:04
CAN FD能较好保证数据的完整性,拆包有潜在的丢包风险,要设计校验和等方式做验证。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

奏奏奏 回答时间:2019-8-21 16:37:56
stm1024 发表于 2019-8-21 16:31
CAN FD能较好保证数据的完整性,拆包有潜在的丢包风险,要设计校验和等方式做验证。 ...

大于64个字节一样要拆包
STM1024 回答时间:2019-8-21 17:31:47
奏奏奏 发表于 2019-8-21 16:37
大于64个字节一样要拆包

如果比64字节大,有限考虑的就应该是以太网了
g921002 回答时间:2019-8-21 22:49:00
奏奏奏 发表于 2019-8-21 16:16
大概我把我自定义的说一下:
一共8个字节
第一个字节定义为功能码,

其實你這些功能可以用擴充ID來作手腳。
奏奏奏 回答时间:2019-8-22 03:29:43
g921002 发表于 2019-8-21 22:49
其實你這些功能可以用擴充ID來作手腳。

这种手段是非正式的,而且通用性不强,我分拆为8条CAN指令甚至更多就不行
废鱼 回答时间:2019-8-22 09:28:31
CAN标准协议就有多包数据传输的标准,为什么不能按照标准执行呢?J1939协议,可以参考一下。如果还是要考虑一次性传输一包,那么用modbus协议把。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

七哥 回答时间:2019-8-22 09:44:56
自定协议,分包传输
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版