前言:
在汽車、工業自動化等領域的廣泛應用中,CAN 總線作為關鍵的通信協議,其穩定性直接關系到系統的可靠運行。然而,實際應用中,CAN 總線常因電磁干擾、硬件故障等出現錯誤,導致節點進入總線關閉狀態,通信中斷。本文將深入探討 CAN 總線自動恢復機制的原理、調優方法及實戰應用,旨在幫助工程師優化系統配置,提升通信可靠性。
軟硬件環境說明
本次實戰應用基于眺望T113-I平臺,Talowe-EVM-T113-i底板引出兩路 CAN 接口,為方便測試,這里將兩個 CAN 口連接(L-L,H-H)進行回傳收發測試。
一、CAN 總線的錯誤處理機制
在 CAN 總線通信中,節點可能會因各種原因(如電磁干擾、硬件故障等)出現錯誤導致無法正確收發報文而不斷的破壞總線的數據幀,從而影響其它正常節點通信。為了應對這種情況,CAN 協議設計了錯誤計數器機制。根據計數值不同,節點會處于不同的錯誤狀態,并根據計數值的變化進行狀態轉換,當節點的發送錯誤計數器TEC達到一定閾值(TEC>255)時,節點會自動進入總線關閉狀態。總線關閉態是節點最嚴重的錯誤狀態,在此狀態節點不能收發報文,以防止其對總線通信造成進一步干擾。
二、bus-off自動恢復機制
為了提高系統的可用性和容錯能力,CAN驅動提供了 restart-ms 參數,用于自動恢復進入總線關閉狀態的 CAN 設備。restart-ms 參數允許用戶設置設備在進入總線關閉狀態后自動重啟的時間間隔。例如,restart-ms 1000 表示設備會在檢測到總線關閉狀態后,等待 1000 毫秒自動嘗試恢復。
自動恢復機制具有以下特點:
- 無限次重試:設備會在每次總線關閉后按照設定的時間間隔嘗試重啟,直到總線恢復正常。
- 自動化處理:無需人工干預,設備可以自行檢測并修復錯誤。
三、restart-ms 參數的調優
在實際應用中,合理設置 restart-ms 參數至關重要,以確保系統在錯誤發生時能夠高效恢復,同時避免對總線造成額外負擔。 3.1根據實時性需求設置恢復時間
- 在高實時性要求的場景(如汽車控制系統),建議將 restart-ms 設置為較短的時間間隔(如 500 - 1000 毫秒),以確保設備快速恢復。
- 在低實時性要求的場景(如工業自動化監控),可以適當延長恢復時間(如 3000 毫秒),以減少頻繁重啟對總線負載的影響。
3.2考慮系統負載
在高負載的 CAN 總線中,建議延長 restart-ms 時間(如 2000 毫秒或更長),以避免頻繁重啟增加總線負載
3.3動態調整與監控
系統運行過程中,通過監控工具定期觀察錯誤恢復情況,并根據實際運行狀況動態調整 restart-ms 參數。
四、實戰案例
全志SDK內CAN自動恢復機制默認未開啟。燒錄眺望提供固件或SDK默認編譯固件。將兩個 CAN 口連接(L-L,H-H)進行回傳收發測試。
編寫一個簡單腳本,awlink1每隔1秒通過cansend向awlink0發送一個CAN消息。
#!/bin/bash
ip link set awlink0 downip link set awlink0 type can bitrate 500000ip link set awlink0 up
ip link set awlink1 downip link set awlink1 type can bitrate 500000ip link set awlink1 up
candump -ta awlink0 >/dev/null 2>&1 &
while true; docansendawlink1123#1122334455667788>/dev/null2>&1 sleep 1done
4.1未開啟自動恢復機制
運行腳本放到后臺去執行后,這里選擇用杜邦線將其中一個CAN口的CANH/CANL 短接。CANH/CANL短路時會導致錯誤從而進入總線關閉(bus-off)狀態不再接收和發送數據。
用ip -details -statistics link show awlinkX 查詢CANX的狀態及情況。
注:根據cansend awlinkX選擇的不同,報錯提示也會有所不同。這里腳本為cansend awlink1,所以報錯為sunxi-awlink awlink@0x1 awlink1: bus-off。
4.2開啟自動恢復機制
修改全志SDK內文件(TinaSDK為sunxi_awlink.c,Longan SDK為sunxi_can.c)開啟自動恢復機制,這里參數為500ms 后恢復,用戶可根據實際需求調整。
priv->awlink.restart_ms = 500;
添加內容如圖所示:
重復4.1測試過程,運行腳本放到后臺去執行后,將其中一個CAN口的CANH/CANL 短接。設備在檢測到進入總線關閉(bus-off)狀態后,等待500ms后自動嘗試重啟。
ip -details -statistics link showawlinkX 查詢到CAN數據繼續正常收發。證明自動恢復機制開啟成功!
五、總結
通過開啟CAN自動恢復機制和合理設置 restart-ms 參數,CAN 設備能夠在總線錯誤發生時自動高效恢復,從而保障系統的可靠性和穩定性。
想了解更多相關技術知識或產品信息,請關注眺望電子公眾號并聯系我們,我們將竭誠為您服務!
-
核心板
+關注
關注
5文章
1107瀏覽量
30629 -
can通訊
+關注
關注
1文章
31瀏覽量
10897 -
全志T113
+關注
關注
0文章
61瀏覽量
569
發布評論請先 登錄
米爾核心板純國產入門級性價比優選T113

STM32G4 CAN為什么無法檢測到bus-off狀態?
請問NUC240 CAN bus遇到bus-off如何自動恢復?
米爾核心板全志T113純國產入門級性價比優選

全志D1和t113對比
100%國產物料認證,米爾入門級國產核心板全志T113-i方案

上新!米爾發布純國產入門級核心板全志T113-i方案

7折購!米爾基于全志T113系列開發板

評論