CAN 多于8字节的拆包组包协议

一、、分段协议

分段协议位于CAN数据区中的一个单字节中,格式如下:

7

6

5

4

3

2

1

0

分段类型

分段计数

 

分段类型 - 表明是第一段、中间段的还是最后段的发送。

分段类型位值

1)第一个分段。分段计数区必须包含值0或3F。

如果分段计数器包含值0,那么就是分段系列中的第一段。如果分段计数器包含值3F,那么这就是传输系列中的最后一个发送。当在I/O连接中建立一个大的连接长度,但当前只有少量的数据被发送时,接受器必须被告知这既是第一段也是最后一段。

2)中间分段。

表明这是一个中间分段。此分段既不是系列中的第一个也不是最后分段。更多的分段将会到来。

3)最后分段

标志最后一个分段。在已发送一个或多个分段后,就可以使用这个值。

4)分段应答

    分段信息的接收器的值,用于确认分段的接受。




二、

一个15个字节I/O信息的分段传输

生产模块的MAC ID=0A,假定已经通过组1建立I/O连接。

    假设要传输0102030405060708090A0B0C0E0F这15个字节。

第一个传输

标识符=01000001010

     0:组1信息

  1000:组1信息ID=8

001010:源MAC ID=0A

数据=0001020304050607

0:段类型=第一个分段

0:段计数=0

01020304050607:I/O数据的第一部分

第二个传输

标识符=01000001010

     0:组1信息

  1000:组1信息ID=8

001010:源MAC ID=0A

数据=4108090A0B0C0D0E

4:段类型=中间分段

0:段计数=1

08090A0B0C0D0E:I/O数据的第一部分


最后的传输

标识符=01000001010

     0:组1信息

  1000:组1信息ID=8

001010:源MAC ID=0A

数据=820F

8:段类型=中间分段

2:段计数=2

820F:I/O数据最后的传输


你可能感兴趣的:(can总线)