CAN作為一款強大的工業總線,其高性能和高可靠性讓其應用特別廣泛。一個小知識:汽車里面各個模塊之間的通訊就是使用CAN來實現的哦。
既然是總線,那當然會有多個設備掛載在CAN上,當一個設備在發送數據的時候,其他設備也沒有在閑著,它們會對接收到的數據格式進行解析,一旦發現有錯誤就會發送錯誤信號到總線上。

那么,如果一個設備確實出現了問題,老是發出錯誤格式的幀(比如波特率有偏差等等)怎么辦呢?嘿嘿,不等大家把它踢出局,它自己就會老老實實的退出總線,不再往總線上發數據了,這個就叫做BUS-OFF,也就是設備離線。
那么MCU如何觸發這個BUS-OFF呢?我們以GD32F303為例來說明。GD32F303的CAN在發送一次錯誤的幀后,會將發送錯誤計數器的值+1,當這個計數值達到255時,就會觸發BUS-OFF機制,退出總線。

這個時候有的小伙伴就會問了,一個設備運行很長時間,總會有發送錯誤的時候吧,如果就這么退出總線了,豈不是太冤了?其實不是的,當設備在發送錯誤計數器的值不等于0的情況下,發送一次正確的幀,這個計數值會-1的。
當一個設備BUS-OFF了,但它自恢復了錯誤狀態,想繼續回到總線上怎么操作呢?有兩種方式:
1、打開GD32F303的離線自動恢復功能,當出現BUS-OFF,MCU在檢測到離線恢復序列(在CAN_RX檢測到128次連續11個位的隱性位 )后就會自動恢復。

2、如果沒打開自動恢復功能,則需要讓CAN進入到初始化模式,再進入正常工作模式即可。
-
單片機
+關注
關注
6059文章
44822瀏覽量
644914 -
嵌入式
+關注
關注
5125文章
19441瀏覽量
313262 -
CAN
+關注
關注
57文章
2837瀏覽量
466294 -
汽車業
+關注
關注
0文章
19瀏覽量
3373
發布評論請先 登錄
相關推薦
將TC397的MCMCAN模塊的canh和canl短接到GND,MCMCAN模塊進入到bus off狀態后無法繼續正常發送的原因?
CYT2B75CAD CAN的bus off狀態如何檢測的?
STM32G4 CAN為什么無法檢測到bus-off狀態?

在總線關閉狀態下手動重啟CAN
請問NUC240 CAN bus遇到bus-off如何自動恢復?
CAN-BUS,CAN-BUS是什么意思
CAN-BUS,CAN-BUS原理是什么?
CAN總線Bus Off原理及恢復解決方案
CAN總線Bus Off原理及CAN總線Bus Off恢復的解決方案
T113核心板CAN通訊bus-off自動恢復

評論