節點BusOff恢複過程分析與測試
發布時間:2020-06-11 責任編輯:lina
【導讀】總線關閉(bus off)是CAN節點比較重要的錯誤處理機製。那麼,在總線關閉狀態下,CAN節點的恢複流程是怎樣的?又該如何理解節點恢複流程的“快恢複”和“慢恢複”機製?本文將為大家詳細分析總線關閉及恢複的機製和原理。
總線關閉(bus off)是CAN節點比較重要的錯誤處理機製。那麼,在總線關閉狀態下,CAN節點的恢複流程是怎樣的?又該如何理解節點恢複流程的“快恢複”和“慢恢複”機製?本文將為大家詳細分析總線關閉及恢複的機製和原理。
故障界定與總線關閉狀態
為了避免某個設備因為自身原因(例如硬件損壞)導致無法正確收發報文而不斷的破壞總線的數據幀,從而影響其它正常節點通信,CAN網絡具有嚴格的錯誤診斷功能,CAN通用規範中規定每個CANkongzhiqizhongyouyigefasongcuowujishuqiheyigejieshoucuowujishuqi。genjujishuzhibutong,jiedianhuichuyubutongdecuowuzhuangtai,binggenjujishuzhidebianhuajinxingzhuangtaizhuanhuan,zhuangtaizhuanhuanruxiatusuoshi。

圖1節點狀態轉換圖情形1
以yi上shang三san種zhong錯cuo誤wu狀zhuang態tai表biao示shi發fa生sheng故gu障zhang的de嚴yan重zhong程cheng度du,總zong線xian關guan閉bi是shi節jie點dian最zui嚴yan重zhong的de錯cuo誤wu狀zhuang態tai。並bing且qie,節jie點dian在zai不bu同tong的de狀zhuang態tai下xia具ju有you不bu同tong的de特te性xing,在zai總zong線xian關guan閉bi狀zhuang態tai下xia,節jie點dian不bu能neng發fa送song報bao文wen或huo應ying答da總zong線xian上shang的de報bao文wen,也ye就jiu意yi味wei著zhe不bu能neng再zai對dui總zong線xian有you任ren何he影ying響xiang。
zhuangtaitiaozhuanhecuowujishudeguizeshidejiedianzaifashengtongxinguzhangshiyoulejiaohaodeziwocuowuchulihehuifujizhi,congyizhongjiaoyanzhongdecuowuzhuangtaitiaozhuandaolingyizhongyanzhongxingxiangduijiaodidezhuangtai,benzhishangjiushiyizhonghuifuguocheng。tu1所呈現的轉換過程是CAN通用規範所要求的,我們從設備供應商買回來的CAN控製器已經把這些功能固化在矽片之中。
在通信過程中,錯誤主動和錯誤被動兩種狀態下節點的恢複過程一般不需要MCU進行額外的編程處理,直接使用CAN控製器固有功能即可。但對於總線關閉狀態,往往不直接使用CAN控製器固有的恢複過程,而是對其進行編程控製,以實現“快恢複”和“慢恢複”機製。
注:
由於篇幅有限,關於錯誤計數的詳細規則以及各狀態下節點的具體特性不在本文進行討論,讀者可以查閱CAN的相關協議規範。
本文的“CAN控製器”是指已經實現了CAN通用協議物理層和數據鏈路層所要求的功能和特性的器件,如SJA1000;而“節點”是指把CAN控製器與MCU、收發器等相關器件進行整合開發出來的具有一定功能的CAN節點。
為什麼需要對總線關閉狀態的節點實現“快恢複”和“慢恢複”策略?
當節點進入總線關閉狀態後,如果MCU僅是開啟自動恢複功能,CAN控製器在檢測到128次11個連續的隱性位後即可恢複通信,在實際的CAN通信總線中,這一條件是很容易達到的。以125K的波特率為例,128*11*(1/125000)= 0.011264s。這意味著如果節點所在的CAN總線的幀間隔時間大於0.011264s,節jie點dian在zai總zong線xian空kong閑xian時shi間jian內nei便bian可ke輕qing易yi恢hui複fu通tong信xin。我wo們men已yi經jing知zhi道dao,當dang進jin入ru總zong線xian關guan閉bi狀zhuang態tai時shi,節jie點dian已yi經jing發fa生sheng了le嚴yan重zhong的de錯cuo誤wu,處chu於yu不bu可ke信xin狀zhuang態tai,如ru果guo迅xun速su恢hui複fu參can與yu總zong線xian通tong信xin,具ju有you較jiao高gao的de風feng險xian,因yin此ci,在zai實shi際ji的de應ying用yong中zhong,往wang往wang會hui通tong過guoMCU對CAN控kong製zhi器qi總zong線xian關guan閉bi狀zhuang態tai的de恢hui複fu過guo程cheng進jin行xing編bian程cheng處chu理li,以yi控kong製zhi節jie點dian從cong總zong線xian關guan閉bi狀zhuang態tai恢hui複fu到dao錯cuo誤wu主zhu動dong狀zhuang態tai的de等deng待dai時shi間jian,達da到dao既ji提ti高gao靈ling活huo性xing又you保bao證zheng節jie點dian在zai功gong能neng上shang的de快kuai速su響xiang應ying性xing的de目mu的de。具ju體ti包bao括kuo“快恢複”和“慢恢複”策略,兩種策略一般同時應用。
通過以上的討論,我們可以知道,節點進入總線關閉狀態後,存在以下幾種恢複情況:
MCU僅開啟CAN控製器的自動恢複功能,節點隻需檢測到128次11個連續的隱性位便可以恢複通信,恢複過程如圖1所示。
MCU沒有開啟CAN控製器的自動恢複功能,也不主動幹預總線關閉錯誤,節點將一直無法“自動”恢複總線通信,隻能通過重新上電的方式使節點恢複, 恢複過程如圖2所示。
說明: E:CAN分析儀產品分類CANDT微信文章CANScope節點BusOff恢複過程分析與測試圖2.jpg

圖2 節點狀態轉換圖情形2
MCU對CAN控製器的恢複過程進行編程處理,這時,節點的恢複行為由具體的編程邏輯決定,各廠家普遍采用了先“快恢複”後“慢恢複”的恢複策略,恢複過程如圖3所示。
說明: E:CAN分析儀產品分類CANDT微信文章CANScope節點BusOff恢複過程分析與測試圖3.jpg

圖3 節點狀態轉換圖情形3
MCU如何實現“快恢複”和“慢恢複”?
MCU編程實現總線關閉“快恢複”和“慢恢複”的一般過程可用以下流程圖描述:
說明: E:CAN分析儀產品分類CANDT微信文章CANScope節點BusOff恢複過程分析與測試圖4.jpg

圖4 MCU實現總線關閉恢複流程
節點以正常發送模式發送報文的過程中,如果出現了發送錯誤,發送錯誤計數會增加,隻要發送錯誤計數沒有超過255, CAN控製器便會自動重發報文,如果出現多次發送錯誤,使發送錯誤計數累加超過255,則節點跳轉為總線關閉狀態。MCU能夠第一時間知道節點進入了總線關閉狀態(例如在錯誤中斷處理邏輯中查詢狀態寄存器的相應位),這時MCU控製CAN控製器進入“快恢複”過程,即控製CAN控製器停止報文收發,並進行等待,計時達到需要的時間T1(如100ms)後,MCU重新啟動恢複CAN控製器參與總線通信,這樣便完成了一次“快恢複”過程。
節點每進入一次“快恢複”過程時,MCU會對此進行計數,當節點“快恢複”計數達到設定的值N(如5次),則後續再次進入總線關閉狀態時MCU把恢複總線通信的等待時間T2進行延長(如1000ms),這樣便實現了“慢恢複”過程。“快恢複”和“慢恢複”過程的主要區別就在於恢複節點參與總線通信的等待時間的不同。
通過MCU對於總線關閉後的恢複行為進行編程控製,實際上是對CAN控製器的錯誤管理和恢複機製進行了補充,使得總線關閉狀態後的恢複過程更加靈活,更能適應實際應用的需要。對於 “快恢複”和“慢恢複”的等待時間,以及“快恢複”計數多少次後進入“慢恢複”過程,不同廠家可根據具體的需求進行編程實現。
實測總線關閉恢複過程
通過廣州致遠電子有限公司的CAN總線分析儀的流量分析功能,可以很方便分析總線關閉後節點的恢複過程及測試“快恢複”和“慢恢複”的恢複時間。
第一步,連接DUT但先不要上電。按以下配置,使能接收幹擾功能,並開啟報文讀取功能。

圖5 功能設置
第二步,給DUT上電,並采集一段時間報文,停止采集後使用流量分析功能進行分析。

圖6 采集報文並進行流量分析
第三步,鼠標放置於波形“團”(本文把包含多幀密集幀的波形稱為波形“團”)之間讀取恢複時間。

圖7 讀取恢複時間
至此,我們便可以得出結論:該DUT對總線關閉的恢複過程進行了編程控製,采用了先“快恢複”後“慢恢複”的恢複機製,節點進入總線關閉狀態後,進行一次“快恢複”過程,後續進行“慢恢複”過程,兩個恢複過程的恢複時間分別為27.5ms和209.5ms。
那麼,我們該如何根據所得波形理解該DUT進入總線關閉狀態及恢複通信的整個過程呢?
把第一個波形“團”放大得到下圖:

圖8 放大波形“團”觀察
可以清晰的看到,波形“團”中包含共32幀CAN報文。把其餘各波形“團”放大後也都是包含32幀,這裏不再把詳細的圖片貼出來。
DUT上電後,初始發送和接收錯誤計數都為0。由於在測試時配置了接收幹擾功能,當DUT開始發送報文後,每一幀報文都受到CAN總線分析儀的幹擾而出現發送錯誤,第一次發送時發送錯誤計數加8,並自動重發,第二次發送時錯誤計數再加8,直到發送了32次後,發送錯誤計數大於255,根據圖3的錯誤狀態的轉換規則,這時DUT跳轉為總線關閉狀態,MCU控製進入“快恢複”過程同時對“快恢複”次數進行計數,並等待約27ms後,MCU控製DUT從總線關閉狀態恢複為錯誤主動狀態,由MCU繼續啟動發送,由於仍然受CAN總線分析儀的持續幹擾,發送32幀後再次進入總線關閉狀態,再次執行“快恢複”或“慢恢複”過程,以此類推。
根據流量分析的結果可知,該DUT進入“快恢複”的計數達到1次後便執行“慢恢複”過程,“慢恢複”等待時間約為209ms。
注:
幹擾的設置可以根據需要設置其他的參數,隻要保證能對DUT發送的幀進行幹擾使其出現發送錯誤即可。
為了分析完整的總線關閉恢複過程,建議DUT和CAN總線分析儀連接好後,先開啟“報文讀取”和“接收幹擾”功能後再上電DUT。因為這樣能確保DUT的接收錯誤計數和發送錯誤計數的初始計數都為0。
需要對DUT進行連續的幹擾,否則DUT恢複後成功發送了報文,“快恢複”次數的計數會遞減,這不利於分析DUT總線關閉後的整個恢複行為。
總線關閉後節點的“恢複”是指恢複參與總線的通信,但並不意味著恢複後一定能成功發送或接收報文。如上述案例,DUT恢複通信後由於仍然受CAN總線分析儀的幹擾,導致報文發送再次失敗。
總結:
在總線關閉狀態下,“快恢複”和“慢恢複”不是CAN控製器固有的功能,而是通過MCU的編程邏輯實現的恢複機製,是總線關閉狀態下恢複過程的補充,使恢複過程更具有靈活性。
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 解鎖算力芯片的“速度密碼”:SmartDV全棧IP方案深度解析
- 1200餘家企業齊聚深圳,CITE2026打造電子信息產業創新盛宴
- 掌握 Gemini 3.1 Pro 參數調優的藝術
- 築牢安全防線:電池擠壓試驗機如何為新能源產業護航?
- Grok 4.1 API 實戰:構建 X 平台實時輿情監控 Agent
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
光電顯示
光繼電器
光控可控矽
光敏電阻
光敏器件
光敏三極管
光收發器
光通訊器件
光纖連接器
軌道交通
國防航空
過流保護器
過熱保護
過壓保護
焊接設備
焊錫焊膏
恒溫振蕩器
恒壓變壓器
恒壓穩壓器
紅外收發器
紅外線加熱
厚膜電阻
互連技術
滑動分壓器
滑動開關
輝曄
混合保護器
混合動力汽車
混頻器
霍爾傳感器




