CAN作為一款強(qiáng)大的工業(yè)總線,其高性能和高可靠性讓其應(yīng)用特別廣泛。一個(gè)小知識(shí):汽車?yán)锩娓鱾€(gè)模塊之間的通訊就是使用CAN來(lái)實(shí)現(xiàn)的哦。
既然是總線,那當(dāng)然會(huì)有多個(gè)設(shè)備掛載在CAN上,當(dāng)一個(gè)設(shè)備在發(fā)送數(shù)據(jù)的時(shí)候,其他設(shè)備也沒(méi)有在閑著,它們會(huì)對(duì)接收到的數(shù)據(jù)格式進(jìn)行解析,一旦發(fā)現(xiàn)有錯(cuò)誤就會(huì)發(fā)送錯(cuò)誤信號(hào)到總線上。
![wKgaomXVVKaAI0QuAACgknMbIOM644.png](https://file1.elecfans.com/web2/M00/C1/50/wKgaomXVVKaAI0QuAACgknMbIOM644.png)
那么,如果一個(gè)設(shè)備確實(shí)出現(xiàn)了問(wèn)題,老是發(fā)出錯(cuò)誤格式的幀(比如波特率有偏差等等)怎么辦呢?嘿嘿,不等大家把它踢出局,它自己就會(huì)老老實(shí)實(shí)的退出總線,不再往總線上發(fā)數(shù)據(jù)了,這個(gè)就叫做BUS-OFF,也就是設(shè)備離線。
那么MCU如何觸發(fā)這個(gè)BUS-OFF呢?我們以GD32F303為例來(lái)說(shuō)明。GD32F303的CAN在發(fā)送一次錯(cuò)誤的幀后,會(huì)將發(fā)送錯(cuò)誤計(jì)數(shù)器的值+1,當(dāng)這個(gè)計(jì)數(shù)值達(dá)到255時(shí),就會(huì)觸發(fā)BUS-OFF機(jī)制,退出總線。
![wKgZomXVVK2AEBVDAADIYhPoyT4535.png](https://file1.elecfans.com/web2/M00/C0/60/wKgZomXVVK2AEBVDAADIYhPoyT4535.png)
這個(gè)時(shí)候有的小伙伴就會(huì)問(wèn)了,一個(gè)設(shè)備運(yùn)行很長(zhǎng)時(shí)間,總會(huì)有發(fā)送錯(cuò)誤的時(shí)候吧,如果就這么退出總線了,豈不是太冤了?其實(shí)不是的,當(dāng)設(shè)備在發(fā)送錯(cuò)誤計(jì)數(shù)器的值不等于0的情況下,發(fā)送一次正確的幀,這個(gè)計(jì)數(shù)值會(huì)-1的。
當(dāng)一個(gè)設(shè)備BUS-OFF了,但它自恢復(fù)了錯(cuò)誤狀態(tài),想繼續(xù)回到總線上怎么操作呢?有兩種方式:
1、打開GD32F303的離線自動(dòng)恢復(fù)功能,當(dāng)出現(xiàn)BUS-OFF,MCU在檢測(cè)到離線恢復(fù)序列(在CAN_RX檢測(cè)到128次連續(xù)11個(gè)位的隱性位 )后就會(huì)自動(dòng)恢復(fù)。
![wKgZomXVVMCAWfRFAADQLBUH5yo438.png](https://file1.elecfans.com/web2/M00/C0/60/wKgZomXVVMCAWfRFAADQLBUH5yo438.png)
2、如果沒(méi)打開自動(dòng)恢復(fù)功能,則需要讓CAN進(jìn)入到初始化模式,再進(jìn)入正常工作模式即可。
-
單片機(jī)
+關(guān)注
關(guān)注
6044文章
44624瀏覽量
638930 -
嵌入式
+關(guān)注
關(guān)注
5095文章
19189瀏覽量
307951 -
CAN
+關(guān)注
關(guān)注
57文章
2773瀏覽量
464462 -
汽車業(yè)
+關(guān)注
關(guān)注
0文章
19瀏覽量
3322
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
CAN控制器總線錯(cuò)誤分析之CAN節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(cè)試
![<b class='flag-5'>CAN</b>控制器總線錯(cuò)誤分析之<b class='flag-5'>CAN</b>節(jié)點(diǎn)BusOff<b class='flag-5'>恢復(fù)</b>過(guò)程分析與測(cè)試](https://file.elecfans.com/web1/M00/C3/52/o4YBAF8o3aeAaMrwAACj8njOo5o307.png)
將TC397的MCMCAN模塊的canh和canl短接到GND,MCMCAN模塊進(jìn)入到bus off狀態(tài)后無(wú)法繼續(xù)正常發(fā)送的原因?
CYT2B75CAD CAN的bus off狀態(tài)如何檢測(cè)的?
STM32F03進(jìn)入CAN的BUS OFF時(shí)間能不能縮短?
![](https://file1.elecfans.com/web2/M00/C1/79/wKgaomXWt6-AdaMFAAtXt4Yy-v0973.png)
評(píng)論