免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理。
節(jié)點(diǎn)BusOff恢復(fù)過程分析與測(cè)試
發(fā)布時(shí)間:2020-06-11 責(zé)任編輯:lina
【導(dǎo)讀】總線關(guān)閉(bus off)是CAN節(jié)點(diǎn)比較重要的錯(cuò)誤處理機(jī)制。那么,在總線關(guān)閉狀態(tài)下,CAN節(jié)點(diǎn)的恢復(fù)流程是怎樣的?又該如何理解節(jié)點(diǎn)恢復(fù)流程的“快恢復(fù)”和“慢恢復(fù)”機(jī)制?本文將為大家詳細(xì)分析總線關(guān)閉及恢復(fù)的機(jī)制和原理。
總線關(guān)閉(bus off)是CAN節(jié)點(diǎn)比較重要的錯(cuò)誤處理機(jī)制。那么,在總線關(guān)閉狀態(tài)下,CAN節(jié)點(diǎn)的恢復(fù)流程是怎樣的?又該如何理解節(jié)點(diǎn)恢復(fù)流程的“快恢復(fù)”和“慢恢復(fù)”機(jī)制?本文將為大家詳細(xì)分析總線關(guān)閉及恢復(fù)的機(jī)制和原理。
故障界定與總線關(guān)閉狀態(tài)
為了避免某個(gè)設(shè)備因?yàn)樽陨碓颍ɡ缬布p壞)導(dǎo)致無法正確收發(fā)報(bào)文而不斷的破壞總線的數(shù)據(jù)幀,從而影響其它正常節(jié)點(diǎn)通信,CAN網(wǎng)絡(luò)具有嚴(yán)格的錯(cuò)誤診斷功能,CAN通用規(guī)范中規(guī)定每個(gè)CAN控制器中有一個(gè)發(fā)送錯(cuò)誤計(jì)數(shù)器和一個(gè)接收錯(cuò)誤計(jì)數(shù)器。根據(jù)計(jì)數(shù)值不同,節(jié)點(diǎn)會(huì)處于不同的錯(cuò)誤狀態(tài),并根據(jù)計(jì)數(shù)值的變化進(jìn)行狀態(tài)轉(zhuǎn)換,狀態(tài)轉(zhuǎn)換如下圖所示。
圖1節(jié)點(diǎn)狀態(tài)轉(zhuǎn)換圖情形1
以上三種錯(cuò)誤狀態(tài)表示發(fā)生故障的嚴(yán)重程度,總線關(guān)閉是節(jié)點(diǎn)最嚴(yán)重的錯(cuò)誤狀態(tài)。并且,節(jié)點(diǎn)在不同的狀態(tài)下具有不同的特性,在總線關(guān)閉狀態(tài)下,節(jié)點(diǎn)不能發(fā)送報(bào)文或應(yīng)答總線上的報(bào)文,也就意味著不能再對(duì)總線有任何影響。
狀態(tài)跳轉(zhuǎn)和錯(cuò)誤計(jì)數(shù)的規(guī)則使得節(jié)點(diǎn)在發(fā)生通信故障時(shí)有了較好的自我錯(cuò)誤處理和恢復(fù)機(jī)制,從一種較嚴(yán)重的錯(cuò)誤狀態(tài)跳轉(zhuǎn)到另一種嚴(yán)重性相對(duì)較低的狀態(tài),本質(zhì)上就是一種恢復(fù)過程。圖1所呈現(xiàn)的轉(zhuǎn)換過程是CAN通用規(guī)范所要求的,我們從設(shè)備供應(yīng)商買回來的CAN控制器已經(jīng)把這些功能固化在硅片之中。
在通信過程中,錯(cuò)誤主動(dòng)和錯(cuò)誤被動(dòng)兩種狀態(tài)下節(jié)點(diǎn)的恢復(fù)過程一般不需要MCU進(jìn)行額外的編程處理,直接使用CAN控制器固有功能即可。但對(duì)于總線關(guān)閉狀態(tài),往往不直接使用CAN控制器固有的恢復(fù)過程,而是對(duì)其進(jìn)行編程控制,以實(shí)現(xiàn)“快恢復(fù)”和“慢恢復(fù)”機(jī)制。
注:
由于篇幅有限,關(guān)于錯(cuò)誤計(jì)數(shù)的詳細(xì)規(guī)則以及各狀態(tài)下節(jié)點(diǎn)的具體特性不在本文進(jìn)行討論,讀者可以查閱CAN的相關(guān)協(xié)議規(guī)范。
本文的“CAN控制器”是指已經(jīng)實(shí)現(xiàn)了CAN通用協(xié)議物理層和數(shù)據(jù)鏈路層所要求的功能和特性的器件,如SJA1000;而“節(jié)點(diǎn)”是指把CAN控制器與MCU、收發(fā)器等相關(guān)器件進(jìn)行整合開發(fā)出來的具有一定功能的CAN節(jié)點(diǎn)。
為什么需要對(duì)總線關(guān)閉狀態(tài)的節(jié)點(diǎn)實(shí)現(xiàn)“快恢復(fù)”和“慢恢復(fù)”策略?
當(dāng)節(jié)點(diǎn)進(jìn)入總線關(guān)閉狀態(tài)后,如果MCU僅是開啟自動(dòng)恢復(fù)功能,CAN控制器在檢測(cè)到128次11個(gè)連續(xù)的隱性位后即可恢復(fù)通信,在實(shí)際的CAN通信總線中,這一條件是很容易達(dá)到的。以125K的波特率為例,128*11*(1/125000)= 0.011264s。這意味著如果節(jié)點(diǎn)所在的CAN總線的幀間隔時(shí)間大于0.011264s,節(jié)點(diǎn)在總線空閑時(shí)間內(nèi)便可輕易恢復(fù)通信。我們已經(jīng)知道,當(dāng)進(jìn)入總線關(guān)閉狀態(tài)時(shí),節(jié)點(diǎn)已經(jīng)發(fā)生了嚴(yán)重的錯(cuò)誤,處于不可信狀態(tài),如果迅速恢復(fù)參與總線通信,具有較高的風(fēng)險(xiǎn),因此,在實(shí)際的應(yīng)用中,往往會(huì)通過MCU對(duì)CAN控制器總線關(guān)閉狀態(tài)的恢復(fù)過程進(jìn)行編程處理,以控制節(jié)點(diǎn)從總線關(guān)閉狀態(tài)恢復(fù)到錯(cuò)誤主動(dòng)狀態(tài)的等待時(shí)間,達(dá)到既提高靈活性又保證節(jié)點(diǎn)在功能上的快速響應(yīng)性的目的。具體包括“快恢復(fù)”和“慢恢復(fù)”策略,兩種策略一般同時(shí)應(yīng)用。
通過以上的討論,我們可以知道,節(jié)點(diǎn)進(jìn)入總線關(guān)閉狀態(tài)后,存在以下幾種恢復(fù)情況:
MCU僅開啟CAN控制器的自動(dòng)恢復(fù)功能,節(jié)點(diǎn)只需檢測(cè)到128次11個(gè)連續(xù)的隱性位便可以恢復(fù)通信,恢復(fù)過程如圖1所示。
MCU沒有開啟CAN控制器的自動(dòng)恢復(fù)功能,也不主動(dòng)干預(yù)總線關(guān)閉錯(cuò)誤,節(jié)點(diǎn)將一直無法“自動(dòng)”恢復(fù)總線通信,只能通過重新上電的方式使節(jié)點(diǎn)恢復(fù), 恢復(fù)過程如圖2所示。
說明: E:CAN分析儀產(chǎn)品分類CANDT微信文章CANScope節(jié)點(diǎn)BusOff恢復(fù)過程分析與測(cè)試圖2.jpg
圖2 節(jié)點(diǎn)狀態(tài)轉(zhuǎn)換圖情形2
MCU對(duì)CAN控制器的恢復(fù)過程進(jìn)行編程處理,這時(shí),節(jié)點(diǎn)的恢復(fù)行為由具體的編程邏輯決定,各廠家普遍采用了先“快恢復(fù)”后“慢恢復(fù)”的恢復(fù)策略,恢復(fù)過程如圖3所示。
說明: E:CAN分析儀產(chǎn)品分類CANDT微信文章CANScope節(jié)點(diǎn)BusOff恢復(fù)過程分析與測(cè)試圖3.jpg
圖3 節(jié)點(diǎn)狀態(tài)轉(zhuǎn)換圖情形3
MCU如何實(shí)現(xiàn)“快恢復(fù)”和“慢恢復(fù)”?
MCU編程實(shí)現(xiàn)總線關(guān)閉“快恢復(fù)”和“慢恢復(fù)”的一般過程可用以下流程圖描述:
說明: E:CAN分析儀產(chǎn)品分類CANDT微信文章CANScope節(jié)點(diǎn)BusOff恢復(fù)過程分析與測(cè)試圖4.jpg
圖4 MCU實(shí)現(xiàn)總線關(guān)閉恢復(fù)流程
節(jié)點(diǎn)以正常發(fā)送模式發(fā)送報(bào)文的過程中,如果出現(xiàn)了發(fā)送錯(cuò)誤,發(fā)送錯(cuò)誤計(jì)數(shù)會(huì)增加,只要發(fā)送錯(cuò)誤計(jì)數(shù)沒有超過255, CAN控制器便會(huì)自動(dòng)重發(fā)報(bào)文,如果出現(xiàn)多次發(fā)送錯(cuò)誤,使發(fā)送錯(cuò)誤計(jì)數(shù)累加超過255,則節(jié)點(diǎn)跳轉(zhuǎn)為總線關(guān)閉狀態(tài)。MCU能夠第一時(shí)間知道節(jié)點(diǎn)進(jìn)入了總線關(guān)閉狀態(tài)(例如在錯(cuò)誤中斷處理邏輯中查詢狀態(tài)寄存器的相應(yīng)位),這時(shí)MCU控制CAN控制器進(jìn)入“快恢復(fù)”過程,即控制CAN控制器停止報(bào)文收發(fā),并進(jìn)行等待,計(jì)時(shí)達(dá)到需要的時(shí)間T1(如100ms)后,MCU重新啟動(dòng)恢復(fù)CAN控制器參與總線通信,這樣便完成了一次“快恢復(fù)”過程。
節(jié)點(diǎn)每進(jìn)入一次“快恢復(fù)”過程時(shí),MCU會(huì)對(duì)此進(jìn)行計(jì)數(shù),當(dāng)節(jié)點(diǎn)“快恢復(fù)”計(jì)數(shù)達(dá)到設(shè)定的值N(如5次),則后續(xù)再次進(jìn)入總線關(guān)閉狀態(tài)時(shí)MCU把恢復(fù)總線通信的等待時(shí)間T2進(jìn)行延長(zhǎng)(如1000ms),這樣便實(shí)現(xiàn)了“慢恢復(fù)”過程。“快恢復(fù)”和“慢恢復(fù)”過程的主要區(qū)別就在于恢復(fù)節(jié)點(diǎn)參與總線通信的等待時(shí)間的不同。
通過MCU對(duì)于總線關(guān)閉后的恢復(fù)行為進(jìn)行編程控制,實(shí)際上是對(duì)CAN控制器的錯(cuò)誤管理和恢復(fù)機(jī)制進(jìn)行了補(bǔ)充,使得總線關(guān)閉狀態(tài)后的恢復(fù)過程更加靈活,更能適應(yīng)實(shí)際應(yīng)用的需要。對(duì)于 “快恢復(fù)”和“慢恢復(fù)”的等待時(shí)間,以及“快恢復(fù)”計(jì)數(shù)多少次后進(jìn)入“慢恢復(fù)”過程,不同廠家可根據(jù)具體的需求進(jìn)行編程實(shí)現(xiàn)。
實(shí)測(cè)總線關(guān)閉恢復(fù)過程
通過廣州致遠(yuǎn)電子有限公司的CAN總線分析儀的流量分析功能,可以很方便分析總線關(guān)閉后節(jié)點(diǎn)的恢復(fù)過程及測(cè)試“快恢復(fù)”和“慢恢復(fù)”的恢復(fù)時(shí)間。
第一步,連接DUT但先不要上電。按以下配置,使能接收干擾功能,并開啟報(bào)文讀取功能。
圖5 功能設(shè)置
第二步,給DUT上電,并采集一段時(shí)間報(bào)文,停止采集后使用流量分析功能進(jìn)行分析。
圖6 采集報(bào)文并進(jìn)行流量分析
第三步,鼠標(biāo)放置于波形“團(tuán)”(本文把包含多幀密集幀的波形稱為波形“團(tuán)”)之間讀取恢復(fù)時(shí)間。
圖7 讀取恢復(fù)時(shí)間
至此,我們便可以得出結(jié)論:該DUT對(duì)總線關(guān)閉的恢復(fù)過程進(jìn)行了編程控制,采用了先“快恢復(fù)”后“慢恢復(fù)”的恢復(fù)機(jī)制,節(jié)點(diǎn)進(jìn)入總線關(guān)閉狀態(tài)后,進(jìn)行一次“快恢復(fù)”過程,后續(xù)進(jìn)行“慢恢復(fù)”過程,兩個(gè)恢復(fù)過程的恢復(fù)時(shí)間分別為27.5ms和209.5ms。
那么,我們?cè)撊绾胃鶕?jù)所得波形理解該DUT進(jìn)入總線關(guān)閉狀態(tài)及恢復(fù)通信的整個(gè)過程呢?
把第一個(gè)波形“團(tuán)”放大得到下圖:
圖8 放大波形“團(tuán)”觀察
可以清晰的看到,波形“團(tuán)”中包含共32幀CAN報(bào)文。把其余各波形“團(tuán)”放大后也都是包含32幀,這里不再把詳細(xì)的圖片貼出來。
DUT上電后,初始發(fā)送和接收錯(cuò)誤計(jì)數(shù)都為0。由于在測(cè)試時(shí)配置了接收干擾功能,當(dāng)DUT開始發(fā)送報(bào)文后,每一幀報(bào)文都受到CAN總線分析儀的干擾而出現(xiàn)發(fā)送錯(cuò)誤,第一次發(fā)送時(shí)發(fā)送錯(cuò)誤計(jì)數(shù)加8,并自動(dòng)重發(fā),第二次發(fā)送時(shí)錯(cuò)誤計(jì)數(shù)再加8,直到發(fā)送了32次后,發(fā)送錯(cuò)誤計(jì)數(shù)大于255,根據(jù)圖3的錯(cuò)誤狀態(tài)的轉(zhuǎn)換規(guī)則,這時(shí)DUT跳轉(zhuǎn)為總線關(guān)閉狀態(tài),MCU控制進(jìn)入“快恢復(fù)”過程同時(shí)對(duì)“快恢復(fù)”次數(shù)進(jìn)行計(jì)數(shù),并等待約27ms后,MCU控制DUT從總線關(guān)閉狀態(tài)恢復(fù)為錯(cuò)誤主動(dòng)狀態(tài),由MCU繼續(xù)啟動(dòng)發(fā)送,由于仍然受CAN總線分析儀的持續(xù)干擾,發(fā)送32幀后再次進(jìn)入總線關(guān)閉狀態(tài),再次執(zhí)行“快恢復(fù)”或“慢恢復(fù)”過程,以此類推。
根據(jù)流量分析的結(jié)果可知,該DUT進(jìn)入“快恢復(fù)”的計(jì)數(shù)達(dá)到1次后便執(zhí)行“慢恢復(fù)”過程,“慢恢復(fù)”等待時(shí)間約為209ms。
注:
干擾的設(shè)置可以根據(jù)需要設(shè)置其他的參數(shù),只要保證能對(duì)DUT發(fā)送的幀進(jìn)行干擾使其出現(xiàn)發(fā)送錯(cuò)誤即可。
為了分析完整的總線關(guān)閉恢復(fù)過程,建議DUT和CAN總線分析儀連接好后,先開啟“報(bào)文讀取”和“接收干擾”功能后再上電DUT。因?yàn)檫@樣能確保DUT的接收錯(cuò)誤計(jì)數(shù)和發(fā)送錯(cuò)誤計(jì)數(shù)的初始計(jì)數(shù)都為0。
需要對(duì)DUT進(jìn)行連續(xù)的干擾,否則DUT恢復(fù)后成功發(fā)送了報(bào)文,“快恢復(fù)”次數(shù)的計(jì)數(shù)會(huì)遞減,這不利于分析DUT總線關(guān)閉后的整個(gè)恢復(fù)行為。
總線關(guān)閉后節(jié)點(diǎn)的“恢復(fù)”是指恢復(fù)參與總線的通信,但并不意味著恢復(fù)后一定能成功發(fā)送或接收?qǐng)?bào)文。如上述案例,DUT恢復(fù)通信后由于仍然受CAN總線分析儀的干擾,導(dǎo)致報(bào)文發(fā)送再次失敗。
總結(jié):
在總線關(guān)閉狀態(tài)下,“快恢復(fù)”和“慢恢復(fù)”不是CAN控制器固有的功能,而是通過MCU的編程邏輯實(shí)現(xiàn)的恢復(fù)機(jī)制,是總線關(guān)閉狀態(tài)下恢復(fù)過程的補(bǔ)充,使恢復(fù)過程更具有靈活性。
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理。
特別推薦
- 授權(quán)代理商貿(mào)澤電子供應(yīng)Same Sky多樣化電子元器件
- 使用合適的窗口電壓監(jiān)控器優(yōu)化系統(tǒng)設(shè)計(jì)
- ADI電機(jī)運(yùn)動(dòng)控制解決方案 驅(qū)動(dòng)智能運(yùn)動(dòng)新時(shí)代
- 倍福推出采用 TwinSAFE SC 技術(shù)的 EtherCAT 端子模塊 EL3453-0090
- TDK推出新的X系列環(huán)保型SMD壓敏電阻
- Vishay 推出新款采用0102、0204和 0207封裝的精密薄膜MELF電阻
- Microchip推出新款交鑰匙電容式觸摸控制器產(chǎn)品 MTCH2120
技術(shù)文章更多>>
- 貿(mào)澤電子持續(xù)擴(kuò)充工業(yè)自動(dòng)化產(chǎn)品陣容
- 更高精度、更低噪音 GMCC美芝電子膨脹閥以創(chuàng)新?lián)屨夹袠I(yè)“制高點(diǎn)”
- 本立租完成近億元估值Pre-A輪融資,打造AI賦能的租賃服務(wù)平臺(tái)
- 中微公司成功從美國(guó)國(guó)防部中國(guó)軍事企業(yè)清單中移除
- 華邦電子白皮書:滿足歐盟無線電設(shè)備指令(RED)信息安全標(biāo)準(zhǔn)
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
晶體諧振器
晶體振蕩器
晶閘管
精密電阻
精密工具
景佑能源
聚合物電容
君耀電子
開發(fā)工具
開關(guān)
開關(guān)電源
開關(guān)電源電路
開關(guān)二極管
開關(guān)三極管
科通
可變電容
可調(diào)電感
可控硅
空心線圈
控制變壓器
控制模塊
藍(lán)牙
藍(lán)牙4.0
藍(lán)牙模塊
浪涌保護(hù)器
雷度電子
鋰電池
利爾達(dá)
連接器
流量單位