<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > 節點(diǎn)BusOff恢復過(guò)程分析與測試

節點(diǎn)BusOff恢復過(guò)程分析與測試

作者: 時(shí)間:2020-06-10 來(lái)源:電子產(chǎn)品世界 收藏

總線(xiàn)關(guān)閉(bus off)是節點(diǎn)比較重要的錯誤處理機制。那么,在總線(xiàn)關(guān)閉狀態(tài)下,節點(diǎn)的恢復流程是怎樣的?又該如何理解節點(diǎn)恢復流程的“快恢復”和“慢恢復”機制?本文將為大家詳細分析總線(xiàn)關(guān)閉及恢復的機制和原理。

本文引用地址:http://dyxdggzs.com/article/202006/414077.htm

image.png

圖1節點(diǎn)狀態(tài)轉換圖情形1

一、 故障界定與總線(xiàn)關(guān)閉狀態(tài)

為了避免某個(gè)設備因為自身原因(例如硬件損壞)導致無(wú)法正確收發(fā)報文而不斷的破壞總線(xiàn)的數據幀,從而影響其它正常節點(diǎn)通信,網(wǎng)絡(luò )具有嚴格的錯誤診斷功能,CAN通用規范中規定每個(gè)CAN中有一個(gè)發(fā)送錯誤計數器和一個(gè)接收錯誤計數器。根據計數值不同,節點(diǎn)會(huì )處于不同的錯誤狀態(tài),并根據計數值的變化進(jìn)行狀態(tài)轉換,狀態(tài)轉換如下圖所示。

以上三種錯誤狀態(tài)表示發(fā)生故障的嚴重程度,總線(xiàn)關(guān)閉是節點(diǎn)最嚴重的錯誤狀態(tài)。并且,節點(diǎn)在不同的狀態(tài)下具有不同的特性,在總線(xiàn)關(guān)閉狀態(tài)下,節點(diǎn)不能發(fā)送報文或應答總線(xiàn)上的報文,也就意味著(zhù)不能再對總線(xiàn)有任何影響。

狀態(tài)跳轉和錯誤計數的規則使得節點(diǎn)在發(fā)生通信故障時(shí)有了較好的自我錯誤處理和恢復機制,從一種較嚴重的錯誤狀態(tài)跳轉到另一種嚴重性相對較低的狀態(tài),本質(zhì)上就是一種恢復過(guò)程。圖1所呈現的轉換過(guò)程是CAN通用規范所要求的,我們從設備供應商買(mǎi)回來(lái)的CAN已經(jīng)把這些功能固化在硅片之中。

在通信過(guò)程中,錯誤主動(dòng)和錯誤被動(dòng)兩種狀態(tài)下節點(diǎn)的恢復過(guò)程一般不需要進(jìn)行額外的編程處理,直接使用CAN固有功能即可。但對于總線(xiàn)關(guān)閉狀態(tài),往往不直接使用CAN控制器固有的恢復過(guò)程,而是對其進(jìn)行編程控制,以實(shí)現“快恢復”和“慢恢復”機制。

image.png

圖2 節點(diǎn)狀態(tài)轉換圖情形2

注:

1、由于篇幅有限,關(guān)于錯誤計數的詳細規則以及各狀態(tài)下節點(diǎn)的具體特性不在本文進(jìn)行討論,讀者可以查閱CAN的相關(guān)協(xié)議規范。

2、本文的“CAN控制器”是指已經(jīng)實(shí)現了CAN通用協(xié)議物理層和數據鏈路層所要求的功能和特性的器件,如SJA1000;而“節點(diǎn)”是指把CAN控制器與、收發(fā)器等相關(guān)器件進(jìn)行整合開(kāi)發(fā)出來(lái)的具有一定功能的CAN節點(diǎn)。

image.png

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

二、 為什么需要對總線(xiàn)關(guān)閉狀態(tài)的節點(diǎn)實(shí)現“快恢復”和“慢恢復”策略?

當節點(diǎn)進(jìn)入總線(xiàn)關(guān)閉狀態(tài)后,如果僅是開(kāi)啟自動(dòng)恢復功能,CAN控制器在檢測到128次11個(gè)連續的隱性位后即可恢復通信,在實(shí)際的CAN通信總線(xiàn)中,這一條件是很容易達到的。以125K的波特率為例,128*11*(1/125000)= 0.011264s。這意味著(zhù)如果節點(diǎn)所在的CAN總線(xiàn)的幀間隔時(shí)間大于0.011264s,節點(diǎn)在總線(xiàn)空閑時(shí)間內便可輕易恢復通信。我們已經(jīng)知道,當進(jìn)入總線(xiàn)關(guān)閉狀態(tài)時(shí),節點(diǎn)已經(jīng)發(fā)生了嚴重的錯誤,處于不可信狀態(tài),如果迅速恢復參與總線(xiàn)通信,具有較高的風(fēng)險,因此,在實(shí)際的應用中,往往會(huì )通過(guò)MCU對CAN控制器總線(xiàn)關(guān)閉狀態(tài)的恢復過(guò)程進(jìn)行編程處理,以控制節點(diǎn)從總線(xiàn)關(guān)閉狀態(tài)恢復到錯誤主動(dòng)狀態(tài)的等待時(shí)間,達到既提高靈活性又保證節點(diǎn)在功能上的快速響應性的目的。具體包括“快恢復”和“慢恢復”策略,兩種策略一般同時(shí)應用。

通過(guò)以上的討論,我們可以知道,節點(diǎn)進(jìn)入總線(xiàn)關(guān)閉狀態(tài)后,存在以下幾種恢復情況:

(1)MCU僅開(kāi)啟CAN控制器的自動(dòng)恢復功能,節點(diǎn)只需檢測到128次11個(gè)連續的隱性位便可以恢復通信,恢復過(guò)程如圖1所示。

(2)MCU沒(méi)有開(kāi)啟CAN控制器的自動(dòng)恢復功能,也不主動(dòng)干預總線(xiàn)關(guān)閉錯誤,節點(diǎn)將一直無(wú)法“自動(dòng)”恢復總線(xiàn)通信,只能通過(guò)重新上電的方式使節點(diǎn)恢復, 恢復過(guò)程如圖2所示。

(3)MCU對CAN控制器的恢復過(guò)程進(jìn)行編程處理,這時(shí),節點(diǎn)的恢復行為由具體的編程邏輯決定,各廠(chǎng)家普遍采用了先“快恢復”后“慢恢復”的恢復策略,恢復過(guò)程如圖3所示。

image.png

圖4  MCU實(shí)現總線(xiàn)關(guān)閉恢復流程

三、MCU如何實(shí)現“快恢復”和“慢恢復”?

MCU編程實(shí)現總線(xiàn)關(guān)閉“快恢復”和“慢恢復”的一般過(guò)程可用以下流程圖描述:

節點(diǎn)以正常發(fā)送模式發(fā)送報文的過(guò)程中,如果出現了發(fā)送錯誤,發(fā)送錯誤計數會(huì )增加,只要發(fā)送錯誤計數沒(méi)有超過(guò)255, CAN控制器便會(huì )自動(dòng)重發(fā)報文,如果出現多次發(fā)送錯誤,使發(fā)送錯誤計數累加超過(guò)255,則節點(diǎn)跳轉為總線(xiàn)關(guān)閉狀態(tài)。MCU能夠第一時(shí)間知道節點(diǎn)進(jìn)入了總線(xiàn)關(guān)閉狀態(tài)(例如在錯誤中斷處理邏輯中查詢(xún)狀態(tài)寄存器的相應位),這時(shí)MCU控制CAN控制器進(jìn)入“快恢復”過(guò)程,即控制CAN控制器停止報文收發(fā),并進(jìn)行等待,計時(shí)達到需要的時(shí)間T1(如100ms)后,MCU重新啟動(dòng)恢復CAN控制器參與總線(xiàn)通信,這樣便完成了一次“快恢復”過(guò)程。

節點(diǎn)每進(jìn)入一次“快恢復”過(guò)程時(shí),MCU會(huì )對此進(jìn)行計數,當節點(diǎn)“快恢復”計數達到設定的值N(如5次),則后續再次進(jìn)入總線(xiàn)關(guān)閉狀態(tài)時(shí)MCU把恢復總線(xiàn)通信的等待時(shí)間T2進(jìn)行延長(cháng)(如1000ms),這樣便實(shí)現了“慢恢復”過(guò)程?!翱旎謴汀焙汀奥謴汀边^(guò)程的主要區別就在于恢復節點(diǎn)參與總線(xiàn)通信的等待時(shí)間的不同。

 通過(guò)MCU對于總線(xiàn)關(guān)閉后的恢復行為進(jìn)行編程控制,實(shí)際上是對CAN控制器的錯誤管理和恢復機制進(jìn)行了補充,使得總線(xiàn)關(guān)閉狀態(tài)后的恢復過(guò)程更加靈活,更能適應實(shí)際應用的需要。對于 “快恢復”和“慢恢復”的等待時(shí)間,以及“快恢復”計數多少次后進(jìn)入“慢恢復”過(guò)程,不同廠(chǎng)家可根據具體的需求進(jìn)行編程實(shí)現。

image.png

圖5 功能設置

四、 實(shí)測總線(xiàn)關(guān)閉恢復過(guò)程

通過(guò)廣州致遠電子有限公司的CAN總線(xiàn)分析儀的流量分析功能,可以很方便分析總線(xiàn)關(guān)閉后節點(diǎn)的恢復過(guò)程及測試“快恢復”和“慢恢復”的恢復時(shí)間。

第一步,連接DUT但先不要上電。按以下配置,使能接收干擾功能,并開(kāi)啟報文讀取功能。

第二步,給DUT上電,并采集一段時(shí)間報文,停止采集后使用流量分析功能進(jìn)行分析。

第三步,鼠標放置于波形“團”(本文把包含多幀密集幀的波形稱(chēng)為波形“團”)之間讀取恢復時(shí)間。

image.png

圖6 采集報文并進(jìn)行流量分析

至此,我們便可以得出結論:該DUT對總線(xiàn)關(guān)閉的恢復過(guò)程進(jìn)行了編程控制,采用了先“快恢復”后“慢恢復”的恢復機制,節點(diǎn)進(jìn)入總線(xiàn)關(guān)閉狀態(tài)后,進(jìn)行一次“快恢復”過(guò)程,后續進(jìn)行“慢恢復”過(guò)程,兩個(gè)恢復過(guò)程的恢復時(shí)間分別為27.5ms和209.5ms。

那么,我們該如何根據所得波形理解該DUT進(jìn)入總線(xiàn)關(guān)閉狀態(tài)及恢復通信的整個(gè)過(guò)程呢?

把第一個(gè)波形“團”放大得到下圖:(圖8)

可以清晰的看到,波形“團”中包含共32幀CAN報文。把其余各波形“團”放大后也都是包含32幀,這里不再把詳細的圖片貼出來(lái)。

DUT上電后,初始發(fā)送和接收錯誤計數都為0。由于在測試時(shí)配置了接收干擾功能,當DUT開(kāi)始發(fā)送報文后,每一幀報文都受到CAN總線(xiàn)分析儀的干擾而出現發(fā)送錯誤,第一次發(fā)送時(shí)發(fā)送錯誤計數加8,并自動(dòng)重發(fā),第二次發(fā)送時(shí)錯誤計數再加8,直到發(fā)送了32次后,發(fā)送錯誤計數大于255,根據圖3的錯誤狀態(tài)的轉換規則,這時(shí)DUT跳轉為總線(xiàn)關(guān)閉狀態(tài),MCU控制進(jìn)入“快恢復”過(guò)程同時(shí)對“快恢復”次數進(jìn)行計數,并等待約27ms后,MCU控制DUT從總線(xiàn)關(guān)閉狀態(tài)恢復為錯誤主動(dòng)狀態(tài),由MCU繼續啟動(dòng)發(fā)送,由于仍然受CAN總線(xiàn)分析儀的持續干擾,發(fā)送32幀后再次進(jìn)入總線(xiàn)關(guān)閉狀態(tài),再次執行“快恢復”或“慢恢復”過(guò)程,以此類(lèi)推。

根據流量分析的結果可知,該DUT進(jìn)入“快恢復”的計數達到1次后便執行“慢恢復”過(guò)程,“慢恢復”等待時(shí)間約為209ms。

image.png

圖7 讀取恢復時(shí)間

注:

1、干擾的設置可以根據需要設置其他的參數,只要保證能對DUT發(fā)送的幀進(jìn)行干擾使其出現發(fā)送錯誤即可。

2、為了分析完整的總線(xiàn)關(guān)閉恢復過(guò)程,建議DUT和CAN總線(xiàn)分析儀連接好后,先開(kāi)啟“報文讀取”和“接收干擾”功能后再上電DUT。因為這樣能確保DUT的接收錯誤計數和發(fā)送錯誤計數的初始計數都為0。

3、需要對DUT進(jìn)行連續的干擾,否則DUT恢復后成功發(fā)送了報文,“快恢復”次數的計數會(huì )遞減,這不利于分析DUT總線(xiàn)關(guān)閉后的整個(gè)恢復行為。 

4、總線(xiàn)關(guān)閉后節點(diǎn)的“恢復”是指恢復參與總線(xiàn)的通信,但并不意味著(zhù)恢復后一定能成功發(fā)送或接收報文。如上述案例,DUT恢復通信后由于仍然受CAN總線(xiàn)分析儀的干擾,導致報文發(fā)送再次失敗。

image.png

放大波形“團”觀(guān)察

總結:

在總線(xiàn)關(guān)閉狀態(tài)下,“快恢復”和“慢恢復”不是CAN控制器固有的功能,而是通過(guò)MCU的編程邏輯實(shí)現的恢復機制,是總線(xiàn)關(guān)閉狀態(tài)下恢復過(guò)程的補充,使恢復過(guò)程更具有靈活性。



關(guān)鍵詞: CAN MCU 控制器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>