采用偵測串口總線的通信是比較常用的一種解碼技術。以pico示波器為例,pico示波器具有串行解碼的功能,能夠對can、flexray、 i2c、i2s、spi、lin或uart等串行總線進行解碼。pico示波器比較適合做串行解碼,因為它們的深度存儲器可以讓軟件采集較長時間、不間斷的數據,尤其是6000系列能夠在幾秒內采集數千個數據幀存入到512m的樣本存儲器。下面將介紹如何用一個款pico示波器進行can總線數據解碼。
一、can總線解碼概述
1、 can總線概念
時,物理線路上傳輸的信號是由一系列高低電平組成的,這些高低電平攜帶了我們所需要的信息,在數據接收端,我們需要將這些物理電平按照原始的編碼規則進行解析,從而得到實際的物理信號。
can(控制器區域網絡)總線是一種在汽車和工業機械中使用的串行協議,允許微控制器相互通訊。該標準最初由 robert bosch gmbh 于 1983 年制定。它使用雙絞線上傳輸差分信號,分別為can高(can h )和can低(can l),當線路受到共模干擾之后,信號差值不變,信號依然能夠正確被解析。
2 can總線上傳輸的電平特點
can 總線上發布了iso11898和iso11519兩個通信標準,分別對應高速can和容錯can。此兩個標準差分電平的特性不同。本文主要介紹如何用pico示波器進行iso11898標準的can總線解碼。

can高電平大概為3.5v左右,can低電平大概為1.5v左右,can差分電平大概在2v左右。一般情況下,我們可以從三種can總線波形上進行解碼:
1)從can-h總線上傳輸的電平,閾值設置為3v左右即可
2)從can-l總線上傳輸的電平,閾值設置為1.6v左右即可
3)從差分波形(canh-canl)上進行解碼,閾值設置為1.5左右即可。從差分波形上解碼更加準確,因為差分波形濾除了線路上的共模干擾信號。
但是很遺憾,目前picoscope6軟件的串行解碼功能只能從canh或canl波形上進行解碼,暫時還無法實現從差分波形上進行解碼。
二、picoscope6 串行解碼功能

三、解碼設置
pico的任何一臺示波器都具有串行解碼的功能,不同系列的區別在于示波器硬件參數高時,采集到的波形更加平滑,噪聲小。在進行解碼時,我們可以只從can高波形上進行解碼,或只從can低波形上進行解碼,或者同時對canh和canl波形進行解碼。
3.1 僅從can低波形上進行解碼設置
1將can網絡中的canl端接入到示波器a通道(示波器通道任意選擇)探頭的正極,can網絡的gnd連接探頭的負極。
2 點擊picoscope6工具菜單,選擇串行解碼功能。彈出串行解碼設置窗口。

1)設置a通道協議:can low
2)設置can低判斷閾值,如1.6v。該閾值用于判斷can-l電平是“0”或“1”.
3)設置總線波特率,即目前測試網絡的波特率,例如500k波特。
4)設置顯示模式,選擇“在視圖中”或“在窗口中”查看can數據。
in view: 在視圖中,在波形顯示窗口查看解碼之后的can數據。
in bbbbbb: 在窗口中,在表格中查看解碼之后的can數據。
2、僅從can高波形上進行解碼設置
1)將can網絡中的canh端接入到示波器a通道(示波器通道任意選擇)探頭的正極,can網絡的gnd連接探頭的負極。
2 )點擊picoscope6工具菜單,選擇串行解碼功能。彈出串行解碼設置窗口。

設置步驟如下:
1)設置a通道協議:can high
2)設置can低判斷閾值,如3v。該閾值用于判斷can-l電平是“0”或“1”.
3)設置總線波特率,即目前測試網絡的波特率,例如500k波特。
4)設置顯示模式,選擇“在視圖中”或“在窗口中”查看can數據。
in view: 在視圖中,在波形顯示窗口查看解碼之后的can數據。
in bbbbbb: 在窗口中,在表格中查看解碼之后的can數據。
3、從can高波形和can低波形上同時解碼
1)將can網絡中的canh端接入到示波器a通道(示波器通道任意選擇)探頭的正極,can網絡的gnd連接探頭的負極。
2)將can網絡中的canh端接入到示波器b通道(示波器通道任意選擇)探頭的正極,can網絡的gnd連接探頭的負極。
注意:canh和canl使用的測試通道可以自由選擇。只是在進行解碼設置時,對應正確即可。
3 )點擊picoscope6工具菜單,選擇串行解碼功能。彈出串行解碼設置窗口。
在一個窗口分別設置canh和canl的解碼設置,具體參考3.1和3.2章節的設置。如下圖所示:

四、使用注意事項
pico示波器進行串行解碼有一個技術難點:pico示波器的解碼以完整的一個can數據幀為單位,即只有采集到完整的一幀can報文,才能將該數據幀完整的解析出來。
1) 采集canh和canl波形時,注意時基的設置。即保證每一個波形頁面至少能夠采集到一個完整的數據幀,此時才能夠解析出can報文。對于can總線來說,時基設置在1ms/div或者大于1ms/div即可。
2) 注意采樣率的設置,要保證采集到的波形不失真。例如can總線的波特率為500kbps,那么采樣率只有大于1ms/s,才能夠采集到正確的波形(滿足乃奎斯特定律)。
3 )示波器的波形(一個顯示頁面)與波形之前是不連續的,總是或多或少一些間隙。所以當在進行can總線解碼時,波形頁面的邊緣會有一些無法被解析的數據幀,主要原因是波形頁面邊緣將一個完成的數據幀截斷了,以至于無法得到爭取的解析。如下圖所示:











