CAN 多於8位元組的拆包組包協議

2021-08-13 21:14:48 字數 1109 閱讀 5948

一、、分段協議

分段協議位於can資料區中的乙個單位元組中,格式如下:76

5432

10分段型別

分段計數

分段型別 - 表明是第一段、中間段的還是最後段的傳送。

分段型別位值

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資料最後的傳輸

位元組對齊 8位元組對齊

參考博文 參考1 參考2 參考3 在記憶體管理中經常使用位元組對齊來管理分配的記憶體。1 原理 2 演算法 2.1unsigned intcalc align unsigned int n,unsigned align 2.2 更好的演算法 unsigned intcalc align unsign...

測試8位元組對齊

對十六進製制和按位操作,總是糊塗,所以實際測試下 我的理解,不一定全部正確 32位的系統上,都以32位系統為例 乙個int型是4個位元組,所以0x3是 0x0003,四個位元組,其中3代表乙個位元組 8個二進位制位 00000011,0就是00000000了。乙個指標也是4個位元組,這個程式裡頭列印...

8位位元組對齊演算法

參考文章 8bit對齊演算法 void testalign 1byte 1位元組對齊 unsigned int align8bit unsigned int n 2byte 2位元組對齊 unsigned int align16bit unsigned int n 4byte 4位元組對齊 unsi...