免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理。
節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(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)致無(wú)法正確收發(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ù)過(guò)程。圖1所呈現(xiàn)的轉(zhuǎn)換過(guò)程是CAN通用規(guī)范所要求的,我們從設(shè)備供應(yīng)商買(mǎi)回來(lái)的CAN控制器已經(jīng)把這些功能固化在硅片之中。
在通信過(guò)程中,錯(cuò)誤主動(dòng)和錯(cuò)誤被動(dòng)兩種狀態(tài)下節(jié)點(diǎn)的恢復(fù)過(guò)程一般不需要MCU進(jìn)行額外的編程處理,直接使用CAN控制器固有功能即可。但對(duì)于總線關(guān)閉狀態(tài),往往不直接使用CAN控制器固有的恢復(fù)過(guò)程,而是對(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)行整合開(kāi)發(fā)出來(lái)的具有一定功能的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僅是開(kāi)啟自動(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ì)通過(guò)MCU對(duì)CAN控制器總線關(guān)閉狀態(tài)的恢復(fù)過(guò)程進(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)用。
通過(guò)以上的討論,我們可以知道,節(jié)點(diǎn)進(jìn)入總線關(guān)閉狀態(tài)后,存在以下幾種恢復(fù)情況:
MCU僅開(kāi)啟CAN控制器的自動(dòng)恢復(fù)功能,節(jié)點(diǎn)只需檢測(cè)到128次11個(gè)連續(xù)的隱性位便可以恢復(fù)通信,恢復(fù)過(guò)程如圖1所示。
MCU沒(méi)有開(kāi)啟CAN控制器的自動(dòng)恢復(fù)功能,也不主動(dòng)干預(yù)總線關(guān)閉錯(cuò)誤,節(jié)點(diǎn)將一直無(wú)法“自動(dòng)”恢復(fù)總線通信,只能通過(guò)重新上電的方式使節(jié)點(diǎn)恢復(fù), 恢復(fù)過(guò)程如圖2所示。
說(shuō)明: E:CAN分析儀產(chǎn)品分類(lèi)CANDT微信文章CANScope節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(cè)試圖2.jpg
圖2 節(jié)點(diǎn)狀態(tài)轉(zhuǎn)換圖情形2
MCU對(duì)CAN控制器的恢復(fù)過(guò)程進(jìn)行編程處理,這時(shí),節(jié)點(diǎn)的恢復(fù)行為由具體的編程邏輯決定,各廠家普遍采用了先“快恢復(fù)”后“慢恢復(fù)”的恢復(fù)策略,恢復(fù)過(guò)程如圖3所示。
說(shuō)明: E:CAN分析儀產(chǎn)品分類(lèi)CANDT微信文章CANScope節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(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ù)”的一般過(guò)程可用以下流程圖描述:
說(shuō)明: E:CAN分析儀產(chǎn)品分類(lèi)CANDT微信文章CANScope節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(cè)試圖4.jpg
圖4 MCU實(shí)現(xiàn)總線關(guān)閉恢復(fù)流程
節(jié)點(diǎn)以正常發(fā)送模式發(fā)送報(bào)文的過(guò)程中,如果出現(xiàn)了發(fā)送錯(cuò)誤,發(fā)送錯(cuò)誤計(jì)數(shù)會(huì)增加,只要發(fā)送錯(cuò)誤計(jì)數(shù)沒(méi)有超過(guò)255, CAN控制器便會(huì)自動(dòng)重發(fā)報(bào)文,如果出現(xiàn)多次發(fā)送錯(cuò)誤,使發(fā)送錯(cuò)誤計(jì)數(shù)累加超過(guò)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ù)”過(guò)程,即控制CAN控制器停止報(bào)文收發(fā),并進(jìn)行等待,計(jì)時(shí)達(dá)到需要的時(shí)間T1(如100ms)后,MCU重新啟動(dòng)恢復(fù)CAN控制器參與總線通信,這樣便完成了一次“快恢復(fù)”過(guò)程。
節(jié)點(diǎn)每進(jìn)入一次“快恢復(fù)”過(guò)程時(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ù)”過(guò)程。“快恢復(fù)”和“慢恢復(fù)”過(guò)程的主要區(qū)別就在于恢復(fù)節(jié)點(diǎn)參與總線通信的等待時(shí)間的不同。
通過(guò)MCU對(duì)于總線關(guān)閉后的恢復(fù)行為進(jìn)行編程控制,實(shí)際上是對(duì)CAN控制器的錯(cuò)誤管理和恢復(fù)機(jī)制進(jìn)行了補(bǔ)充,使得總線關(guān)閉狀態(tài)后的恢復(fù)過(guò)程更加靈活,更能適應(yīng)實(shí)際應(yīng)用的需要。對(duì)于 “快恢復(fù)”和“慢恢復(fù)”的等待時(shí)間,以及“快恢復(fù)”計(jì)數(shù)多少次后進(jìn)入“慢恢復(fù)”過(guò)程,不同廠家可根據(jù)具體的需求進(jìn)行編程實(shí)現(xiàn)。
實(shí)測(cè)總線關(guān)閉恢復(fù)過(guò)程
通過(guò)廣州致遠(yuǎn)電子有限公司的CAN總線分析儀的流量分析功能,可以很方便分析總線關(guān)閉后節(jié)點(diǎn)的恢復(fù)過(guò)程及測(cè)試“快恢復(fù)”和“慢恢復(fù)”的恢復(fù)時(shí)間。
第一步,連接DUT但先不要上電。按以下配置,使能接收干擾功能,并開(kāi)啟報(bào)文讀取功能。
圖5 功能設(shè)置
第二步,給DUT上電,并采集一段時(shí)間報(bào)文,停止采集后使用流量分析功能進(jìn)行分析。
圖6 采集報(bào)文并進(jìn)行流量分析
第三步,鼠標(biāo)放置于波形“團(tuán)”(本文把包含多幀密集幀的波形稱(chēng)為波形“團(tuán)”)之間讀取恢復(fù)時(shí)間。
圖7 讀取恢復(fù)時(shí)間
至此,我們便可以得出結(jié)論:該DUT對(duì)總線關(guān)閉的恢復(fù)過(guò)程進(jìn)行了編程控制,采用了先“快恢復(fù)”后“慢恢復(fù)”的恢復(fù)機(jī)制,節(jié)點(diǎn)進(jìn)入總線關(guān)閉狀態(tài)后,進(jìn)行一次“快恢復(fù)”過(guò)程,后續(xù)進(jìn)行“慢恢復(fù)”過(guò)程,兩個(gè)恢復(fù)過(guò)程的恢復(fù)時(shí)間分別為27.5ms和209.5ms。
那么,我們?cè)撊绾胃鶕?jù)所得波形理解該DUT進(jìn)入總線關(guān)閉狀態(tài)及恢復(fù)通信的整個(gè)過(guò)程呢?
把第一個(gè)波形“團(tuán)”放大得到下圖:
圖8 放大波形“團(tuán)”觀察
可以清晰的看到,波形“團(tuán)”中包含共32幀CAN報(bào)文。把其余各波形“團(tuán)”放大后也都是包含32幀,這里不再把詳細(xì)的圖片貼出來(lái)。
DUT上電后,初始發(fā)送和接收錯(cuò)誤計(jì)數(shù)都為0。由于在測(cè)試時(shí)配置了接收干擾功能,當(dāng)DUT開(kāi)始發(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ù)”過(guò)程同時(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ù)”過(guò)程,以此類(lèi)推。
根據(jù)流量分析的結(jié)果可知,該DUT進(jìn)入“快恢復(fù)”的計(jì)數(shù)達(dá)到1次后便執(zhí)行“慢恢復(fù)”過(guò)程,“慢恢復(fù)”等待時(shí)間約為209ms。
注:
干擾的設(shè)置可以根據(jù)需要設(shè)置其他的參數(shù),只要保證能對(duì)DUT發(fā)送的幀進(jìn)行干擾使其出現(xiàn)發(fā)送錯(cuò)誤即可。
為了分析完整的總線關(guān)閉恢復(fù)過(guò)程,建議DUT和CAN總線分析儀連接好后,先開(kāi)啟“報(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控制器固有的功能,而是通過(guò)MCU的編程邏輯實(shí)現(xiàn)的恢復(fù)機(jī)制,是總線關(guān)閉狀態(tài)下恢復(fù)過(guò)程的補(bǔ)充,使恢復(fù)過(guò)程更具有靈活性。
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理。
特別推薦
- 是否存在有關(guān) PCB 走線電感的經(jīng)驗(yàn)法則?
- 一文看懂電壓轉(zhuǎn)換的級(jí)聯(lián)和混合概念
- 第12講:三菱電機(jī)高壓SiC芯片技術(shù)
- 準(zhǔn) Z 源逆變器的設(shè)計(jì)
- 貿(mào)澤電子持續(xù)擴(kuò)充工業(yè)自動(dòng)化產(chǎn)品陣容
- 低功耗嵌入式設(shè)計(jì)簡(jiǎn)介
- 如何通過(guò)基本描述找到需要的電容?
技術(shù)文章更多>>
- 意法半導(dǎo)體公布2024年第四季度及全年財(cái)報(bào)和電話會(huì)議時(shí)間安排
- IGBT 模塊在頗具挑戰(zhàn)性的逆變器應(yīng)用中提供更高能效
- 看完CES看CITE 2025開(kāi)年巨獻(xiàn)“圳”聚創(chuàng)新
- 傳感器和轉(zhuǎn)換器的設(shè)計(jì)應(yīng)用
- 原來(lái)為硅MOSFET設(shè)計(jì)的DC-DC控制器能否用來(lái)驅(qū)動(dòng)GaNFET?
技術(shù)白皮書(shū)下載更多>>
- 車(chē)規(guī)與基于V2X的車(chē)輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車(chē)安全隔離的新挑戰(zhàn)
- 汽車(chē)模塊拋負(fù)載的解決方案
- 車(chē)用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門(mén)搜索
圖像傳感器
陀螺傳感器
萬(wàn)用表
萬(wàn)用表使用
網(wǎng)絡(luò)電容
微波
微波功率管
微波開(kāi)關(guān)
微波連接器
微波器件
微波三極管
微波振蕩器
微電機(jī)
微調(diào)電容
微動(dòng)開(kāi)關(guān)
微蜂窩
位置傳感器
溫度保險(xiǎn)絲
溫度傳感器
溫控開(kāi)關(guān)
溫控可控硅
聞泰
穩(wěn)壓電源
穩(wěn)壓二極管
穩(wěn)壓管
無(wú)焊端子
無(wú)線充電
無(wú)線監(jiān)控
無(wú)源濾波器
五金工具