CAN總線之報文解析

上一節中初步接觸CAN總線,梳理了一些關於CAN總線的基礎內容。本節將深入瞭解CAN總線的結構,包括報文的組成,內容和處理形式。
另外這一片文章,對CAN報文的結構解析的非常明確,可以先通過這篇文章瞭解一下,後面在對其進行總結。

看到一個關於CAN總線工作原理非常形象的一個比喻:
和其他總線一樣,CAN總線的通信也是通過一種類似於“會議”的機制實現的,只不過會議的過程並不是由乙方(節點)主導,而是每一個會議參加人員都可以自由的提出會議議題(多主通信模式),二者對應關係如下:
在這裏插入圖片描述

CAN報文協議

CAN協議是通過以下5種類型的幀進行的:

  1. 數據幀:用於發送單元想接收單元傳送數據的幀
  2. 遙控幀:用於接收到單元向具有相同ID的發送的單元請求數據的幀。
  3. 錯誤幀:用於當檢測出錯誤時想其他單元通知錯誤的幀
  4. 過載幀:用於接收單元通知其他尚未做好準備的幀
  5. 間隔幀:用於將數據幀和遙控幀與前面的幀分離開來的幀。

CAN協議支持兩種報文格式,其唯一的不同是標識符長度不同,標準格式爲11位,擴展格式爲29位。數據幀和遙控幀包含這兩種格式。
數據幀一般有7個段構成:
幀起始——表示數據幀開始的段
仲裁段——表示該幀優先級的段,由遠程傳輸請求位(RTR)組成,RTR標明是數據幀還是請求幀,請求幀沒有數據字節;
控制段——表示數據的字節數及保留位的段,包含標識符擴展位(IDE),指出是標準格式還是擴展格式。還包括一個保留位(用於將來擴展)。最後四個位用來指明數據場中的數據的長度(DLC)
數據段——數據的內容,一個幀可以發送0—8個字節的數據
CRC段——檢查幀的傳輸錯誤的段、
ACK段——確認可以正常接收的段,包括應答位和應答分隔符。均爲隱形電平(邏輯1)
幀結束——表示數據幀結束的段。
如下圖,是數據幀的構成:
圖片來源網絡

標準格式的數據段:識別符(ID)的長度 爲11位,這些爲按ID28到ID18的順序發送,最低位是ID18, 7個最高位(ID28-ID22)不能全是隱形;
擴展格式的數據段:標識符長度爲29位,是在標準標識符的基礎上增加18位擴展符,可以分爲11位的基本ID和18位的擴展ID,基本ID按ID28—ID18的順序發送,基本ID定義擴展幀的基本優先權。
擴展ID包含18位,按照ID17—ID0順序發送。
RTR位:在標準幀裏識別符後面是RTR位,其在數據幀裏必須全是顯性,在請求幀裏必須全是隱性
SRR位(擴展格式):替代遠程請求位(substitute remote request bit),是一個隱性位,帶替擴展格式中標準幀的RTR位的位置,因此在標準幀與擴展幀衝突時,通過標準幀優先於擴展幀這一途徑解決。

CAN總線的工作原理(流程圖):
在這裏插入圖片描述

參考:
https://wenku.baidu.com/view/ef57d00502020740be1e9b7f.html?sxts=1546419950698
https://wenku.baidu.com/view/7c6e8c3c50e2524de4187e53.html?rec_flag=default&sxts=1546419708212
https://www.cnblogs.com/spoorer/p/6649303.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章