新聞中心

        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總線錯誤

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 桦甸市| 连城县| 上思县| 德清县| 双江| 宜君县| 时尚| 河源市| 锡林郭勒盟| 长治县| 丽江市| 湖南省| 乡宁县| 双鸭山市| 仁怀市| 赤峰市| 探索| 多伦县| 新平| 新闻| 景东| 通城县| 定陶县| 克山县| 吉安县| 上虞市| 宣威市| 永顺县| 湖州市| 扶绥县| 铜山县| 原阳县| 天水市| 泽库县| 孟州市| 苍溪县| 巴林右旗| 青川县| 英德市| 垫江县| 景洪市|