2017年1月12日 星期四

CAN bus (Controller Area Network) - Error Handling(1)

● CAN bus Error Handling - Globalization of Local Errors























● CAN bus Error Handling - Active Error Frame
Active error flag  :  6 個連續的“顯性”位元組成
Passive error flag :  6 個連續的“隱性”位元組成
















● CAN bus Error Handling - Bit-Stuffing Error
CAN 的協定明確的定義不可以有超過 5 個狀態相同的 bit連續發生,若有則須要於 5 個相同的 bit 後補一個反相的 bit,在接收的過濾器中這個額外的Bit會被排除如果有 6 相同的 bit 在 SOF 以及 CRC Delimiter 間連續發生, 則被視為違反了位元填充 ( bit Stuffing ) 的原則,將產生Error Frame 來回應偵測到的錯誤,原先的 message 將在 Error Frame 結束後重送


















● CAN bus Error Handling - Bit Error
送出隱性訊號被顯性訊號覆蓋,標示符與應答段例外
當傳送端發現它送出的信號與實際出現在CAN Bus 上的不同, 則判斷有Bit Error 發生








● CAN bus Error Handling - CRC Error
15-bit 的CRC 會自動的被加入被傳送中的Message 之CRC 欄位中所有node 皆接收Message, 並計算CRC 後與接收到的CRC 資料相比對若兩者CRC 不相等則視為發生CRC 錯誤並且產生一個Error Frame原先的 message 將在 Error Frame 結束後重送


















● CAN bus Error Handling - Acknowledgement Error
傳送中的 Node 在Ack Slot 時檢查Ack位元,此時它送出一個Recessive位元並檢查是否有收到Dominant位元,如果偵測到dominant 位元發生,表示至少有一個node 已正確地收到Message
否則,將視為有Ack 錯誤發生,將產生一個“示誤封包(Error Message)”並重新傳送此次的資料







● CAN bus Error Handling - Form Error
任一個Node 在CRC Delimiter,AckDelimiter,End of Frame (EOF) field 的間隔偵測到有dominate 位元則產生一個Error Frame 來指明發生了Form Error, 原先的message 將在Error Frame 結束後重送


沒有留言:

張貼留言