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