天天看點

車載測試系列:CAN通信之标準資料幀和擴充資料幀

CAN協定可以接收和發送11位标準資料幀和29位擴充資料幀,CAN标準資料幀和擴充資料幀差別為幀ID長度不同,以便擴充更多CAN節點。

1.1、标準資料幀

标準資料幀基于早期的CAN規格(1.0和2.0A版),使用了11位的識别域。

CAN标準幀幀資訊是11位元組,包括幀描述符和幀資料兩部分。如下表:

車載測試系列:CAN通信之标準資料幀和擴充資料幀

前3位元組為幀描述部分。位元組1為幀資訊,第7位(FF)表示幀格式,在标準幀中FF=0,第6位(RTR)表示幀的類型,RTR=0表示為資料幀,RTR=1表示為遠端幀。DLC表示在資料幀時實際的資料長度。

标準資料幀的 ID 有 11 個位。從 ID10 到 ID0 依次發送,可以出現2^11種封包,幀ID的範圍是:000-7FF,禁止高 7 位都為隐性(禁止設定:ID=1111111XXXX)。

位元組2~3為封包識别碼,其高11位有效。

位元組4~11為資料幀的實際資料,遠端幀時無效。

1.2、擴充資料幀

CAN擴充幀幀資訊是13位元組,包括幀描述符和幀資料兩部分,如下表:

車載測試系列:CAN通信之标準資料幀和擴充資料幀

前5位元組為幀描述部分。位元組1為幀資訊,第7位(FF)表示幀格式,在擴充幀中FF=1,第6位(RTR)表示幀的類型,RTR=0表示為資料幀,RTR=1表示為遠端幀。DLC表示在資料幀時實際的資料長度。

擴充格式的 ID 有 29 個位,基本 ID 從 ID28 到 ID18,擴充 ID 由 ID17 到 ID0 表示,基本 ID 和 标準格式的 ID 相同,可以出現2^29種封包,且在資料鍊路上是有間隙的(對操作者透明),幀ID的範圍是0000 0000-1FFF FFFF,禁止高 7 位都為隐性(禁止設定:基本 ID=1111111XXXX)。

位元組2~5為封包識别碼,其高28位有效。

位元組6~13為資料幀的實際資料,遠端幀時無效。

标準資料幀和擴充資料幀差別:

一、擴充幀的仲裁域有29位,可以出現2^29封包,且在資料鍊路上是有間隙的(對操作者透明),幀ID的範圍是0000 0000-1FFF FFFF。(PS:目的就是構造29位的CAN ID,可以實作更加龐大的ID群)

二、标準幀的仲裁域是連續的11位,可以出現2^11種封包,也就是幀ID的範圍是000-7FF;

三、控制幀中的DLC(資料長度)完全相同,但保留位不同,标準幀IDE、R0,擴充幀R1、R0,必須以顯性電平發送(由資料鍊路層操作),對程式員透明;

四、 總結: 其它的都一模一樣,是以,其實CAN标準幀和擴充幀隻是在幀ID的長度上不一樣,以能擴充更多的CAN節點,更好地支援上層協定而已。

五、它們有一個共同的特性:幀ID數值越小,優先級越高。

作者:

​​千裡和他的軟體測試​​