CAN節點的穩定性、可靠性和安全性得益于其強大的錯誤管理機制。上一篇文章我們介紹了CAN控制器的錯誤管理機制的工作原理(點擊閱讀)。本文將基于其工作原理及ISO16845-1:2016標準,為大家介紹使用ZPS-CANFD設備驗證CAN控制器的錯誤響應過程。
CAN控制器的錯誤管理機制是保障CAN總線通信可靠性的關鍵機制,它能檢測并處理多種錯誤情況,即位錯誤、填充錯誤、CRC錯誤、格式錯誤以及ACK錯誤,并及時地響應錯誤幀,另外通過錯誤計數器的數值(發送錯誤計數器TEC,接收錯誤計數器REC),它可以判斷自身通信狀態,如主動錯誤、被動錯誤和總線關閉,從而采取不同應對策略。
在CAN網絡里,CAN節點既可以作為發送節點,也可以作為接收節點,當總線上出現錯誤時,可能是作為發送節點報出的錯誤,也可能是作為接收節點報出的錯誤,所以驗證CAN控制器錯誤處理機制,需要從發送和接收兩個方向進行測試。本文通過使用ZPS-CANFD設備提供的發送干擾和接收干擾功能,進行總線的錯誤注入,結合報文接收、報文解碼窗口觀察總線情況,分析錯誤幀的產生和錯誤計數器動作是否符合標準。

圖1 ZPS-CANFD功能開啟界面
接收錯誤響應能力驗證
在CAN控制器的運行機制中,當面對不同的接收錯誤時,錯誤響應位置與REC增量存在一定的差異,部分錯誤發生后,下一位便緊跟錯誤標志位;而另一些錯誤出現后,要在隨后幾位才開始呈現錯誤標志位。在REC增量方面,不同錯誤導致的結果也各不相同,有的錯誤讓REC以1為單位進行遞增,有的使其以8為單位進行遞增,還有的情況下REC保持不變。接下來我們將通過兩個實例,介紹不同錯誤情形下,CAN控制器的接收錯誤檢測結果以及REC增量是否符合標準。
實例一:CRC錯誤
1、驗證目的
①觀察出現CRC錯誤之后,錯誤幀生成位置是否符合標準;②觀察出現錯誤幀之后,REC遞增是否符合標準。
2、預期結果
①根據ISO16845-1:2016(E)標準中7.2.5小節要求,當DUT接收到CRC錯誤(CANFD幀的)之后,它將生成一個有效的錯誤幀,從CRC定界符后的第四位開始;②根據ISO16845-1:2016(E)標準中7.6.10小節要求,當DUT生成一幀錯誤幀后,它的REC應增加1。
3、硬件準備
ZPS-CANFD作為測量設備,簡稱ZPS。USBCANFD-200U作為被測設備,簡稱DUT。
4、軟件準備
打開ZPS和DUT的軟件,進行CAN通道參數的匹配(如波特率、終端電阻),并開啟CAN通道,進行數據數據交互,ZPS參數設置如圖2所示。

圖2 波特率匹配注:
1、總線允許,代表CAN1通道啟動;
2、ZPS的工作模式選擇“只聽應答模式”,ZPS不會回應錯誤幀,可以便于在對錯誤幀的波形分析時,只看到DUT發送的錯誤幀。
5、錯誤注
入打開ZPS軟件的報文發送窗口,添加任意報文(例如ID 100的CANFD幀),然后點開高級按鈕,勾選“發送干擾”,將干擾位置選擇“自定義”,干擾類型選擇“單位干擾”,干擾光標移到CRC的某個位,如圖3所示。

圖3 發送CRC錯誤注:CANFD幀的CRC場有固定填充位,所以發送CRC錯誤時,干擾光標不能選擇固定填充位,且需離它遠一些,否者會發送CRC固定填充位錯誤,這樣就不符合該測試項的預期了。
6、驗證結果
①在ZPS軟件界面,觀察錯誤幀的波形,當DUT接收到CRC錯誤后,它的錯誤幀從CRC定界符后的第四位開始發出,符合標準。如圖4、圖5所示,對比正確幀和錯誤幀的CRC定界符位置可以看出。

圖4 正確CANFD幀時,CRC起始~CRC定界符寬度:23us

圖5 DUT在CRC定界符后第四位開始發出錯誤幀注:主動錯誤幀格式:6個顯性位+8個隱性位。
②查看DUT軟件界面的錯誤信息,觀察到當出現一幀錯誤幀時,REC+1,兩幀錯誤幀時,REC+2,以此類推,符合標準。

圖6 REC遞增結果顯示
實例二:EOF錯誤
1、驗證目的
①觀察出現EOF錯誤之后,錯誤幀生成位置是否符合標準;②觀察出現錯誤幀之后,REC遞增是否符合標準。
2、預期結果
①根據ISO16845-1:2016(E)標準中7.2.10小節要求,當DUT接收到EOF錯誤時,它將生成一個有效的錯誤幀,從損壞位的下一位位置開始。②根據ISO16845-1:2016(E)標準中7.6.14小節和ISO 11898-1:2015(E)標準中12.1.4.2小節描述,若REC起始值為0,接收節點ACK發送成功,REC保持為0,若REC起始值大于0,接收節點ACK發送成功,REC減1。③根據ISO16845-1:2016(E)標準中7.6.8小節要求,當DUT生成一幀錯誤幀后,它的REC應增加1。
3、硬件準備同上。
4、軟件準備同上。
5、錯誤注入打開ZPS-CANFD(1)軟件的報文發送窗口,添加任意報文,然后點開高級按鈕,勾選“發送干擾”,將干擾位置選擇“自定義”,干擾類型選擇“單位干擾”,干擾光標移到EOF位,如圖7所示。

圖7 發送EOF錯誤
6、驗證結果
①在ZPS軟件界面,觀察錯誤幀的波形,當DUT接收到EOF錯誤后,錯誤幀在該位之后的第一位開始發出,符合標準,如圖8所示。

圖8 DUT在EOF損壞位后第一位開始發出錯誤幀
②查看DUT軟件界面的錯誤信息,觀察到當出現一幀錯誤幀時,REC保持初始值,符合標準。例如REC初始值為1,因為EOF錯誤出現在ACK之后,ACK發送成功,REC-1,EOF錯誤,REC+1,所以,REC值不變。

圖9 REC遞增結果顯示
發送錯誤響應能力驗證
在CAN控制器的運行機制中,當面對不同的發送錯誤時,它的錯誤響應一般在錯誤出現后,下一位便緊跟錯誤標志位。在TEC增量方面,錯誤幀的產生會讓TEC以8為單位進行遞增。接下來我們將通過一個實例,介紹在錯誤情形下,CAN控制器的發送錯誤檢測結果以及TEC增量是否符合標準。
實例一:CRC定界符錯誤
1、驗證目的
①觀察出現CRC定界符錯誤之后,錯誤幀生成位置是否符合標準。②觀察出現錯誤幀之后,TEC遞增是否符合標準。
2、預期結果
①根據ISO16845-1:2016(E)標準中8.2.5小節要求,當DUT發送報文的CRC定界符位被破壞之后,它將生成一個有效的錯誤幀,從損壞位的下一位位置開始。②根據ISO16845-1:2016(E)標準中8.6.7小節要求,當DUT生成一幀錯誤幀后,它的TEC應增加8。
3、硬件準備
同上。
4、軟件準備
打開ZPS和DUT的軟件,進行CAN通道參數的匹配(如波特率、終端電阻),如圖 2所示,并開啟CAN通道,ZPS接收DUT發送的報文。DUT發送數據如圖10所示。

圖10 DUT發送幀
5、錯誤注入
打開ZPS軟件的被動接收干擾窗口,按照DUT發送的報文,設置幀數據、干擾位置,即設置模版,然后將干擾光標放到“CRC定界符”位,再將干擾類型選擇為“隱性干擾為顯性”并啟動干擾,如圖11所示。

圖11 CRC定界符位干擾
6、驗證結果
①在ZPS軟件界面,觀察錯誤幀的波形,當DUT的CRC定界符位被干擾后,它的錯誤幀在該位之后的第一位開始發出,符合標準,如圖12所示。

圖12 DUT在CRC定界符后第一位開始發出錯誤幀
②查看DUT軟件界面的錯誤信息,觀察到當發送一幀錯誤幀時,它的TEC+8,以此類推,符合標準。圖13 TEC遞增結果顯示
-
檢測
+關注
關注
5文章
4601瀏覽量
92521 -
CAN控制器
+關注
關注
3文章
75瀏覽量
15238
發布評論請先 登錄
CAN控制器總線錯誤分析之CAN節點BusOff恢復過程分析與測試

示波器破解CAN錯誤幀/BusOff的經驗分享
基于Verilog HDL語言的CAN總線控制器設計及驗證

評論