CAN2.0B 數據幀詳解

CAN的幀類型分爲數據幀、遙控幀、錯誤幀、過載幀以及幀間空隙,本文將對數據幀的幀結構展開說明:

引言:

  • CAN2.0協議分爲A版本和B版本,A版本協議爲11位標識符(標準幀),B版本在兼容11位ID標識符的同時,向上擴展到29位ID標識符。
  • 顯性電平和隱性電平:

    總線上的電平有顯性電平和隱性電平兩種,顯性電平的邏輯值爲「0」,隱性電平爲「1」。「顯性」具有「優先」的特性,只要有一個單元輸出顯性電平,總線上即爲顯性電平,並且,「隱性」具有「包容」的特性,只有所有的單元都輸出隱性電平,總線上才爲隱性電平。(顯性電平比隱性電平更強)



如上圖所示,CAN數據幀分爲以下7個部分。

  • Start of Frame
  • Arbitration Field
  • Control Field
  • Data Field
  • CRC Field
  • ACK Field
  • End of Frame


1. Start of Frame:

它指示一幀的開始,由1bit的顯性位組成,必須在Bus Idle狀態發出,網絡上所有節點在「下降沿」執行一次同步;


2. Arbitration Field


標準幀和擴展幀的仲裁域是不同的:

  • 標準幀包含11bit的Identifier以及RTR-Bit,Identifier分佈於ID28到ID18,禁止高7bit全都爲隱性
  • 擴展幀包含29bit的Identifier,SRR-Bit,IDE-Bit以及RTR-Bit。Identifier分佈於ID28到ID0,同樣禁止高7bit全都爲隱性。

  • RTR-Bit:RemoteTransmission Request BIT,遠程請求位,顯性表示數據幀,隱性表示遠程幀。
  • SRR BIT:Substitute Remote Request BIT,替代遠程請求位,它在擴展幀中,位於標準幀RTR的位置上,始終處於隱性。因此一旦標準幀與擴展幀發生衝突,將以標準幀的優先級高於擴展幀而結束。
  • IDE BIT:Identifier Extension Bit,標識符擴展位,它在標準幀中位於控制場,始終處於顯性。在擴展幀中位於仲裁場,始終處於顯性。


仲裁域表示數據的優先級別,標識符組成的數值越小優先級越高。


3. Control Field


由6個bit組成,指示要傳輸信息的數據字節數。包含預留位IDE/r1、r0(2bit),DLC(4bit)。

  • r0、r1:保留位必須以顯性電平傳送,然而,在接收側可以接收顯性、隱性集任意組合的電平。
  • DLC:數據的字節數必須是0-8個字節,但接收方對DLC=9-15的情況並不視爲錯誤。
標準幀和擴展幀的控制場是不同的,在標準幀中r1的位置爲IDE-Bit,是一個常態顯性位。


4. Data Field

由0到8個字節組成,用於負載傳輸的數據,數據輸出開始於MSB。


5. CRC Field


由15bit CRC Sequence和1bit CRC Delimiter組成,用來檢查幀是否有傳輸錯誤。

CRC Sequence:CRC序列,計算範圍是SOF,仲裁域,控制域和數據域。

CRC Delimiter:CRC界定符,是一個常態隱性位。


6. ACK Field


ACK(應答場)長度爲2 個bit。包括ACK Slot和ACK Delimiter。

  • ACK Slot:應答間隙,發送節點送數據時,會將ACK Slot及ACK Delimiter全部置爲隱性,接收節點計算CRC Sequence正確無誤後,會在ACK Slot期間向發送方發送一個顯性位以示應答。
  • ACK Delimiter:ACK界定符,是一個常態隱性位。

如果總線上有2個以上的接收節點,只要它們當中任意一個正常接收到消息,就會有ACK被返回,如果總線上沒有節點能夠正常接收信息,則NO ACK被返回。另外發送節點不發送ACK。


7. End of Frame

指示幀的結束,由7個隱性位組成。