
A simple intro to CAN errors
CAN bus error
In this series of articles, we will introduce you to the details of the CAN bus errorThe knowledge includes the basic concepts of CAN Bus Errors, types of CAN Bus Errors, CAN Error Frames, and CAN Node Error States, as well as generating and documenting CAN errors through practical application testing.
● CAN 總線錯誤類型
CAN總線協議規定了5種CAN錯誤類型:
- 位錯誤[發送器]
- 位填充錯誤[接收器]
- 格式錯誤[接收者]
- ACK應答錯誤(應答)[發送器]
- CRC校驗錯誤(循環冗餘校驗)[接收器]

在前文中,我們已經對位錯誤和位填充錯誤有所了解,這兩者都是在位級別進行評估的。其餘三種 CAN 錯誤類型在消息級別進行評估。下面我們詳細介紹每種錯誤類型。
Back to previous article. CAN Bus Errors in Five Minutes - CAN Bus Errors and Error Frames (1)
位錯誤
CAN 總線上的每個 CAN 節點都會在任何給定時間監控信號電平——這意味著發送 CAN 節點也會“讀回”它發送的每一位。如果發送器讀取的數據位級別與其發送的內容不同,則發送器會將其檢測為位錯誤。但是,如果在仲裁過程中(即發送 CAN ID 時)發生位不匹配,則不會將其解釋為位錯誤。類似地,應答時隙(ACK 字段)中的不匹配不會導致位錯誤,因為 ACK 字段特別要求來自發送器的隱性位被來自接收器的顯性位覆蓋。

位填充錯誤
如前文所述,位填充是 CAN 標準的一部分。它規定在同一邏輯級別的每 5 個連續位之後,第 6 位必須是補碼。這是透過提供上升沿來確保網路的持續同步所必需的。此外,它確保位流不會被誤解為錯誤幀或標記消息結束的幀間空間(7位隱性序列)。所有 CAN 節點都會自動刪除多餘的位。
如果在 CAN 消息內(在 SOF 和 CRC 字段之間)的總線上觀察到具有相同邏輯電平的 6 位序列,則接收器將其檢測為位填充錯誤,即填充錯誤。

格式錯誤
此消息級別檢查利用 CAN 消息中的某些字段/位必須始終處於某個邏輯級別的事實。具體來說,1 位 SOF 必須是顯性的,而整個 8 位 EOF 字段必須是隱性的。此外,ACK 和 CRC 界定符必須是隱性的。如果接收器發現這些位中的任何一個具有無效的邏輯電平,則接收器將其檢測為格式錯誤。

ACK 應答錯誤(應答)
當發送器發送CAN報文時,它將包含ACK字段(應答),發送器將在其中發送一個隱性位。所有偵聽CAN節點都應在該字段中發送顯性位以驗證消息的接收(無論節點是否對消息感興趣)。如果發送器未讀取ACK時隙中的顯性位,則發送器將其檢測為ACK錯誤。

CRC 校驗錯誤(循環冗餘校驗)
每個 CAN 報文都包含一個 15 位的循環冗餘校驗和字段。在這裡,發送器已經計算了 CRC 值並將其添加到消息中。每個接收節點也會自己計算 CRC。如果接收器的 CRC 計算與發送器的CRC 不匹配,接收器會將其檢測為 CRC 錯誤。

~Follow us to get more technical knowledge.
宏虹電子為客戶提供 CAN 卡、CAN 數據記錄儀、數據採集模塊、CAN 網關和轉換器等硬體設備,以及Kvaser CANLIB SDK 等軟體。Deep technical accumulation and excellent technical service ability is the reason why many customers choose Hongke, welcome to contact us at any time!
