文章目錄
- 一、位錯誤(Bit Error)
- 1. 表現形式
- 2. 產生原因
- 二、填充錯誤(Stuff Error)
- 1. 表現形式
- 2. 產生原因
- 三、CRC 錯誤(CRC Error)
- 1. 表現形式
- 2. 產生原因
- 四、格式錯誤(Form Error)
- 1. 表現形式
- 2. 產生原因
- 五、應答錯誤(ACK Error)
- 1. 表現形式
- 2. 產生原因
- 六、超時錯誤(Timeout Error)
- 1. 表現形式
- 2. 產生原因
CAN(Controller Area Network)
總線是一種廣泛應用于汽車、工業自動化等領域的串行通信協議。在 CAN 總線通信過程中,可能會出現多種錯誤幀,本文介紹常見的幾種
一、位錯誤(Bit Error)
1. 表現形式
節點在發送某一位時,期望總線上出現與自己發送相同的電平,但實際監測到的電平與發送的電平不一致。
例如,節點發送一個顯性位(邏輯 0),但在總線上檢測到隱性位(邏輯 1)。
2. 產生原因
這可能是由于電磁干擾、線路故障、收發器故障等原因導致信號在傳輸過程中發生畸變。
二、填充錯誤(Stuff Error)
1. 表現形式
CAN 總線采用位填充技術,即當連續出現 5 個相同極性的位后,發送節點會自動插入一個相反極性的位。
如果接收節點在接收數據時,發現連續出現 6 個相同極性的位而沒有插入填充位,或者填充位的極性錯誤,就會檢測到填充錯誤。
2. 產生原因
這通常是由于發送節點的位填充邏輯出現故障或者數據傳輸過程中的干擾導致填充位丟失或極性改變。
- 或者 未接收到報文
- 或者 接收節點波特率配置錯誤
三、CRC 錯誤(CRC Error)
1. 表現形式
CAN 幀中包含一個 CRC 序列,用于檢測數據在傳輸過程中是否發生錯誤。
發送節點根據幀的內容計算出一個 CRC 值,并將其附加在幀的后面。接收節點在接收到幀后,會根據接收到的幀內容重新計算 CRC 值,并與接收到的 CRC 序列進行比較。如果兩者不相等,則認為出現 CRC 錯誤。
2. 產生原因
這可能是由于數據在傳輸過程中受到干擾,導致部分位發生改變,從而使計算出的 CRC 值與接收到的 CRC 序列不一致。
四、格式錯誤(Form Error)
1. 表現形式
CAN 幀有特定的格式,包括幀起始、仲裁場、控制場、數據場、CRC 場、應答場和幀結束等部分。
如果接收節點在接收幀時,檢測到某個場的格式不符合規定,例如幀結束位不是隱性位,或者應答場的格式錯誤等,就會檢測到格式錯誤。
2. 產生原因
這可能是由于發送節點的幀格式生成邏輯出現故障或者數據傳輸過程中的干擾導致幀格式被破壞。
五、應答錯誤(ACK Error)
1. 表現形式
在 CAN 總線通信中,當接收節點正確接收到一個有效的幀后,會在應答場中發送一個顯性位作為應答信號。
發送節點在發送完幀后,會在應答場中監測是否接收到應答信號。如果發送節點在應答場中沒有檢測到顯性位,即沒有接收到應答信號,則認為出現應答錯誤。
2. 產生原因
這可能是由于接收節點沒有正確接收到幀,或者接收節點出現故障無法發送應答信號,也可能是應答信號在傳輸過程中受到干擾而丟失。
六、超時錯誤(Timeout Error)
1. 表現形式
當發送節點在規定的時間內沒有收到接收節點的應答信號,或者接收節點在規定的時間內沒有接收到數據幀,就會產生超時錯誤。
2. 產生原因
這通常是由于網絡負載過重、節點故障或者是通信線路故障等原因導致的。