新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CAN總線錯誤幀長得啥樣?怎么產生?

        CAN總線錯誤幀長得啥樣?怎么產生?

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

        本文引用地址:http://www.104case.com/article/201612/330355.htm

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

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

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

        下面為錯誤幀的定義:

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

        這樣,不同波特率的總線下,少數不同波特率的發送節點總是先退出總線(錯誤計數器達256時,進入總線關閉狀態),保證了其他節點的正常通訊。



        關鍵詞: CAN總線錯誤

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 会泽县| 桐柏县| 无极县| 无为县| 桃园县| 江川县| 方山县| 郁南县| 墨玉县| 武乡县| 辽源市| 宜城市| 博白县| 靖西县| 茌平县| 平阴县| 定远县| 上栗县| 鄂伦春自治旗| 哈巴河县| 安岳县| 荥阳市| 吴江市| 喀喇沁旗| 和田市| 武城县| 彰武县| 余庆县| 饶河县| 平谷区| 松滋市| 奇台县| 蒙山县| 福海县| 鹰潭市| 新郑市| 古蔺县| 麟游县| 观塘区| 游戏| 互助|