為何會(huì )出現CAN波形解碼和報文解碼不一致的現象?
使用CANScope測量CAN總線(xiàn)信號,在干擾很?chē)乐氐那闆r下會(huì )出現CAN總線(xiàn)波形解碼與CAN報文解碼不一致的情況,具體表現為某些正確報文對應的波形解碼卻是錯誤的,或者收到的錯誤報文對應的波形解碼卻是正確的,如圖1中,幀ID為0x721的正確報文對應的波形解碼卻為CRC錯誤。本文將對這種現象產(chǎn)生的原因及其存在的意義進(jìn)行詳細的說(shuō)明。
本文引用地址:http://dyxdggzs.com/article/201911/406595.htm圖1 報文解碼與波形解碼不一致
一、解碼差異錯誤的主要原因
CANScope對CAN信號的處理包含2部分:報文處理部分和波形處理部分。報文處理部分通過(guò)CAN收發(fā)器將總線(xiàn)上的CANH和CANL差分信號轉成單端的數字信號RXD,再使用專(zhuān)用的CAN控制器接收RXD信號并進(jìn)行CAN協(xié)議解碼,最后將解碼后的報文進(jìn)行接收存儲;波形處理部分通過(guò)信號調理電路將CAN總線(xiàn)信號進(jìn)行隔離等必要的處理后通過(guò)ADC電路將模擬信號數字化后順序保存,完成對波形信號的采集。
圖2 CAN總線(xiàn)信號處理
如圖2所示,報文處理和波形處理兩部分的電路和控制是完全獨立的,CAN信號經(jīng)過(guò)這兩部分電路之后會(huì )有所差異,主要的不同在于:1、經(jīng)過(guò)收發(fā)器之后的信號延時(shí)和經(jīng)過(guò)信號調理電路的延時(shí)不同,但這個(gè)不同對解碼的影響比較小,本文不做討論;2、CAN收發(fā)器內部有遲滯比較器,具有相當于低通濾波器的功能,能通過(guò)的信號帶寬不高,而波形采集由于需要觀(guān)測高頻干擾等信號,要求信號調理電路的帶寬比較高,所以帶寬的差異對后續解碼的差異影響比較大。
如圖3所示,帶有高頻尖脈沖干擾信號的總線(xiàn)信號CANH和CANL,在經(jīng)過(guò)低帶寬的收發(fā)器后,其攜帶的干擾信號被濾除(輸出的RXD信號是無(wú)干擾的數字信號);而同樣的CANH和CANL信號,在經(jīng)過(guò)高帶寬的信號調理電路后,其攜帶的干擾信號依然保留(波形采集模塊采集到有干擾的CANH和CANL信號后,經(jīng)過(guò)軟件差分后,得到的差分信號依然存在干擾,所以軟件轉換后的邏輯信號依然存在干擾)。
圖3 波形差異
根據以上分析,干擾信號的存在使得后續的CAN波形解碼會(huì )出現與報文解碼不同的情況。我們繼續往下深究:是否有干擾信號就一定會(huì )導致波形解碼與報文解碼不同呢?其實(shí)也不然,這還得從CAN總線(xiàn)的采樣規則說(shuō)起。
二、CAN總線(xiàn)采樣規則
CAN控制器先將高頻時(shí)鐘進(jìn)行預分頻,生成較低頻率的時(shí)鐘信號,這個(gè)時(shí)鐘信號的周期定義為1個(gè)時(shí)間份額,1位CAN信號的碼元寬度包含有數倍的時(shí)間份額,如控制器時(shí)鐘頻率為16MHz,預分頻為8MHz的時(shí)鐘,則1個(gè)時(shí)間份額為125ns,對于1M波特率的CAN信號,1位CAN信號的碼元寬度即為8個(gè)時(shí)間份額。
以1個(gè)時(shí)間份額為最小單位,將1位CAN信號碼元分為3段:同步段、相位段1、相位段2。同步段固定為1個(gè)時(shí)間份額,相位段1和相位段2可設置成不同參數,控制器在相位段1和相位段2之間對CAN總線(xiàn)進(jìn)行采樣。
圖4 采樣點(diǎn)位置
當干擾信號出現的位置不在采樣點(diǎn)位置時(shí),解碼是不會(huì )因為被干擾而出現錯誤的,只有當干擾信號剛好位于采樣位置時(shí),解碼才會(huì )因為干擾而出現錯誤。
圖5 干擾位置
CAN總線(xiàn)通常工作在比較惡劣的環(huán)境中,常常有干擾信號的存在,CAN總線(xiàn)組網(wǎng)時(shí)為了保證解碼的一致性,要求所有節點(diǎn)的采樣點(diǎn)位置設置應該一致。CANScope中的報文處理和波形處理兩部分電路可看成2個(gè)CAN節點(diǎn),CANScope的波形解碼的采樣點(diǎn)位置設置是跟報文解碼的采樣點(diǎn)位置保持一致的,然而,當高頻干擾信號出現在采樣點(diǎn)位置時(shí),即使是在相同采樣點(diǎn)位置進(jìn)行采樣,因為波形處理和報文處理電路的帶寬差異,還是有較大概率出現波形解碼和報文解碼不一致的現象。
三、軟件邏輯濾波
CANScope采用軟件濾波的方式,即對采集到的CAN總線(xiàn)模擬波形信號經(jīng)過(guò)軟件差分和邏輯化后的數字信號進(jìn)行軟件濾波,濾波后允許通過(guò)的信號帶寬隨著(zhù)波特率的不同而不同,波特率越小,濾波后允許的信號帶寬越??;通過(guò)這樣的濾波處理,最大程度提高了對干擾信號的容忍度,甚至在報文解碼出現錯誤的情況下仍然能對波形做出正確的解碼。這樣,在干擾很?chē)乐氐那闆r下就可能會(huì )出現文章開(kāi)頭所說(shuō)的報文解碼正確而波形解碼錯誤或者報文解碼錯誤而波形解碼正確的現象。
四、解碼差異存在的意義
使用過(guò)CAN卡的人可能會(huì )有這樣一個(gè)印象:在使用CAN卡的過(guò)程中,幾乎遇不到有些節點(diǎn)收到正確報文而有些節點(diǎn)收到錯誤報文的現象,因為只要一個(gè)節點(diǎn)(處于錯誤主動(dòng)狀態(tài)的節點(diǎn))收到錯誤報文,其它所有節點(diǎn)都會(huì )收到錯誤報文,最多就是錯誤的類(lèi)型不同而已。這一點(diǎn)跟CANScope的報文解碼和波形解碼的差異現象是不同的,那這又是何原因呢?這是因為正常的CAN網(wǎng)絡(luò )中,當某個(gè)節點(diǎn)解碼到有錯誤時(shí),會(huì )向總線(xiàn)發(fā)出錯誤幀破壞當前報文,從而導致所有節點(diǎn)都接收到錯誤報文。與之不同的是,CANScope作為測量設備,只對CAN總線(xiàn)進(jìn)行監聽(tīng)和采集,不影響CAN總線(xiàn),將總線(xiàn)上的波形細節(包括波形細節導致的解碼差異)盡可能地展示出來(lái),這正是解碼差異存在的意義。
圖6 解碼錯誤不影響總線(xiàn)
如圖6所示,CAN總線(xiàn)被嚴重干擾,CANScope的報文解碼出錯,但這時(shí)CANScope并不會(huì )向總線(xiàn)發(fā)出錯誤幀,而其它節點(diǎn)沒(méi)有解碼出錯,當前幀被正常應答并正常完成傳輸,這些情況可通過(guò)波形及波形解碼全部展現出來(lái)且不影響CAN總線(xiàn)網(wǎng)絡(luò )。
總結:
使用CANScope測量CAN總線(xiàn)信號,在總線(xiàn)信號干擾很?chē)乐氐那闆r下會(huì )出現CAN波形解碼與CAN報文解碼不一致的情況,這是由于CANScope獨立兩路的報文處理和波形處理所導致,而CANScope作為測量設備,只對CAN總線(xiàn)進(jìn)行靜默監聽(tīng),不影響CAN總線(xiàn),并將總線(xiàn)上的波形細節(包括波形細節導致的解碼差異)盡可能地展示出來(lái),這正是CANScope的價(jià)值所在。
評論