?
如何用Pico示波器進行CAN總線解碼分析
廣州虹科電子科技有限公司周翠
Pico示波器具有串行解碼的功能,能夠對CAN、FlexRay、I2C、I2S、SPI、LIN或UART等串行總線進行解碼。Pico示波器比較適合做串行解碼,因為它們的深度存儲器可以讓軟件采集較長時間、不間斷的數據,尤其是6000系列能夠在幾秒內采集數千個數據幀存入到512M的樣本存儲器。下面將介紹如何用一款Pico示波器進行CAN總線數據解碼。
1關于CAN總線解碼
1.1什么是CAN總線?
數據通信時,物理線路上傳輸的信號是由一系列高低電平組成的,這些高低電平攜帶了我們所需要的信息,在數據接收端,我們需要將這些物理電平按照原始的編碼規(guī)則進行解析,從而得到實際的物理信號。
CAN(控制器區(qū)域網絡)總線是一種在汽車和工業(yè)機械中使用的串行協(xié)議,允許微控制器相互通信。該標準最初由 Robert Bosch GmbH 于 1983 年制定。它使用雙絞線傳輸差分信號,分別為CAN高(CAN_H )和CAN低(CAN_L),當線路受到共模干擾之后,信號差值不變,信號依然能夠正確被解析。
1.2CAN總線上傳輸的電平特點
CAN總線上發(fā)布了ISO11898和ISO11519兩個通信標準,分別對應高速CAN和容錯CAN。此兩個標準差分電平的特性不同。本文主要介紹如何用Pico示波器進行ISO11898標準的CAN總線解碼。
表 1
圖 1
CAN高電平大概為3.5 V左右,CAN低電平大概為1.5 V左右,CAN差分電平大概在2 V左右。一般情況下,我們可以從三種CAN總線波形上進行解碼:
① 從CAN_H總線上傳輸的電平,閾值設置為3 V左右即可。
② 從CAN_L總線上傳輸的電平,閾值設置為1.6 V左右即可。
③ 從差分波形(CANH_CANL)上進行解碼,閾值設置為1.5 V左右即可。從差分波形上解碼更加準確,因為差分波形濾除了線路上的共模干擾信號。
但是很遺憾,目前PicoScope6軟件的串行解碼功能只能從CAN_H或CAN_L波形上進行解碼,暫時還無法實現(xiàn)從差分波形上進行解碼。
2解碼設置
Pico的任何一臺示波器都具有串行解碼的功能,不同系列的區(qū)別在于示波器硬件參數高時,采集到的波形更加平滑,噪聲小。在進行解碼時,我們可以只從CAN高波形上進行解碼,或只從CAN低波形上進行解碼,或者同時對CAN_H和CAN_L波形進行解碼。
2.1僅從CAN低波形上進行解碼設置
將CAN網絡中的CAN_L端接入到示波器A通道(示波器通道任意選擇)探頭的正極,CAN網絡的GND連接探頭的負極。點擊PicoScope6工具菜單,選擇串行解碼功能。彈出串行解碼設置窗口。
圖 2
設置步驟如下:
① 設置A通道協(xié)議:CAN Low。
② 設置CAN低判斷閾值,如1.6 V。該閾值用于判斷CAN_L電平是“0”或“1”。
③ 設置總線波特率,即目前測試網絡的波特率,例如500 k波特。
④ 設置顯示模式,選擇“在視圖中”或“在窗口中”查看CAN數據。
In View: 在視圖中,在波形顯示窗口查看解碼之后的CAN數據。
In Window:在窗口中,在表格中查看解碼之后的CAN數據。
2.2僅從CAN高波形上進行解碼設置
將CAN網絡中的CAN_H端接入到示波器A通道(示波器通道任意選擇)探頭的正極,CAN網絡的GND連接探頭的負極。點擊PicoScope6工具菜單,選擇串行解碼功能,彈出串行解碼設置窗口。
圖 3
設置步驟如下:
① 設置A通道協(xié)議:CAN High。
② 設置CAN低判斷閾值,如3 V。該閾值用于判斷CAN_L電平是“0”或“1”。
③ 設置總線波特率,即目前測試網絡的波特率,例如500 k波特。
④ 設置顯示模式,選擇“在視圖中”或“在窗口中”查看CAN數據。
In View: 在視圖中,在波形顯示窗口查看解碼之后的CAN數據。
In Window:在窗口中,在表格中查看解碼之后的CAN數據。
2.3從CAN高波形和CAN低波形上同時解碼
① 將CAN網絡中的CAN_H端接入到示波器A通道(示波器通道任意選擇)探頭的正極,CAN網絡的GND連接探頭的負極。
② 將CAN網絡中的CAN_H端接入到示波器B通道(示波器通道任意選擇)探頭的正極,CAN網絡的GND連接探頭的負極。
注意:CAN_H和CAN_L使用的測試通道可以自由選擇。只是在進行解碼設置時,對應正確即可。
③ 點擊PicoScope6工具菜單,選擇串行解碼功能,彈出串行解碼設置窗口。
在一個窗口分別設置CAN_H和CAN_L的解碼設置,具體參考2.1和2.2節(jié)的設置,如圖4所示。
圖 4
3使用注意事項
Pico示波器進行串行解碼有一個技術難點:Pico示波器的解碼以完整的一個CAN數據幀為單位,即只有采集到完整的一幀CAN報文,才能將該數據幀完整地解析出來。
① 采集CAN_H和CAN_L波形時,注意時基的設置。即保證每一個波形頁面至少能夠采集到一個完整的數據幀,此時才能夠解析出CAN報文。對于CAN總線來說,時基設置在1 ms/div或者大于1 ms/div即可。
② 注意采樣率的設置,要保證采集到的波形不失真。例如CAN總線的波特率為500 kbps,那么采樣率只有大于1 Ms/s,才能夠采集到正確的波形(滿足奈奎斯特定律)。
收稿日期:(2015-09-06)