作者 |Dawnfly
小編 | 不吃豬頭肉
引言
CAN(Controller Area Network)協(xié)議是當(dāng)前使用最普遍的車載通信協(xié)議之一,其優(yōu)點不只體現(xiàn)在多主并行、最高達(dá)1Mbit/sec的傳輸速率(針對標(biāo)準(zhǔn)CAN)、基于優(yōu)先級的仲裁機制以及廣播發(fā)送的短幀結(jié)構(gòu),還體現(xiàn)在其錯誤檢測機制上。通過總線數(shù)據(jù)以及總線波形來分析總線故障時,CAN協(xié)議錯誤檢測機制中豐富的錯誤幀類型能讓定位問題的效率更高。錯誤幀是CAN協(xié)議進(jìn)行錯誤報告的方式,可以將總線上任何一個節(jié)點發(fā)現(xiàn)錯誤的信號通知給其他節(jié)點。作為一名總線測試工程師,在日常測試過程中不可避免的會接觸到錯誤幀,因此了解錯誤幀的作用、類型與產(chǎn)生原因,對于測試工作的順利開展有很大的幫助。
CAN錯誤幀格式
圖1 錯誤幀通用格式
CAN錯誤幀通用格式如上圖1所示,主要包括錯誤標(biāo)志和錯誤界定符兩個部分,其形成的原理以及作用如下:
錯誤標(biāo)志
出現(xiàn)錯誤后若CAN節(jié)點處在主動錯誤階段則發(fā)送6個連續(xù)顯性位,在被動錯誤階段則發(fā)送6個連續(xù)隱性位。由于6個連續(xù)相同的位違背了位填充規(guī)則會引發(fā)填充錯誤,會使其他節(jié)點也發(fā)送錯誤標(biāo)志,因此,一個錯誤標(biāo)志通常由兩個連續(xù)6位的信號組成,由于會存在錯誤標(biāo)志的重疊,所以錯誤標(biāo)志的長度會在6-12位的范圍。
錯誤界定符
錯誤界定符由8個連續(xù)隱性位組成,所有節(jié)點在發(fā)送錯誤標(biāo)志后,都會向總線發(fā)送1個隱性位,若檢測到總線上該位為隱性,則發(fā)送剩下的7個隱性位。
CAN錯誤幀分類
CAN錯誤幀根據(jù)產(chǎn)生錯誤的節(jié)點類型可以分為發(fā)送錯誤和接收錯誤兩大類,根據(jù)錯誤產(chǎn)生的原因則可以分為位錯誤、填充錯誤、ACK錯誤、格式錯誤以及CRC錯誤,下圖2為各類錯誤幀所檢測范圍的分布。
圖2 錯誤檢測分布
位錯誤:回讀總線位狀態(tài)與自身發(fā)送的位不同,發(fā)送節(jié)點發(fā)送錯誤幀,需要注意仲裁段和ACK位發(fā)送隱性位但是回讀到顯性位除外。
填充錯誤:違反位填充規(guī)則,發(fā)送節(jié)點在發(fā)送報文時遇到5個相同極性位后需要插入1個極性相反的位,接收節(jié)點再接收報文時則需要刪除填充位。如果接收到的報文存在6個相同極性的位,則第6個位便是出現(xiàn)了填充錯誤,需要在該位后發(fā)送錯誤幀。
ACK錯誤:當(dāng)發(fā)送節(jié)點發(fā)送報文后,在ACK位沒有在總線上檢測到其他節(jié)點發(fā)送的顯性電平。
格式錯誤:固定格式位場(如CRC界定符、ACK界定符、EOF等)與協(xié)議標(biāo)準(zhǔn)定義的顯隱性不同則會被檢測為非法位觸發(fā)格式錯誤,發(fā)送和接收節(jié)點都會發(fā)送錯誤幀。
CRC錯誤:接收節(jié)點計算的CRC序列與接收到報文中的CRC序列不同。
錯誤幀的表現(xiàn)形式
圖3 實驗環(huán)境配置
為了更直觀的展示各種錯誤幀類型,搭建了如圖3所示的實驗環(huán)境,以VN1630為發(fā)送節(jié)點,VH6501為接收節(jié)點,結(jié)合VH6501的報文干擾功能制造各類錯誤幀。
1. 發(fā)送錯誤
位錯誤
如圖4所示,用VH6501干擾發(fā)送節(jié)點仿真報文的SOF位后,SOF位出現(xiàn)位錯誤,在Bit0開始發(fā)送錯誤幀,接收節(jié)點在Bit5檢測到存在6個連續(xù)的隱性位,觸發(fā)填充錯誤。
圖4 位錯誤報文示例
ACK錯誤
按照CAN協(xié)議的規(guī)定,在一幀報文發(fā)出之后,如果接收節(jié)點成功接收了該幀報文,則接收節(jié)點需要在該幀報文ACK段內(nèi)向總線上發(fā)送一個顯性位來對發(fā)送節(jié)點的報文進(jìn)行應(yīng)答,此時發(fā)送節(jié)點會在ACK段內(nèi)從總線上回讀到一個顯性位。如圖5所示,通過配置關(guān)閉接收節(jié)點的ACK應(yīng)答功能,此時發(fā)送節(jié)點在ACK位沒有收到其他節(jié)點應(yīng)答,觸發(fā)ACK錯誤。
圖5 ACK錯誤報文示例
格式錯誤
如圖6所示,分別干擾EOF的第一位和第六位都會導(dǎo)致發(fā)送和接收節(jié)點出現(xiàn)格式錯誤,是由于發(fā)送節(jié)點發(fā)送隱性位EOF,回讀到總線為顯性位,在該位后發(fā)送格式錯誤幀。
圖6 EOF格式錯誤報文示例
2. 接收錯誤
填充錯誤
如圖7所示,干擾報文0x210,使Bit7隱性變?yōu)轱@性,總線出現(xiàn)6個連續(xù)顯性位,使得發(fā)送節(jié)點和接收節(jié)點都檢測到填充錯誤,發(fā)送錯誤幀。
圖7 報文填充錯誤
CRC錯誤
如圖8所示,通過VH6501直接發(fā)送報文序列,并篡改數(shù)據(jù)場使其與CRC序列不匹配,觸發(fā)接收節(jié)點檢測到CRC錯誤,錯誤位置是100(ACK DEL),ISO 11898-1中規(guī)定檢測到CRC錯誤后,應(yīng)該在ACK界定符之后發(fā)送錯誤標(biāo)志。
圖8 CRC錯誤報文示例
格式錯誤
如圖9所示,Position 98和Position 100分別為CRC界定符和ACK界定符,干擾發(fā)送報文固定格式位后,接收節(jié)點檢測到格式錯誤幀。
圖9 界定符格式錯誤報文示例
錯誤標(biāo)志重疊由于錯誤標(biāo)志為6個極性相同的位,因此錯誤標(biāo)志會導(dǎo)致填充錯誤,引起其他節(jié)點發(fā)送錯誤標(biāo)志,或在發(fā)送錯誤標(biāo)志時將原本個,從而使其他節(jié)點緊跟著發(fā)送錯誤標(biāo)志,當(dāng)引起全局錯誤時,所有節(jié)點都會同時發(fā)送錯誤標(biāo)志,使得錯誤標(biāo)志為6個位。以下為三種典型錯誤標(biāo)志重疊范例。
重疊部分為6個位時
如圖10所示,在固定格式ACK界定符發(fā)送后,總線獲取到的信號為顯性位,由此發(fā)送節(jié)點和接收節(jié)點同時檢測到格式錯誤,都在ACK界定符后發(fā)送6個連續(xù)顯性位。
圖10 錯誤標(biāo)志完全重疊
重疊部分為5個位時
用定位可以如圖11所示,當(dāng)接收節(jié)點B出現(xiàn)CRC錯誤時,在ACK DEL后發(fā)送主動錯誤標(biāo)志,發(fā)送節(jié)點和接收節(jié)點A監(jiān)測到EOF的第一位被顯性位覆蓋,發(fā)送格式錯誤幀,總線上表現(xiàn)為7位長度的錯誤標(biāo)志。
圖11 錯誤標(biāo)志部分重疊
重疊部分為0時
如圖12所示,發(fā)送節(jié)點回讀總線監(jiān)測到位錯誤,發(fā)送錯誤標(biāo)志,當(dāng)錯誤標(biāo)志的6個連續(xù)顯性位發(fā)送完畢之后,總線上出現(xiàn)填充錯誤,引起其他節(jié)點發(fā)送錯誤標(biāo)志,從而使錯誤標(biāo)志達(dá)到12個位。
圖12 錯誤標(biāo)志不重疊
總結(jié)
CAN總線在幾十年的使用和發(fā)展下,被使用在幾乎每一臺車輛上,可以說是車輛行業(yè)不可或缺的存在,是現(xiàn)如今國際上應(yīng)用最廣泛的現(xiàn)場總線之一。而錯誤幀是CAN總線用于錯誤報告的報文,豐富的錯誤幀類型有助于迅速排查定位總線故障,因此錯誤幀的理解和使用也是作為總線測試工程師的必修課,希望這篇簡介能夠幫助了解錯誤幀的相關(guān)內(nèi)容。北匯信息是一家專注于汽車電子測試領(lǐng)域的企業(yè),對網(wǎng)絡(luò)測試有著豐富經(jīng)驗,并可提供相關(guān)培訓(xùn)、咨詢服務(wù)以及測試解決方案,幫助汽車制造商和零部件供應(yīng)商確保其車載網(wǎng)絡(luò)的可靠性和安全性。如果需要具體的測試服務(wù)或了解更多信息,歡迎大家來聯(lián)系我們。
參考文獻(xiàn):【1】《ISO11898-1 - 2015》,Road vehicles - Controller area network (CAN) - Part 1:Data link layer and physical signalling【2】《CAN入門書》瑞薩科技RCJ05B0027-0100【3】文中部分圖片來源于Vector
-
CAN
+關(guān)注
關(guān)注
57文章
2766瀏覽量
464311 -
車載通信
+關(guān)注
關(guān)注
0文章
47瀏覽量
13464 -
Vector
+關(guān)注
關(guān)注
3文章
62瀏覽量
8653
發(fā)布評論請先 登錄
相關(guān)推薦
評論