1. 程式人生 > 其它 >CAN資料鏈路層的幀格式介紹——錯誤幀

CAN資料鏈路層的幀格式介紹——錯誤幀

前言

在CAN協議中,CAN匯流排除了眾多優秀的特點外,還具有錯誤監測功能、錯誤通知功能、和錯誤恢復功能、故障封閉功能。下面系統瞭解以下CAN總線上的錯誤幀。

錯誤檢測

所有ECU均有可以檢測錯誤的功能。

錯誤通知

檢測出錯誤的ECU會立即通知其他ECU

錯誤恢復

正常傳送訊息的ECU,一旦檢測出錯誤,會強制結束當前

錯誤封閉

CAN可以判斷出錯誤的型別是總線上暫時的資料錯誤,還是持續的資料錯誤。當總線上發生持續資料錯誤時,可將引起此故障的單元從總線上隔離出去。

錯誤狀態的型別

1. 主動錯誤狀態(Active Error)

主動錯誤狀態是可以正常參加匯流排通訊的狀態,處於主動錯誤狀態的ECU檢測出錯誤時,輸出主動錯誤標誌。

2. 被動錯誤狀態(Passive Error)

被動錯誤狀態是易引起錯誤的狀態。處於被動錯誤的ECU,雖然能參加匯流排通訊,但為了不妨礙其他ECU,接收時不能積極的傳送錯誤通知。處於被動錯誤狀態的ECU,即使檢測出錯誤,而其他處於主動錯誤狀態的ECU,沒有發現錯誤,真個匯流排也被認為沒有錯誤。
處於被動錯誤狀態的ECU檢測出錯誤時,食醋胡被動錯誤標誌。
另外,處於被動錯誤的ECU在傳送結束後不能馬上再次開始傳送,在開始下次傳送前,在間隔幀期間內必須插入“延時產送(8個隱性位)”

3. 匯流排關閉狀態(Bus Off)

匯流排關閉狀態是不能參加總線上通訊的狀態,資訊的接收和傳送均被禁止,這些狀態依靠傳送錯誤計數器(TEC)和接收錯誤計數器(REC)來管理,根據計數器值決定EUC進入何種狀態,錯誤狀態和計數器關係如下圖所示。

錯誤狀態轉換

在CAN協議中,有兩個計數器,TEC(傳送錯誤計數器)、REC(接收錯誤計數器)。這兩個計數器和錯誤幀數量按照以下的規則換算。

回到主動錯誤狀態:
當連續128次檢測到連續11位隱性位,則又回到主動錯誤狀態。至於為啥是連續11位隱性電平,那是因為連續11位隱性電平,認為是匯流排空閒狀態(①幀結束是由1位隱性的ACK界定符+7位隱性EOF+3位隱性的幀間隔。②錯誤幀的話是8位隱性錯誤界定符+3位幀間隔)。

錯誤幀

用於在接收和傳送訊息的時,檢測出錯誤,通知錯誤的幀,錯誤幀主要錯誤標誌和錯誤界定符構成。

錯誤標誌

錯誤標誌,主要是標記錯誤型別,是主動錯誤還是被動錯誤。處於主動錯誤狀態,節點就具備發出主動錯誤幀的能力,處於被動錯誤狀態,節點具備發出被動錯誤幀的能力。
主動錯誤是由6個顯性位構成
被動錯誤是由6個隱性位構成。
當多種錯誤同時發生時候,會出現錯誤標誌重疊,因此會有0-6位的重疊位,最低可填0,也就是沒有重疊,最高可填6,重疊了6位。

錯誤界定符

錯誤界定符由8位隱性位構成。

錯誤的種類

錯誤的種類一共有5種,多種錯誤可能同時發生。

1. 位錯誤 Bit Error

線與機制瞭解:在總線上顯性位能夠覆蓋掉隱性位。

比較輸出電平和匯流排電平(不含填充位),當兩個電平不一致時,則認為是位錯誤。位錯誤的檢測段分為資料幀的(SOF-EOF,)、遙控幀(SOF-EOF)、錯誤幀、過載幀。接收節點和傳送節點均能檢測出此錯誤。

當然以下幾種情況,不認為是位錯誤:

①在仲裁段輸出隱性電平,但檢測出匯流排是顯性電平時,不認為是位錯誤,而是仲裁失敗
②在仲裁段作為填充位輸出隱性電平,但總線上檢測出顯性電平時,不認為是位錯誤,而是填充錯誤。
③在ACK Slot位發出隱性電平,但匯流排檢測出顯性電平,不認為是位錯誤,而是有節點響應傳送節點,成為ACK應答。
④輸出被動錯誤標誌(6個隱性電平),但總線上檢測出顯性位,不認為是位錯誤,而是因為線與機制,隱性被顯性覆蓋了(這也就是被動錯誤不會影響匯流排資料的表現)。

2. 填充錯誤 Stuff Error

填充機制瞭解:在CAN協議裡,傳送資料幀和遙控幀(SOF-CRC序列),當相同極性的電平連續5位時,則新增1位相反的位。接收節點也會按照此規則剔除填充位,解析到正確的資料。

在需要填充的段內,連續檢測到6個位相同的電平,則認為是填充錯誤。填充錯誤的檢測段分為資料幀的(SOF-CRC序列)、遙控幀(SOF-CRC序列),接收節點和傳送節點均能檢測此錯誤。

3. ACK錯誤 ACK Error

ACK應答瞭解:傳送節點在ACK Slot傳送隱性電平,接收節點接收到傳送節點時,檢查收到的報文沒有填充錯誤、格式錯誤、CRC錯誤,均無錯誤時,便會將ACK Slot為顯性發向匯流排,即傳送節點便會在ACK Slot回讀到顯性。

傳送單元在ACK槽(ACK Slot)時間段內沒有回讀到顯性電平,傳送節點便會檢測出ACK錯誤。

4. 格式錯誤 Form Error

常見的幀結構瞭解:資料幀如下圖,一般幀結構裡定義為固定為隱性電平的位。


在幀結構中定義的固定格式,當接收節點檢測到相反的格式,則接收節點認為是格式錯誤。格式錯誤的檢測段分為資料幀的(CRC界定符、ACK界定符、EOF)、遙控幀(CRC界定符、ACK界定符、EOF),錯誤界定符、過載界定符。

5. CRC錯誤 CRC Error

接收單元在接收到的資料計算出CRC結果,與接收到的CRC序列作為比較,若檢測不一致,則接收節點認為是CRC錯誤。