五分鐘帶你認識CAN 總線錯誤 — CAN總線錯誤類型 (2)

A simple intro to CAN errors

CAN 總線錯誤

在本系列文章中,我們將為您詳細介紹 CAN 總線錯誤的相關知識,包括 CAN 總線錯誤的基礎概念、CAN 總線錯誤的類型、CAN 錯誤幀和 CAN 節點錯誤狀態,並透過實際的應用測試生成並記錄 CAN 錯誤。

● CAN 總線錯誤類型

CAN總線協議規定了5種CAN錯誤類型:

  • 位錯誤[發送器]
  • 位填充錯誤[接收器]
  • 格式錯誤[接收者]
  • ACK應答錯誤(應答)[發送器]
  • CRC校驗錯誤(循環冗餘校驗)[接收器]

在前文中,我們已經對位錯誤和位填充錯誤有所了解,這兩者都是在位級別進行評估的。其餘三種 CAN 錯誤類型在消息級別進行評估。下面我們詳細介紹每種錯誤類型。

回顧前文: 五分鐘帶你認識CAN 總線錯誤 — CAN總線錯誤與錯誤幀 (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 錯誤。

~關注我們獲得更多技術知識分享~

宏虹電子為客戶提供 CAN 卡、CAN 數據記錄儀、數據採集模塊、CAN 網關和轉換器等硬體設備,以及Kvaser CANLIB SDK 等軟體。深厚的技術積累和優秀的技術服務能力是眾多客戶選擇虹科的理由,歡迎隨時聯繫我們!


聯繫我們