你的位置:首頁 > 互連技術(shù) > 正文

一文讀懂CAN節(jié)點錯誤管理機制

發(fā)布時間:2021-10-19 來源:ZLG 責(zé)任編輯:wenwei

【導(dǎo)讀】CAN節(jié)點的穩(wěn)定性、可靠性和安全性得益于其強大的錯誤管理機制。那么,CAN節(jié)點為什么能感知錯誤?又是如何響應(yīng)錯誤?您是否能清晰地想象出這一過程?本文將為大家詳細分析CAN節(jié)點錯誤管理的工作過程。

 

節(jié)點電路構(gòu)成

 

如圖1所示,MCU作為主控制器,完成CAN控制器和功能電路的控制。

 

一文讀懂CAN節(jié)點錯誤管理機制

圖1 CAN節(jié)點組成框圖

 

CAN控制器是工作于數(shù)據(jù)鏈路層的器件,集成了CAN規(guī)范中數(shù)據(jù)鏈路層的全部功能,其功能由軟件和硬件共同實現(xiàn),從設(shè)備供應(yīng)商買回來的CAN控制器已經(jīng)把相應(yīng)的邏輯固化在其硅片之中;MCU是工作于應(yīng)用層的器件,其功能由軟件和硬件共同實現(xiàn),MCU運行的程序可由設(shè)計者靈活設(shè)計,以實現(xiàn)CAN節(jié)點的特定功能;CAN收發(fā)器工作于物理層,其功能完全由硬件實現(xiàn),其作用是將CAN控制器的邏輯電平轉(zhuǎn)化為CAN總線的模擬差分信號,以及把總線模擬差分信號轉(zhuǎn)換成CAN控制器的邏輯電平。

 

CAN節(jié)點的錯誤管理屬于CAN通信規(guī)范數(shù)據(jù)鏈路層的內(nèi)容,具體來說,錯誤管理是通過MCU和CAN控制器來實施的??梢哉f,CAN控制器是錯誤管理的基礎(chǔ)設(shè)施,我們可以從兩個方面理解其工作邏輯:一是如何感知錯誤,二是如何響應(yīng)錯誤。

 

注:1、本文所說的CAN規(guī)范指的是德國BOSCH公司的《CAN Specification Version 2.0》。

 

節(jié)點如何感知錯誤?

 

如前文所述,節(jié)點對總線錯誤的識別是通過CAN控制器來完成的。CAN控制器輸出給收發(fā)器發(fā)送引腳TX的邏輯信號位會從收發(fā)器接收引腳RX接收,這使得CAN控制器可以在發(fā)送一個邏輯位期間同時監(jiān)測總線的實際電平值。CAN控制器檢測總線錯誤原理如圖2所示:

 

一文讀懂CAN節(jié)點錯誤管理機制

圖2 監(jiān)測總線錯誤原理圖

 

如圖2描述,CAN控制器監(jiān)測一個總線電平的電平值是在采樣點位置進行的,判斷是否出現(xiàn)錯誤是在信息處理時間內(nèi)完成的。

 

綜上所述,CAN控制器對錯誤的識別可概括為:無論是作為發(fā)送器還是接收器,在采樣點位置成功監(jiān)測到當(dāng)前總線的實際電平值后,CAN控制器便按照CAN規(guī)范中描述的錯誤管理規(guī)則判斷是否出現(xiàn)錯誤。

 

CAN通信過程中的錯誤類型包括5種,分別是:位錯誤、填充錯誤、CRC錯誤、幀格式錯誤、應(yīng)答錯誤。接下來分別對5種錯誤的檢測識別過程進行解析。

 

1、位錯誤

 

位錯誤是由作為發(fā)送器的節(jié)點在發(fā)送報文期間進行檢測識別的。CAN控制器的程序邏輯發(fā)送的電平與監(jiān)測到總線的實際信號不一致即在此位期間檢測到位錯誤。

 

例外情況,在仲裁場或應(yīng)答間隙期間發(fā)送一“隱性”位卻監(jiān)視到一“顯性”位,以及當(dāng)發(fā)送器發(fā)送一個被動錯誤標(biāo)志但檢測到“顯性”位時,均也不被視為位錯誤,以實現(xiàn)特定的功能。

 

2、填充錯誤

 

在CAN幀的位場中,幀起始、仲裁場、控制場、數(shù)據(jù)場以及CRC序列,均通過位填充的方法編碼。無論何時,發(fā)送器只要檢測到這些位場對應(yīng)位流里有5個連續(xù)相同值的位,便自動在接著的下一位插入一個補碼位。CAN控制器在監(jiān)測總線電平值的同時對連續(xù)相同的位電平值會進行計數(shù),如果在使用位填充法進行編碼的信息中,出現(xiàn)了第6個連續(xù)相同的位電平值時,便檢測到一個填充錯誤。

 

3、CRC錯誤

 

CRC錯誤是由作為接收器的節(jié)點進行檢測識別的。CRC序列共15位(不包含填充位),其內(nèi)容由幀起始、仲裁場、控制場、數(shù)據(jù)場(如果有)的無填充位流計算而來。

 

CRC序列計算使用CAN規(guī)范規(guī)定的方法。作為發(fā)送器的節(jié)點發(fā)送CAN報文時CRC序列由規(guī)定的計算方法確定,作為接收器的節(jié)點從總線上接收完數(shù)據(jù)場最后一個數(shù)據(jù)位(沒有數(shù)據(jù)場時是接收完控制場的最后一個位)后,如果接下來接收到實際的CRC序列與接收器的計算結(jié)果不一致,便檢測到CRC錯誤。

 

4、格式錯誤

 

節(jié)點無論是作為發(fā)送器的還是作為接收器均可在監(jiān)測報文期間檢測識別格式錯誤。由于CAN通信嚴(yán)格按照CAN規(guī)范定義的幀格式進行報文封裝傳輸,CAN控制器在監(jiān)測總線電平位時明確知道當(dāng)前位、后續(xù)位屬于幀格式中哪個位場,以及屬于位場的第幾個位,當(dāng)接收到一個屬于幀格式固定形式的位時,如果實際電平值與幀格式定義不一致,則檢測到一個格式錯誤。

 

例外情況,對于接收器來說,幀結(jié)束最后的位被置于“不重要”狀態(tài),監(jiān)測到的幀結(jié)束最后一位期間的顯性位不被當(dāng)作幀錯誤。

 

5、應(yīng)答錯誤

 

應(yīng)答錯誤是由作為發(fā)送器的節(jié)點檢測識別的。在發(fā)送報文時,只要在發(fā)送應(yīng)答間隙(隱性)期間所監(jiān)測到的位不為“顯性”,則發(fā)送器會檢測到一個應(yīng)答錯誤。

 

注:

 

1、上述5種錯誤不會相互排斥,也就是說CAN幀中的某個錯誤有可能同屬一種以上的錯誤類型。

2、如上所述,作為發(fā)送器或接收器的不同角色時,直接能檢測到的錯誤類型是不一樣的。

 

節(jié)點如何響應(yīng)錯誤?

 

CAN規(guī)范中規(guī)定每個CAN控制器中實現(xiàn)一個發(fā)送錯誤計數(shù)器和一個接收錯誤計數(shù)器。根據(jù)計數(shù)值不同,節(jié)點會處于不同的節(jié)點狀態(tài),并根據(jù)計數(shù)值的變化進行狀態(tài)轉(zhuǎn)換,狀態(tài)轉(zhuǎn)換如圖3所示。

 

一文讀懂CAN節(jié)點錯誤管理機制

圖3 節(jié)點轉(zhuǎn)態(tài)轉(zhuǎn)換圖

 

當(dāng)CAN控制器檢測到總線錯誤后通過發(fā)送錯誤標(biāo)志指示錯誤。對于“錯誤主動”的節(jié)點,錯誤標(biāo)志表現(xiàn)為“主動錯誤標(biāo)志”,對于“錯誤被動”的節(jié)點,錯誤標(biāo)志表現(xiàn)為“被動錯誤標(biāo)志”。

 

無論檢測到位錯誤、填充錯誤、幀格式錯誤、還是應(yīng)答錯誤,CAN控制器會在緊鄰的下一位發(fā)送錯誤標(biāo)志。如果檢測到的錯誤類型是CRC錯誤,錯誤標(biāo)志的發(fā)送開始于ACK定界符之后的位,即幀結(jié)尾。

 

綜上所述,CAN控制器對錯誤的響應(yīng)可概括為:根據(jù)當(dāng)前的節(jié)點狀態(tài)在位流序列相應(yīng)的位置用錯誤標(biāo)志標(biāo)示錯誤,并按照CAN規(guī)范更新錯誤計數(shù)值,進行節(jié)點狀態(tài)轉(zhuǎn)換。并且是每成功監(jiān)測到一次錯誤便進行一次響應(yīng)。

 

注:

 

1、由于篇幅有限,關(guān)于錯誤計數(shù)的詳細規(guī)則、節(jié)點狀態(tài)轉(zhuǎn)換以及錯誤幀格式等細節(jié)均不在本文進行討論,請讀者查閱CAN協(xié)議規(guī)范。

2、上述分析可知道,錯誤響應(yīng)的關(guān)鍵要素包括錯誤標(biāo)志的類型和響應(yīng)的位置。

 

錯誤管理機制的作用

 

錯誤管理機制的作用主要體現(xiàn)在對錯誤的響應(yīng)過程。
 

作為發(fā)送器發(fā)送錯誤標(biāo)志時,無論“主動錯誤”還是“被動錯誤”都必然包括6個連續(xù)同極性的位,使其他節(jié)點也識別到總線錯誤,進而使所有節(jié)點都能丟棄當(dāng)前出錯的幀。

 

作為接收器發(fā)送錯誤標(biāo)志時,“主動錯誤”標(biāo)志使其他節(jié)點也識別到總線錯誤從而使所有節(jié)點(包括作為發(fā)送器的節(jié)點)都能丟棄當(dāng)前出錯的幀;“被動錯誤”標(biāo)志不影響總線通信從而使其他節(jié)點都能成功接收當(dāng)前幀,處于“被動錯誤”狀態(tài)的節(jié)點屬于“不可信”狀態(tài),其檢測到錯誤僅是自己丟棄當(dāng)前幀,這也是錯誤管理的靈活性所在,即錯誤響應(yīng)并不是嚴(yán)格在任何情況下都使所有節(jié)點丟棄同一幀報文。

 

綜上所述,錯誤管理機制可以使所有的節(jié)點同時接收或丟棄總線的同一幀報文,又可以使作為接收器的被動錯誤狀態(tài)的節(jié)點僅自己丟棄當(dāng)前報文而不影響其他節(jié)點。因此,錯誤管理是實現(xiàn)CAN通信數(shù)據(jù)一致性的機制之一。

 

總結(jié)

 

CAN節(jié)點錯誤管理功能是由CAN節(jié)點組成中的CAN控制器負(fù)責(zé)的,對錯誤管理的工作過程可以從“錯誤識別”和“錯誤響應(yīng)”兩個方面進行理解。錯誤管理是實現(xiàn)CAN通信數(shù)據(jù)的一致性的機制之一。

 

ZPS-CANFD是致遠電子總線分析儀第二代CAN總線開發(fā)輔助工具,適用于CANFD、CAN、LIN總線的測量及測試儀器,支持總線數(shù)據(jù)的發(fā)送和接收,高層協(xié)議解析及診斷,能對CANFD、CAN總線物理層電氣信號實時采集和記錄,并附帶有高速模擬通道、通用數(shù)字IO及模擬IO,通過提供的硬件接口及軟件功能,用戶能夠便捷地構(gòu)建總線信號測量與分析、節(jié)點功能仿真及測試、網(wǎng)絡(luò)可靠性診斷及評估的自動化系統(tǒng)。ZPS-CANFD可實現(xiàn)CAN/CANFD報文和波形的同步監(jiān)測,可以直觀的定位排查節(jié)點錯誤問題,以及更高效的錯誤干擾等模擬測試。

 

來源:ZLG致遠儀器,原創(chuàng):研發(fā)部  

 

 

免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理。

 

推薦閱讀:

 

設(shè)計人員如何實現(xiàn) Wi-Fi 三頻段千兆網(wǎng)速和高吞吐量

凌華科技推出邊緣視覺分析軟件開發(fā)套件EVA SDK加速邊緣AI視覺

“愛芯科技”完成新一輪品牌升級,正式更名“愛芯元智”

開發(fā)基于碳化硅的25kW快速直流充電樁 (第一部分):電動車應(yīng)用

TM1810-3, TM1810-2 LED恒流驅(qū)動IC

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
壓控振蕩器 壓力傳感器 壓力開關(guān) 壓敏電阻 揚聲器 遙控開關(guān) 醫(yī)療電子 醫(yī)用成像 移動電源 音頻IC 音頻SoC 音頻變壓器 引線電感 語音控制 元件符號 元器件選型 云電視 云計算 云母電容 真空三極管 振蕩器 振蕩線圈 振動器 振動設(shè)備 震動馬達 整流變壓器 整流二極管 整流濾波 直流電機 智能抄表
?

關(guān)閉

?

關(guān)閉