當前位置:首頁 > 單片機 > 致遠電子
[導(dǎo)讀]總線關(guān)閉(bus off)是CAN節(jié)點比較重要的錯誤處理機制。

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

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

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

節(jié)點BusOff恢復(fù)過程分析與測試

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

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

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

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

注:

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

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

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

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

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

(1)MCU僅開啟CAN控制器的自動恢復(fù)功能,節(jié)點只需檢測到128次11個連續(xù)的隱性位便可以恢復(fù)通信,恢復(fù)過程如圖1所示。

(2)MCU沒有開啟CAN控制器的自動恢復(fù)功能,也不主動干預(yù)總線關(guān)閉錯誤,節(jié)點將一直無法“自動”恢復(fù)總線通信,只能通過重新上電的方式使節(jié)點恢復(fù), 恢復(fù)過程如圖2所示。

節(jié)點BusOff恢復(fù)過程分析與測試

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

(3)MCU對CAN控制器的恢復(fù)過程進行編程處理,這時,節(jié)點的恢復(fù)行為由具體的編程邏輯決定,各廠家普遍采用了先“快恢復(fù)”后“慢恢復(fù)”的恢復(fù)策略,恢復(fù)過程如圖3所示。

節(jié)點BusOff恢復(fù)過程分析與測試

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

三、MCU如何實現(xiàn)“快恢復(fù)”和“慢恢復(fù)”?

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

節(jié)點BusOff恢復(fù)過程分析與測試

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

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

節(jié)點每進入一次“快恢復(fù)”過程時,MCU會對此進行計數(shù),當節(jié)點“快恢復(fù)”計數(shù)達到設(shè)定的值N(如5次),則后續(xù)再次進入總線關(guān)閉狀態(tài)時MCU把恢復(fù)總線通信的等待時間T2進行延長(如1000ms),這樣便實現(xiàn)了“慢恢復(fù)”過程?!翱旎謴?fù)”和“慢恢復(fù)”過程的主要區(qū)別就在于恢復(fù)節(jié)點參與總線通信的等待時間的不同。

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

四、 實測總線關(guān)閉恢復(fù)過程

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

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

節(jié)點BusOff恢復(fù)過程分析與測試

圖5 功能設(shè)置

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

節(jié)點BusOff恢復(fù)過程分析與測試

圖6 采集報文并進行流量分析

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

節(jié)點BusOff恢復(fù)過程分析與測試

圖7 讀取恢復(fù)時間

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

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

把第一個波形“團”放大得到下圖:

節(jié)點BusOff恢復(fù)過程分析與測試

圖8 放大波形“團”觀察

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

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

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

注:

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

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

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

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

總結(jié):

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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉