面對切換工具鏈的用戶來說,在 TSMaster 上完成總線通訊中的 CRC/E2E 校驗處理不是特別熟悉,該文章可以協助客戶快速使用 TSMaster 完成 CAN/CAN FD 總線通訊的 CRC/E2E 校驗。
本文關鍵字:TSMaster,CAN/CANFD,CRC 校驗,E2E 校驗
目錄
Catalog
1.CRC/E2E 在報文傳輸過程中的應用
2.基于 TSMaster 剩余總線仿真的 CRC 校驗
3.TSMaster 本地化支持的 CRC 校驗
1.
CRC/E2E 在報文傳輸過程中的應用
典型應用:兩個 CAN 節點(ECU)之間進行 CAN/CANFD 報文傳輸,雙方規定對報文(0xC9:ABSdata)Byte0-Byte6 需要進行 CRC 校驗,Byte6 的高四位為 RollingCounter,校驗結果放至 Byte7 中。
因此,在 DBC 發送這幀報文的節點來說,在往總線發出這幀報文之前需要對每幀報文的 RollingCounter 值進行不斷自增、循環,然后進行 CRC 校驗把校驗值放進 Byte7 中,最后再把幀報文發到總線上;而對于 DBC 接收這幀報文的節點來說,需要對這幀報文也進行CRC 校驗,把校驗的結果與 Byte7 的數據進行對比,對比結果一致則這幀報文的數據有效,否則丟棄這些數據。
E2E(End to End),是 Autosar 官方定義的標準,它包含了 CRC 算法、要求了 Counter 的值如何進行遞增、并在 Counter 出錯時會記錄對應的錯誤狀態等等。從發送節點來說,可以簡單的理解為發送前填充 Checksum 和 Counter 的值,基本操作與 CRC 相同。
2.
基于 TSMaster 剩余總線仿真的 CRC 校驗
基于剩余總線仿真的 CRC 校驗,該方法在 TSMaster 仿真-CAN 總線仿真中即可完成,無需代碼,但是 CRC 校驗算法是通用的 CRC 算法,例如 CRC8、CRC16、CRC32 等等。使用之前需要先在工程中加載數據庫文件并綁定對應的應用程序通道。
其次,打開 CAN 總線仿真,激活報文的所有信號及其所在節點和網絡(此處以 0xC9ABSdata 為例):
從這里可以看到 ABS_RC 和 ABS_CheckSum 的信號類型還是普通信號,那么如何通過0 代碼實現 RC 的自增循環以及 CheckSum 校驗值的計算呢?具體的實現在總線仿真這個模塊中已經實現,用戶只需在該界面中進行相關的設置即可實現,以下是詳細步驟。
1)右擊 ABS_RC,選擇設置為 Rolling Counter 信號(RC),完成后即可看到該信號類型已經變為 RC。
RC 值自增的范圍在該模塊中也是可以直接設置,在 CAN 總線仿真樹狀圖窗口內任意位置右鍵打開編輯 RC 值范圍,然后勾選該信號,對 RC 的最大最小值進行手動輸入,確認即可保存。
2)右鍵 ABS_CheckSum,選擇設置為 Checksum 校驗信號(CRC),隨后會彈出默認算法庫,這里以選擇 crc8 例。完成后該信號的類型已經變為 CRC(crc.crc8[0:7]),表示該信號為CRC 校驗信號,校驗算法為 crc 庫中的 crc8,保護字節為 0-7:
如果用戶需要修改校驗的字節范圍,同 RC 值范圍,在窗口內右鍵打開編輯 CRC 算法參數;在該窗口內可以對保護字節起始以及保護字節數進行編輯。
同時該窗口可以對所有的 CRC 信號進行統一的編輯,雙擊信號所在的 CRC 算法欄即可打開算法選擇窗口,如果用戶的算法不是標準的 CRC 算法,我們也可以在 crc 這個庫中再去添加自定義函數,這樣也能給這個剩余總線仿真這個模塊識別使用,需要注意的前提條件是自定義算法的接口必須和已存在的相同,也就是函數的參數必須是(pu8 data, s32 datalen),這樣才能夠正常使用。
另外一種使用場景,需要在校驗的數據內容頭部/尾部增加固定的字節數據,這一點不難發現在 CRC 算法參數編輯窗口也有做了接口處理,用戶可以直接在該框內添加數據,多個數據可以用英文符號(,)隔開。
以上就是基于總線仿真 CRC 校驗的配置操作過程,完成后運行總線仿真即可在報文信息窗口看到發出的報文。
3.
TSMaster 本地化支持的 CRC 校驗
該方法適用于 CRC 校驗算法與 crc 庫中算法函數接口不同,還需要利用報文幀的其他信息進行校驗的情況,例如將報文 ID 一并進行校驗計算。這種情況就可以利用 TSMaster 中的小程序來完成,此工程以 C 小程序為例,Python 小程序同理。
演示前將數據庫進行加載,在開頭提到過,CRC 校驗往簡單來說就說往報文數據填充RC 和 CheckSum 校驗的值,此時用戶就可以在小程序中通過預發送事件來修改 RC 和 CheckSum 的值。
完成編輯內容后需要運行小程序,然后在報文發送窗口進行報文發送或者啟動 CAN 剩余總線仿真(此時需要將 RC 和 CheckSum 設置為普通信號,使得這兩個信號只受小程序的控制)。
-
CAN
+關注
關注
57文章
2744瀏覽量
463615 -
crc
+關注
關注
0文章
199瀏覽量
29461 -
CANFD
+關注
關注
0文章
57瀏覽量
4938
發布評論請先 登錄
相關推薦
評論