詳解CAN總線(xiàn):CAN總線(xiàn)報文格式—錯誤幀
CAN總線(xiàn)上傳輸的信息稱(chēng)為報文,當總線(xiàn)空閑時(shí)任何連接的單元都可以開(kāi)始發(fā)送新的報文。
CAN通信是通過(guò)以下5種類(lèi)型的幀進(jìn)行的:
數據幀
遙控幀
錯誤幀
過(guò)載幀
幀間隔
另外,數據幀和遙控幀有標準格式和擴展格式兩種格式。標準格式有 11 個(gè)位的標識符(Identifier: 以下簡(jiǎn)稱(chēng) ID), 擴展格式有 29 個(gè)位的 ID。
各種幀的用途如下表所示:
近期打算寫(xiě)5篇文章,分別詳細介紹這5種類(lèi)型的CAN總線(xiàn)報文格式,本篇博文將詳細講解CAN錯誤幀格式,創(chuàng )作不易,請各位朋友多多點(diǎn)贊、收藏、關(guān)注支持~
1
錯誤幀格式
錯誤幀由錯誤標志(Error Flag)和錯誤界定符(Error Delimiter)組成。
接收節點(diǎn)發(fā)現總線(xiàn)上的報文有錯誤時(shí),將自動(dòng)發(fā)出活動(dòng)錯誤標志,它是6個(gè)連續的顯性位。其他節點(diǎn)檢測到活動(dòng)錯誤標志后發(fā)送錯誤認可標志,它由6個(gè)連續的隱性位組成。由于各個(gè)接收節點(diǎn)發(fā)現錯誤的時(shí)間可能不同,所以總線(xiàn)上實(shí)際的錯誤標志可能由6~12個(gè)顯性位組成。
錯誤界定符由 8 個(gè)位的隱性位構成。當錯誤標志發(fā)生后,每一個(gè)CAN 節點(diǎn)監視總線(xiàn),直至檢測到一個(gè)顯性電平的跳變。此時(shí)表示所有的節點(diǎn)已經(jīng)完成了錯誤標志的發(fā)送,并開(kāi)始發(fā)送8個(gè)隱性電平的界定符。
如下所示:

2
主動(dòng)錯誤標志和被動(dòng)錯誤標志
錯誤標志包括主動(dòng)錯誤標志和被動(dòng)錯誤標志兩種。
主動(dòng)錯誤標志:處于主動(dòng)錯誤狀態(tài)的單元檢測出錯誤時(shí)輸出的錯誤標志,6 個(gè)位的顯性位;
被動(dòng)錯誤標志:處于被動(dòng)錯誤狀態(tài)的單元檢測出錯誤時(shí)輸出的錯誤標志,6 個(gè)位的隱性位。

3
錯誤幀種類(lèi)
錯誤幀共有 5 種,多種錯誤可能同時(shí)發(fā)生,種類(lèi)如下所示:
位錯誤
填充錯誤
CRC 錯誤
格式錯誤
ACK 錯誤
錯誤的種類(lèi)、錯誤的內容、錯誤檢測幀和檢測單元如下表所示:

重點(diǎn)聊一聊位錯誤和格式錯誤。
位錯誤特性如下所示:
位錯誤由向總線(xiàn)上輸出數據幀、遙控幀、錯誤幀、過(guò)載幀的單元和輸出 ACK 的單元、輸出錯誤的單元來(lái)檢測;
在仲裁段輸出隱性電平,但檢測出顯性電平時(shí),將被視為仲裁失利,而不是位錯誤;
在仲裁段作為填充位輸出隱性電平時(shí),但檢測出顯性電平時(shí),將不視為位錯誤,而是填充錯誤;
發(fā)送單元在 ACK 段輸出隱性電平,但檢測到顯性電平時(shí),將被判斷為其它單元的 ACK 應答,而非位錯誤;
輸出被動(dòng)錯誤標志(6 個(gè)位隱性位)但檢測出顯性電平時(shí),將遵從錯誤標志的結束條件,等待檢測出連續相同 6 個(gè)位的值(顯性或隱性),并不視為位錯誤。
格式錯誤特性如下所示:
即使接收單元檢測出 EOF(7 個(gè)位的隱性位)的最后一位(第 8 個(gè)位)為顯性電平,也不視為格式錯誤;
即使接收單元檢測出數據長(cháng)度碼(DLC)中 9~15 的值時(shí),也不視為格式錯誤。
發(fā)送單元發(fā)送完錯誤幀后,將再次發(fā)送數據幀或遙控幀,錯誤標志輸出時(shí)序如下表所示:

*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。