新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > CAN總線通信解密方法

        CAN總線通信解密方法

        作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

        在海思向客戶LonWorks現(xiàn)場總線技術(shù)服務(wù)中,常常會遇到LonWorks網(wǎng)絡(luò)與建立無縫連接的情況。如果無法從CAN設(shè)備廠商取得通信協(xié)議,如何破解協(xié)議是必須要解決的課題。本文介紹一種CAN總線解碼方法,供大家學習參考。

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

        采用示波器偵測串口總線的通信是比較常用的一種解碼技術(shù)。以Pico示波器為例,Pico示波器具有串行解碼的功能,能夠?qū)AN、FlexRay、 I2C、I2S、SPI、LIN或UART等串行總線進行解碼。Pico示波器比較適合做串行解碼,因為它們的深度存儲器可以讓軟件采集較長時間、不間斷的數(shù)據(jù),尤其是6000系列能夠在幾秒內(nèi)采集數(shù)千個數(shù)據(jù)幀存入到512M的樣本存儲器。下面將介紹如何用一個款Pico示波器進行CAN總線數(shù)據(jù)解碼。

        一、CAN總線解碼概述

        1、 CAN總線概念

        數(shù)據(jù)通信時,物理線路上傳輸?shù)男盘柺怯梢幌盗懈叩碗娖浇M成的,這些高低電平攜帶了我們所需要的信息,在數(shù)據(jù)接收端,我們需要將這些物理電平按照原始的編碼規(guī)則進行解析,從而得到實際的物理信號。

        CAN(控制器區(qū)域網(wǎng)絡(luò))總線是一種在汽車和工業(yè)機械中使用的串行協(xié)議,允許微控制器相互通訊。該標準最初由 Robert Bosch GmbH 于 1983 年制定。它使用雙絞線上傳輸差分信號,分別為CAN高(CAN H )和CAN低(CAN L),當線路受到共模干擾之后,信號差值不變,信號依然能夠正確被解析。

        2 CAN總線上傳輸?shù)碾娖教攸c

        CAN 總線上發(fā)布了ISO11898和ISO11519兩個通信標準,分別對應(yīng)高速CAN和容錯CAN。此兩個標準差分電平的特性不同。本文主要介紹如何用Pico示波器進行ISO11898標準的CAN總線解碼。

        CAN高電平大概為3.5V左右,CAN低電平大概為1.5V左右,CAN差分電平大概在2V左右。一般情況下,我們可以從三種CAN總線波形上進行解碼:

        1)從CAN-H總線上傳輸?shù)碾娖剑撝翟O(shè)置為3V左右即可

        2)從CAN-L總線上傳輸?shù)碾娖剑撝翟O(shè)置為1.6V左右即可

        3)從差分波形(CANH-CANL)上進行解碼,閾值設(shè)置為1.5左右即可。從差分波形上解碼更加準確,因為差分波形濾除了線路上的共模干擾信號。

        但是很遺憾,目前PicoScope6軟件的串行解碼功能只能從CANH或CANL波形上進行解碼,暫時還無法實現(xiàn)從差分波形上進行解碼。

        二、PicoScope6 串行解碼功能

        10.jpg

        三、解碼設(shè)置

        Pico的任何一臺示波器都具有串行解碼的功能,不同系列的區(qū)別在于示波器硬件參數(shù)高時,采集到的波形更加平滑,噪聲小。在進行解碼時,我們可以只從CAN高波形上進行解碼,或只從CAN低波形上進行解碼,或者同時對CANH和CANL波形進行解碼。

        3.1 僅從CAN低波形上進行解碼設(shè)置

        1將CAN網(wǎng)絡(luò)中的CANL端接入到示波器A通道(示波器通道任意選擇)探頭的正極,CAN網(wǎng)絡(luò)的GND連接探頭的負極。

        2 點擊PicoScope6工具菜單,選擇串行解碼功能。彈出串行解碼設(shè)置窗口。

        1)設(shè)置A通道協(xié)議:CAN Low

        2)設(shè)置CAN低判斷閾值,如1.6V。該閾值用于判斷CAN-L電平是“0”或“1”.

        3)設(shè)置總線波特率,即目前測試網(wǎng)絡(luò)的波特率,例如500K波特。

        4)設(shè)置顯示模式,選擇“在視圖中”或“在窗口中”查看CAN數(shù)據(jù)。

        In View: 在視圖中,在波形顯示窗口查看解碼之后的CAN數(shù)據(jù)。

        In Window: 在窗口中,在表格中查看解碼之后的CAN數(shù)據(jù)。

        2、僅從CAN高波形上進行解碼設(shè)置

        1)將CAN網(wǎng)絡(luò)中的CANH端接入到示波器A通道(示波器通道任意選擇)探頭的正極,CAN網(wǎng)絡(luò)的GND連接探頭的負極。

        2 )點擊PicoScope6工具菜單,選擇串行解碼功能。彈出串行解碼設(shè)置窗口。

        設(shè)置步驟如下:

        1)設(shè)置A通道協(xié)議:CAN High

        2)設(shè)置CAN低判斷閾值,如3V。該閾值用于判斷CAN-L電平是“0”或“1”.

        3)設(shè)置總線波特率,即目前測試網(wǎng)絡(luò)的波特率,例如500K波特。

        4)設(shè)置顯示模式,選擇“在視圖中”或“在窗口中”查看CAN數(shù)據(jù)。

        In View: 在視圖中,在波形顯示窗口查看解碼之后的CAN數(shù)據(jù)。

        In Window: 在窗口中,在表格中查看解碼之后的CAN數(shù)據(jù)。

        3、從CAN高波形和CAN低波形上同時解碼

        1)將CAN網(wǎng)絡(luò)中的CANH端接入到示波器A通道(示波器通道任意選擇)探頭的正極,CAN網(wǎng)絡(luò)的GND連接探頭的負極。

        2)將CAN網(wǎng)絡(luò)中的CANH端接入到示波器B通道(示波器通道任意選擇)探頭的正極,CAN網(wǎng)絡(luò)的GND連接探頭的負極。

        注意:CANH和CANL使用的測試通道可以自由選擇。只是在進行解碼設(shè)置時,對應(yīng)正確即可。

        3 )點擊PicoScope6工具菜單,選擇串行解碼功能。彈出串行解碼設(shè)置窗口。

        在一個窗口分別設(shè)置CANH和CANL的解碼設(shè)置,具體參考3.1和3.2章節(jié)的設(shè)置。如下圖所示:

        四、使用注意事項

        Pico示波器進行串行解碼有一個技術(shù)難點:Pico示波器的解碼以完整的一個CAN數(shù)據(jù)幀為單位,即只有采集到完整的一幀CAN報文,才能將該數(shù)據(jù)幀完整的解析出來。

        1) 采集CANH和CANL波形時,注意時基的設(shè)置。即保證每一個波形頁面至少能夠采集到一個完整的數(shù)據(jù)幀,此時才能夠解析出CAN報文。對于CAN總線來說,時基設(shè)置在1ms/div或者大于1ms/div即可。


        上一頁 1 2 下一頁

        關(guān)鍵詞: CAN總線 通信解密

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 陵水| 观塘区| 扎鲁特旗| 特克斯县| 滦平县| 金堂县| 霍林郭勒市| 苏尼特左旗| 镇安县| 龙胜| 宁河县| 延边| 磴口县| 法库县| 永清县| 铜川市| 白玉县| 平武县| 南康市| 陈巴尔虎旗| 探索| 皋兰县| 江陵县| 保德县| 措勤县| 尼木县| 赫章县| 乌审旗| 平果县| 裕民县| 宜兴市| 西吉县| 安图县| 卢氏县| 什邡市| 双流县| 千阳县| 广河县| 西盟| 祁连县| 金平|