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