詳解CAN總線:CAN總線報文格式—錯誤幀
CAN總線上傳輸?shù)男畔⒎Q為報文,當總線空閑時任何連接的單元都可以開始發(fā)送新的報文。
CAN通信是通過以下5種類型的幀進行的:
數(shù)據(jù)幀
遙控幀
錯誤幀
過載幀
幀間隔
另外,數(shù)據(jù)幀和遙控幀有標準格式和擴展格式兩種格式。標準格式有 11 個位的標識符(Identifier: 以下簡稱 ID), 擴展格式有 29 個位的 ID。
各種幀的用途如下表所示:
近期打算寫5篇文章,分別詳細介紹這5種類型的CAN總線報文格式,本篇博文將詳細講解CAN錯誤幀格式,創(chuàng)作不易,請各位朋友多多點贊、收藏、關注支持~
1
錯誤幀格式
錯誤幀由錯誤標志(Error Flag)和錯誤界定符(Error Delimiter)組成。
接收節(jié)點發(fā)現(xiàn)總線上的報文有錯誤時,將自動發(fā)出活動錯誤標志,它是6個連續(xù)的顯性位。其他節(jié)點檢測到活動錯誤標志后發(fā)送錯誤認可標志,它由6個連續(xù)的隱性位組成。由于各個接收節(jié)點發(fā)現(xiàn)錯誤的時間可能不同,所以總線上實際的錯誤標志可能由6~12個顯性位組成。
錯誤界定符由 8 個位的隱性位構成。當錯誤標志發(fā)生后,每一個CAN 節(jié)點監(jiān)視總線,直至檢測到一個顯性電平的跳變。此時表示所有的節(jié)點已經(jīng)完成了錯誤標志的發(fā)送,并開始發(fā)送8個隱性電平的界定符。
如下所示:

2
主動錯誤標志和被動錯誤標志
錯誤標志包括主動錯誤標志和被動錯誤標志兩種。
主動錯誤標志:處于主動錯誤狀態(tài)的單元檢測出錯誤時輸出的錯誤標志,6 個位的顯性位;
被動錯誤標志:處于被動錯誤狀態(tài)的單元檢測出錯誤時輸出的錯誤標志,6 個位的隱性位。

3
錯誤幀種類
錯誤幀共有 5 種,多種錯誤可能同時發(fā)生,種類如下所示:
位錯誤
填充錯誤
CRC 錯誤
格式錯誤
ACK 錯誤
錯誤的種類、錯誤的內(nèi)容、錯誤檢測幀和檢測單元如下表所示:

重點聊一聊位錯誤和格式錯誤。
位錯誤特性如下所示:
位錯誤由向總線上輸出數(shù)據(jù)幀、遙控幀、錯誤幀、過載幀的單元和輸出 ACK 的單元、輸出錯誤的單元來檢測;
在仲裁段輸出隱性電平,但檢測出顯性電平時,將被視為仲裁失利,而不是位錯誤;
在仲裁段作為填充位輸出隱性電平時,但檢測出顯性電平時,將不視為位錯誤,而是填充錯誤;
發(fā)送單元在 ACK 段輸出隱性電平,但檢測到顯性電平時,將被判斷為其它單元的 ACK 應答,而非位錯誤;
輸出被動錯誤標志(6 個位隱性位)但檢測出顯性電平時,將遵從錯誤標志的結束條件,等待檢測出連續(xù)相同 6 個位的值(顯性或隱性),并不視為位錯誤。
格式錯誤特性如下所示:
即使接收單元檢測出 EOF(7 個位的隱性位)的最后一位(第 8 個位)為顯性電平,也不視為格式錯誤;
即使接收單元檢測出數(shù)據(jù)長度碼(DLC)中 9~15 的值時,也不視為格式錯誤。
發(fā)送單元發(fā)送完錯誤幀后,將再次發(fā)送數(shù)據(jù)幀或遙控幀,錯誤標志輸出時序如下表所示:

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。