qazplm3218 发表于 2019-8-21 14:09:05

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

最近刚刚接触CAN 通讯,想通过实验来慢慢学习和理解。网上查了下大于8字节如何发送,都说是拆包发送。我的理解是:如果是8字节就发送一帧,大于8字节就发送两帧,是这么理解吗?
发送8字节数据截图:




发送16字节截图:

发表于 2019-8-21 14:20:04

最大8字节,分包发送,有标准的分包格式。网上搜一下就能找到。

TLLED 发表于 2019-8-21 14:46:09

一帧只有8个字节,多了就的分包了

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

stm1024 发表于 2019-8-21 16:31:04

CAN FD能较好保证数据的完整性,拆包有潜在的丢包风险,要设计校验和等方式做验证。

奏奏奏 发表于 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來作手腳。
页: [1] 2
查看完整版本: stm32 CAN通讯,大于8字节如何发送?