新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CAN總線錯(cuò)誤幀長(zhǎng)得啥樣?怎么產(chǎn)生?

CAN總線錯(cuò)誤幀長(zhǎng)得啥樣?怎么產(chǎn)生?

作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
前兩天,幫一個(gè)客戶調(diào)試CAN總線,他的板子發(fā)數(shù),USBCAN接收,但是總是調(diào)試不成。我接上示波器,量一下CANH與CANL之間的波形,發(fā)現(xiàn)他板子不連接USBCAN接口卡時(shí),波形是正確的;可是一旦連接上USBCAN以后,波形就成了以下這個(gè)樣子:

本文引用地址:http://butianyuan.cn/article/201612/330355.htm

就是剛發(fā)了第一個(gè)顯性位之后,就有個(gè)階梯的電壓下降,然后保持幾個(gè)位后,恢復(fù)到隱性電平,過了一會(huì),才有正常的波形出來,可是這個(gè)幀只剩下一半了,肯定不可能發(fā)送成功。

我開始以為是收發(fā)器不匹配,換了幾個(gè)收發(fā)器都是一樣的。突然我想到這個(gè)很像錯(cuò)誤幀。既然有錯(cuò)誤幀,那就說明可能波特率不對(duì)。仔細(xì)看了程序,發(fā)現(xiàn)波特率是12M下算出來的,而晶振卻用了16M。立馬調(diào)整波特率,OK。通訊成功。那個(gè)階梯的波形也沒有了。

所以可以肯定,那就是一個(gè)錯(cuò)誤幀。但為什么有個(gè)階梯呢?答案很簡(jiǎn)單,因?yàn)镃AN通訊的兩個(gè)節(jié)點(diǎn)的收發(fā)器的電源不同,比如,發(fā)送節(jié)點(diǎn)的電壓稍微高點(diǎn),那么其CANH被拉高時(shí)電壓也高,故顯性位輸出時(shí),差分電壓也高。所以當(dāng)發(fā)送節(jié)點(diǎn)發(fā)送的顯性位被接收節(jié)點(diǎn)接收后,接收節(jié)點(diǎn)發(fā)現(xiàn)波特率不匹配,則馬上發(fā)出錯(cuò)誤幀(6個(gè)位的顯性電平),但是接收節(jié)點(diǎn)電壓稍微低,故差分電壓也小一點(diǎn),所以產(chǎn)生了一個(gè)“階梯”。

下面為錯(cuò)誤幀的定義:

錯(cuò)誤幀是節(jié)點(diǎn)收到信息,被認(rèn)為錯(cuò)誤時(shí),而向總線廣播的一種幀。比如前面這個(gè)錯(cuò)誤幀的作用就是:接收節(jié)點(diǎn)通知發(fā)送節(jié)點(diǎn):你的發(fā)送有主動(dòng)錯(cuò)誤,你的發(fā)送錯(cuò)誤計(jì)數(shù)器要加8;同時(shí)接收節(jié)點(diǎn)的接收錯(cuò)誤計(jì)數(shù)器要加1。

這樣,不同波特率的總線下,少數(shù)不同波特率的發(fā)送節(jié)點(diǎn)總是先退出總線(錯(cuò)誤計(jì)數(shù)器達(dá)256時(shí),進(jìn)入總線關(guān)閉狀態(tài)),保證了其他節(jié)點(diǎn)的正常通訊。



關(guān)鍵詞: CAN總線錯(cuò)誤

評(píng)論


技術(shù)專區(qū)

關(guān)閉