前言 在CAN協議中,CAN匯流排除了眾多優秀的特點外,還具有錯誤監測功能、錯誤通知功能、和錯誤恢復功能、故障封閉功能。下麵系統瞭解以下CAN匯流排上的錯誤幀。 ###錯誤檢測 所有ECU均有可以檢測錯誤的功能。 ###錯誤通知 檢測出錯誤的ECU會立即通知其他ECU ###錯誤恢復 正常發送消息的EC ...
前言
在CAN協議中,CAN匯流排除了眾多優秀的特點外,還具有錯誤監測功能、錯誤通知功能、和錯誤恢復功能、故障封閉功能。下麵系統瞭解以下CAN匯流排上的錯誤幀。
錯誤檢測
所有ECU均有可以檢測錯誤的功能。
錯誤通知
檢測出錯誤的ECU會立即通知其他ECU
錯誤恢復
正常發送消息的ECU,一旦檢測出錯誤,會強制結束當前
錯誤封閉
CAN可以判斷出錯誤的類型是匯流排上暫時的數據錯誤,還是持續的數據錯誤。當匯流排上發生持續數據錯誤時,可將引起此故障的單元從匯流排上隔離出去。
錯誤狀態的類型
1. 主動錯誤狀態(Active Error)
主動錯誤狀態是可以正常參加匯流排通信的狀態,處於主動錯誤狀態的ECU檢測出錯誤時,輸出主動錯誤標誌。
2. 被動錯誤狀態(Passive Error)
被動錯誤狀態是易引起錯誤的狀態。處於被動錯誤的ECU,雖然能參加匯流排通信,但為了不妨礙其他ECU,接收時不能積極的發送錯誤通知。處於被動錯誤狀態的ECU,即使檢測出錯誤,而其他處於主動錯誤狀態的ECU,沒有發現錯誤,真個匯流排也被認為沒有錯誤。
處於被動錯誤狀態的ECU檢測出錯誤時,食醋胡被動錯誤標誌。
另外,處於被動錯誤的ECU在發送結束後不能馬上再次開始發送,在開始下次發送前,在間隔幀期間內必須插入“延時產送(8個隱性位)”
3. 匯流排關閉狀態(Bus Off)
匯流排關閉狀態是不能參加匯流排上通信的狀態,信息的接收和發送均被禁止,這些狀態依靠發送錯誤計數器(TEC)和接收錯誤計數器(REC)來管理,根據計數器值決定EUC進入何種狀態,錯誤狀態和計數器關係如下圖所示。
錯誤狀態轉換
在CAN協議中,有兩個計數器,TEC(發送錯誤計數器)、REC(接收錯誤計數器)。這兩個計數器和錯誤幀數量按照以下的規則換算。
回到主動錯誤狀態:
當連續128次檢測到連續11位隱性位,則又回到主動錯誤狀態。至於為啥是連續11位隱性電平,那是因為連續11位隱性電平,認為是匯流排空閑狀態(①幀結束是由1位隱性的ACK界定符+7位隱性EOF+3位隱性的幀間隔。②錯誤幀的話是8位隱性錯誤界定符+3位幀間隔)。
錯誤幀
用於在接收和發送消息的時,檢測出錯誤,通知錯誤的幀,錯誤幀主要錯誤標誌和錯誤界定符構成。
錯誤標誌
錯誤標誌,主要是標記錯誤類型,是主動錯誤還是被動錯誤。處於主動錯誤狀態,節點就具備發出主動錯誤幀的能力,處於被動錯誤狀態,節點具備發出被動錯誤幀的能力。
主動錯誤是由6個顯性位構成
被動錯誤是由6個隱性位構成。
當多種錯誤同時發生時候,會出現錯誤標誌重疊,因此會有0-6位的重疊位,最低可填0,也就是沒有重疊,最高可填6,重疊了6位。
錯誤界定符
錯誤界定符由8位隱性位構成。
錯誤的種類
錯誤的種類一共有5種,多種錯誤可能同時發生。
1. 位錯誤 Bit Error
線與機制瞭解:在匯流排上顯性位能夠覆蓋掉隱性位。
比較輸出電平和匯流排電平(不含填充位),當兩個電平不一致時,則認為是位錯誤。位錯誤的檢測段分為數據幀的(SOF-EOF,)、遙控幀(SOF-EOF)、錯誤幀、過載幀。接收節點和發送節點均能檢測出此錯誤。
當然以下幾種情況,不認為是位錯誤:
①在仲裁段輸出隱性電平,但檢測出匯流排是顯性電平時,不認為是位錯誤,而是仲裁失敗
②在仲裁段作為填充位輸出隱性電平,但匯流排上檢測出顯性電平時,不認為是位錯誤,而是填充錯誤。
③在ACK Slot位發出隱性電平,但匯流排檢測出顯性電平,不認為是位錯誤,而是有節點響應發送節點,成為ACK應答。
④輸出被動錯誤標誌(6個隱性電平),但匯流排上檢測出顯性位,不認為是位錯誤,而是因為線與機制,隱性被顯性覆蓋了(這也就是被動錯誤不會影響匯流排數據的表現)。
2. 填充錯誤 Stuff Error
填充機制瞭解:在CAN協議里,發送數據幀和遙控幀(SOF-CRC序列),當相同極性的電平連續5位時,則添加1位相反的位。接收節點也會按照此規則剔除填充位,解析到正確的數據。
在需要填充的段內,連續檢測到6個位相同的電平,則認為是填充錯誤。填充錯誤的檢測段分為數據幀的(SOF-CRC序列)、遙控幀(SOF-CRC序列),接收節點和發送節點均能檢測此錯誤。
3. ACK錯誤 ACK Error
ACK應答瞭解:發送節點在ACK Slot發送隱性電平,接收節點接收到發送節點時,檢查收到的報文沒有填充錯誤、格式錯誤、CRC錯誤,均無錯誤時,便會將ACK Slot為顯性發向匯流排,即發送節點便會在ACK Slot回讀到顯性。
發送單元在ACK槽(ACK Slot)時間段內沒有回讀到顯性電平,發送節點便會檢測出ACK錯誤。
4. 格式錯誤 Form Error
常見的幀結構瞭解:數據幀如下圖,一般幀結構里定義為固定為隱性電平的位。
在幀結構中定義的固定格式,當接收節點檢測到相反的格式,則接收節點認為是格式錯誤。格式錯誤的檢測段分為數據幀的(CRC界定符、ACK界定符、EOF)、遙控幀(CRC界定符、ACK界定符、EOF),錯誤界定符、過載界定符。
5. CRC錯誤 CRC Error
接收單元在接收到的數據計算出CRC結果,與接收到的CRC序列作為比較,若檢測不一致,則接收節點認為是CRC錯誤。
這個人很懶,催更就會更新。