<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201612/330355.htm

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

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

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

          下面為錯誤幀的定義:

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

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



          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();