<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>
你的位置:首頁(yè) > 互連技術(shù) > 正文

一文讀懂CAN節點(diǎn)錯誤管理機制

發(fā)布時(shí)間:2021-10-19 來(lái)源:ZLG 責任編輯:wenwei

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

 

節點(diǎn)電路構成

 

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

 

一文讀懂CAN節點(diǎn)錯誤管理機制

圖1 CAN節點(diǎn)組成框圖

 

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

 

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

 

注:1、本文所說(shuō)的CAN規范指的是德國B(niǎo)OSCH公司的《CAN Specification Version 2.0》。

 

節點(diǎn)如何感知錯誤?

 

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

 

一文讀懂CAN節點(diǎn)錯誤管理機制

圖2 監測總線(xiàn)錯誤原理圖

 

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

 

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

 

CAN通信過(guò)程中的錯誤類(lèi)型包括5種,分別是:位錯誤、填充錯誤、CRC錯誤、幀格式錯誤、應答錯誤。接下來(lái)分別對5種錯誤的檢測識別過(guò)程進(jìn)行解析。

 

1、位錯誤

 

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

 

例外情況,在仲裁場(chǎng)或應答間隙期間發(fā)送一&ldquo;隱性&rdquo;位卻監視到一&ldquo;顯性&rdquo;位,以及當發(fā)送器發(fā)送一個(gè)被動(dòng)錯誤標志但檢測到&ldquo;顯性&rdquo;位時(shí),均也不被視為位錯誤,以實(shí)現特定的功能。

 

2、填充錯誤

 

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

 

3、CRC錯誤

 

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

 

CRC序列計算使用CAN規范規定的方法。作為發(fā)送器的節點(diǎn)發(fā)送CAN報文時(shí)CRC序列由規定的計算方法確定,作為接收器的節點(diǎn)從總線(xiàn)上接收完數據場(chǎng)最后一個(gè)數據位(沒(méi)有數據場(chǎng)時(shí)是接收完控制場(chǎng)的最后一個(gè)位)后,如果接下來(lái)接收到實(shí)際的CRC序列與接收器的計算結果不一致,便檢測到CRC錯誤。

 

4、格式錯誤

 

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

 

例外情況,對于接收器來(lái)說(shuō),幀結束最后的位被置于&ldquo;不重要&rdquo;狀態(tài),監測到的幀結束最后一位期間的顯性位不被當作幀錯誤。

 

5、應答錯誤

 

應答錯誤是由作為發(fā)送器的節點(diǎn)檢測識別的。在發(fā)送報文時(shí),只要在發(fā)送應答間隙(隱性)期間所監測到的位不為&ldquo;顯性&rdquo;,則發(fā)送器會(huì )檢測到一個(gè)應答錯誤。

 

注:

 

1、上述5種錯誤不會(huì )相互排斥,也就是說(shuō)CAN幀中的某個(gè)錯誤有可能同屬一種以上的錯誤類(lèi)型。

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

 

節點(diǎn)如何響應錯誤?

 

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

 

一文讀懂CAN節點(diǎn)錯誤管理機制

圖3 節點(diǎn)轉態(tài)轉換圖

 

當CAN控制器檢測到總線(xiàn)錯誤后通過(guò)發(fā)送錯誤標志指示錯誤。對于&ldquo;錯誤主動(dòng)&rdquo;的節點(diǎn),錯誤標志表現為&ldquo;主動(dòng)錯誤標志&rdquo;,對于&ldquo;錯誤被動(dòng)&rdquo;的節點(diǎn),錯誤標志表現為&ldquo;被動(dòng)錯誤標志&rdquo;。

 

無(wú)論檢測到位錯誤、填充錯誤、幀格式錯誤、還是應答錯誤,CAN控制器會(huì )在緊鄰的下一位發(fā)送錯誤標志。如果檢測到的錯誤類(lèi)型是CRC錯誤,錯誤標志的發(fā)送開(kāi)始于A(yíng)CK定界符之后的位,即幀結尾。

 

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

 

注:

 

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

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

 

錯誤管理機制的作用

 

錯誤管理機制的作用主要體現在對錯誤的響應過(guò)程。
 

作為發(fā)送器發(fā)送錯誤標志時(shí),無(wú)論&ldquo;主動(dòng)錯誤&rdquo;還是&ldquo;被動(dòng)錯誤&rdquo;都必然包括6個(gè)連續同極性的位,使其他節點(diǎn)也識別到總線(xiàn)錯誤,進(jìn)而使所有節點(diǎn)都能丟棄當前出錯的幀。

 

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

 

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

 

總結

 

CAN節點(diǎn)錯誤管理功能是由CAN節點(diǎn)組成中的CAN控制器負責的,對錯誤管理的工作過(guò)程可以從&ldquo;錯誤識別&rdquo;和&ldquo;錯誤響應&rdquo;兩個(gè)方面進(jìn)行理解。錯誤管理是實(shí)現CAN通信數據的一致性的機制之一。

 

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

 

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

 

 

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

 

推薦閱讀:

 

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

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

&ldquo;愛(ài)芯科技&rdquo;完成新一輪品牌升級,正式更名&ldquo;愛(ài)芯元智&rdquo;

開(kāi)發(fā)基于碳化硅的25kW快速直流充電樁 (第一部分):電動(dòng)車(chē)應用

TM1810-3, TM1810-2 LED恒流驅動(dòng)IC

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉

久久无码人妻精品一区二区三区_精品少妇人妻av无码中文字幕_98精品国产高清在线看入口_92精品国产自产在线观看481页
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>