使用CANScope測量CAN總線信號,在干擾很嚴重的情況下會出現(xiàn)CAN總線波形解碼與CAN報文解碼不一致的情況,具體表現(xiàn)為某些正確報文對應的波形解碼卻是錯誤的,或者收到的錯誤報文對應的波形解碼卻是正確的,如圖1中,幀ID為0721的正確報文對應的波形解碼卻為CRC錯誤。本文將對這種現(xiàn)象產(chǎn)生的原因及其存在的意義進行詳細的說明。
圖1.報文解碼與波形解碼不一致
解碼差異錯誤的主要原因
CANScope對CAN信號的處理包含2部分:報文處理部分和波形處理部分。報文處理部分通過CAN收發(fā)器將總線上的CANH和CANL差分信號轉成單端的數(shù)字信號RXD,再使用專用的CAN控制器接收RXD信號并進行CAN協(xié)議解碼,最后將解碼后的報文進行接收存儲;波形處理部分通過信號調理電路將CAN總線信號進行隔離等必要的處理后通過ADC電路將模擬信號數(shù)字化后順序保存,完成對波形信號的采集。
圖2.CAN總線信號處理
如圖2所示,報文處理和波形處理兩部分的電路和控制是完全獨立的,CAN信號經(jīng)過這兩部分電路之后會有所差異,主要的不同在于:
1、經(jīng)過收發(fā)器之后的信號延時和經(jīng)過信號調理電路的延時不同,但這個不同對解碼的影響比較小,本文不做討論;
2、CAN收發(fā)器內部有遲滯比較器,具有相當于低通濾波器的功能,能通過的信號帶寬不高,而波形采集由于需要觀測高頻干擾等信號,要求信號調理電路的帶寬比較高,所以帶寬的差異對后續(xù)解碼的差異影響比較大。
如圖3所示,帶有高頻尖脈沖干擾信號的總線信號CANH和CANL,在經(jīng)過低帶寬的收發(fā)器后,其攜帶的干擾信號被濾除(輸出的RXD信號是無干擾的數(shù)字信號);而同樣的CANH和CANL信號,在經(jīng)過高帶寬的信號調理電路后,其攜帶的干擾信號依然保留(波形采集模塊采集到有干擾的CANH和CANL信號后,經(jīng)過軟件差分后,得到的差分信號依然存在干擾,所以軟件轉換后的邏輯信號依然存在干擾)。
圖3 波形差異
根據(jù)以上分析,干擾信號的存在使得后續(xù)的CAN波形解碼會出現(xiàn)與報文解碼不同的情況。我們繼續(xù)往下深究:是否有干擾信號就一定會導致波形解碼與報文解碼不同呢?其實也不然,這還得從CAN總線的采樣規(guī)則說起。
CAN總線采樣規(guī)則
CAN控制器先將高頻時鐘進行預分頻,生成較低頻率的時鐘信號,這個時鐘信號的周期定義為1個時間份額,1位CAN信號的碼元寬度包含有數(shù)倍的時間份額,如控制器時鐘頻率為16MHz,預分頻為8MHz的時鐘,則1個時間份額為125ns,對于1M波特率的CAN信號,1位CAN信號的碼元寬度即為8個時間份額。
以1個時間份額為最小單位,將1位CAN信號碼元分為3段:同步段、相位段1、相位段2。同步段固定為1個時間份額,相位段1和相位段2可設置成不同參數(shù),控制器在相位段1和相位段2之間對CAN總線進行采樣。
圖4 采樣點位置
當干擾信號出現(xiàn)的位置不在采樣點位置時,解碼是不會因為被干擾而出現(xiàn)錯誤的,只有當干擾信號剛好位于采樣位置時,解碼才會因為干擾而出現(xiàn)錯誤。