CAN總線(xiàn)通信解密方法
在海思向客戶(hù)LonWorks現場(chǎng)總線(xiàn)技術(shù)服務(wù)中,常常會(huì )遇到LonWorks網(wǎng)絡(luò )與CAN總線(xiàn)建立無(wú)縫連接的情況。如果無(wú)法從CAN設備廠(chǎng)商取得CAN總線(xiàn)通信協(xié)議,如何破解CAN總線(xiàn)協(xié)議是必須要解決的課題。本文介紹一種CAN總線(xiàn)解碼方法,供大家學(xué)習參考。
本文引用地址:http://dyxdggzs.com/article/201609/303336.htm采用示波器偵測串口總線(xiàn)的通信是比較常用的一種解碼技術(shù)。以Pico示波器為例,Pico示波器具有串行解碼的功能,能夠對CAN、FlexRay、 I2C、I2S、SPI、LIN或UART等串行總線(xiàn)進(jìn)行解碼。Pico示波器比較適合做串行解碼,因為它們的深度存儲器可以讓軟件采集較長(cháng)時(shí)間、不間斷的數據,尤其是6000系列能夠在幾秒內采集數千個(gè)數據幀存入到512M的樣本存儲器。下面將介紹如何用一個(gè)款Pico示波器進(jìn)行CAN總線(xiàn)數據解碼。
一、CAN總線(xiàn)解碼概述
1、 CAN總線(xiàn)概念
數據通信時(shí),物理線(xiàn)路上傳輸的信號是由一系列高低電平組成的,這些高低電平攜帶了我們所需要的信息,在數據接收端,我們需要將這些物理電平按照原始的編碼規則進(jìn)行解析,從而得到實(shí)際的物理信號。
CAN(控制器區域網(wǎng)絡(luò ))總線(xiàn)是一種在汽車(chē)和工業(yè)機械中使用的串行協(xié)議,允許微控制器相互通訊。該標準最初由 Robert Bosch GmbH 于 1983 年制定。它使用雙絞線(xiàn)上傳輸差分信號,分別為CAN高(CAN H )和CAN低(CAN L),當線(xiàn)路受到共模干擾之后,信號差值不變,信號依然能夠正確被解析。
2 CAN總線(xiàn)上傳輸的電平特點(diǎn)
CAN 總線(xiàn)上發(fā)布了ISO11898和ISO11519兩個(gè)通信標準,分別對應高速CAN和容錯CAN。此兩個(gè)標準差分電平的特性不同。本文主要介紹如何用Pico示波器進(jìn)行ISO11898標準的CAN總線(xiàn)解碼。

CAN高電平大概為3.5V左右,CAN低電平大概為1.5V左右,CAN差分電平大概在2V左右。一般情況下,我們可以從三種CAN總線(xiàn)波形上進(jìn)行解碼:
1)從CAN-H總線(xiàn)上傳輸的電平,閾值設置為3V左右即可
2)從CAN-L總線(xiàn)上傳輸的電平,閾值設置為1.6V左右即可
3)從差分波形(CANH-CANL)上進(jìn)行解碼,閾值設置為1.5左右即可。從差分波形上解碼更加準確,因為差分波形濾除了線(xiàn)路上的共模干擾信號。
但是很遺憾,目前PicoScope6軟件的串行解碼功能只能從CANH或CANL波形上進(jìn)行解碼,暫時(shí)還無(wú)法實(shí)現從差分波形上進(jìn)行解碼。
二、PicoScope6 串行解碼功能

三、解碼設置
Pico的任何一臺示波器都具有串行解碼的功能,不同系列的區別在于示波器硬件參數高時(shí),采集到的波形更加平滑,噪聲小。在進(jìn)行解碼時(shí),我們可以只從CAN高波形上進(jìn)行解碼,或只從CAN低波形上進(jìn)行解碼,或者同時(shí)對CANH和CANL波形進(jìn)行解碼。
3.1 僅從CAN低波形上進(jìn)行解碼設置
1將CAN網(wǎng)絡(luò )中的CANL端接入到示波器A通道(示波器通道任意選擇)探頭的正極,CAN網(wǎng)絡(luò )的GND連接探頭的負極。
2 點(diǎn)擊PicoScope6工具菜單,選擇串行解碼功能。彈出串行解碼設置窗口。

1)設置A通道協(xié)議:CAN Low
2)設置CAN低判斷閾值,如1.6V。該閾值用于判斷CAN-L電平是“0”或“1”.
3)設置總線(xiàn)波特率,即目前測試網(wǎng)絡(luò )的波特率,例如500K波特。
4)設置顯示模式,選擇“在視圖中”或“在窗口中”查看CAN數據。
In View: 在視圖中,在波形顯示窗口查看解碼之后的CAN數據。
In Window: 在窗口中,在表格中查看解碼之后的CAN數據。
2、僅從CAN高波形上進(jìn)行解碼設置
1)將CAN網(wǎng)絡(luò )中的CANH端接入到示波器A通道(示波器通道任意選擇)探頭的正極,CAN網(wǎng)絡(luò )的GND連接探頭的負極。
2 )點(diǎn)擊PicoScope6工具菜單,選擇串行解碼功能。彈出串行解碼設置窗口。

設置步驟如下:
1)設置A通道協(xié)議:CAN High
2)設置CAN低判斷閾值,如3V。該閾值用于判斷CAN-L電平是“0”或“1”.
3)設置總線(xiàn)波特率,即目前測試網(wǎng)絡(luò )的波特率,例如500K波特。
4)設置顯示模式,選擇“在視圖中”或“在窗口中”查看CAN數據。
In View: 在視圖中,在波形顯示窗口查看解碼之后的CAN數據。
In Window: 在窗口中,在表格中查看解碼之后的CAN數據。
3、從CAN高波形和CAN低波形上同時(shí)解碼
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使用的測試通道可以自由選擇。只是在進(jìn)行解碼設置時(shí),對應正確即可。
3 )點(diǎn)擊PicoScope6工具菜單,選擇串行解碼功能。彈出串行解碼設置窗口。
在一個(gè)窗口分別設置CANH和CANL的解碼設置,具體參考3.1和3.2章節的設置。如下圖所示:

四、使用注意事項
Pico示波器進(jìn)行串行解碼有一個(gè)技術(shù)難點(diǎn):Pico示波器的解碼以完整的一個(gè)CAN數據幀為單位,即只有采集到完整的一幀CAN報文,才能將該數據幀完整的解析出來(lái)。
1) 采集CANH和CANL波形時(shí),注意時(shí)基的設置。即保證每一個(gè)波形頁(yè)面至少能夠采集到一個(gè)完整的數據幀,此時(shí)才能夠解析出CAN報文。對于CAN總線(xiàn)來(lái)說(shuō),時(shí)基設置在1ms/div或者大于1ms/div即可。
評論