elmo驅(qū)動(dòng)器實(shí)驗(yàn) 12 can的錯(cuò)誤管理
以stm32為例

1.位錯(cuò)誤(Bit Error):
CAN總線上的節(jié)點(diǎn)在發(fā)送數(shù)據(jù)的同時(shí)也在檢測(cè)總線上的電平。如果在仲裁域之外,所發(fā)送的數(shù)據(jù)與節(jié)點(diǎn)監(jiān)測(cè)到的數(shù)據(jù)不一致,則CAN總線產(chǎn)生了位錯(cuò)誤。但是,如果在發(fā)送ACK段或者被動(dòng)錯(cuò)誤標(biāo)志時(shí),節(jié)點(diǎn)檢測(cè)到總線上電平與發(fā)送值不一致,并不判定產(chǎn)生了位錯(cuò)誤。
2.填充規(guī)則錯(cuò)誤(Stuff Error):
在CAN總線傳輸中,報(bào)文的偵起始、仲裁域、控制域、數(shù)據(jù)域以及CRC校驗(yàn)部分只要連續(xù)出現(xiàn)五個(gè)相同的位就需要額外插入一個(gè)相反的位,這是CAN總線位填充的機(jī)制。在CAN總線通信中,如果一個(gè)節(jié)點(diǎn)檢測(cè)到六個(gè)連續(xù)相同的電平就判斷總線出現(xiàn)了位填充錯(cuò)誤。
3.CRC校驗(yàn)(CRCError):
CAN總線的數(shù)據(jù)幀自帶了CRC校驗(yàn),在發(fā)送數(shù)據(jù)的同時(shí)也計(jì)算這一幀的CRC校驗(yàn)碼,將校驗(yàn)碼在數(shù)據(jù)幀的末尾部分發(fā)送。接收節(jié)點(diǎn)接收到數(shù)據(jù)幀后計(jì)算接收到的數(shù)據(jù)幀中數(shù)據(jù)域的CRC碼,并與接收到的CRC校驗(yàn)碼比較以確定接收到的數(shù)據(jù)是否準(zhǔn)確,如果不正確,則出現(xiàn)了 CRC校驗(yàn)錯(cuò)誤。
4.格式錯(cuò)誤(Form Error):
在固定格式的位場(chǎng)中出現(xiàn)了非法位,比如,在本該是隱性位的CRC界定符中出現(xiàn)了顯性電平,則監(jiān)控節(jié)點(diǎn)判斷出現(xiàn)了格式錯(cuò)誤。
5.應(yīng)答錯(cuò)誤(Acknowledgement Error ):
在CAN總線傳輸中,發(fā)送節(jié)點(diǎn)發(fā)送的應(yīng)答場(chǎng)為隱性位,接收節(jié)點(diǎn)需要在應(yīng)答場(chǎng)中向總線發(fā)送顯性位覆蓋隱性位以表示接受完成。如果發(fā)送節(jié)點(diǎn)監(jiān)測(cè)到幀的應(yīng)答場(chǎng)仍然是隱性位,則表明出現(xiàn)了應(yīng)答錯(cuò)誤,沒有節(jié)點(diǎn)接收到數(shù)據(jù),發(fā)送失敗。


參考:
https://www.dzsc.com/data/2017-11-10/113553.html