在通訊過程中,用戶需要利用 CheckSum 信號(hào)對(duì)傳輸數(shù)據(jù)用自己規(guī)定的算法邏輯進(jìn)行校驗(yàn),來看數(shù)據(jù)在傳輸過程中是否被更改或傳輸錯(cuò)誤。本文主要介紹 TSMaster 如何設(shè)置自己的 CRC 算法信號(hào)。
CRC相關(guān)知識(shí)介紹
1
原理
CRC 校驗(yàn)本質(zhì)上是選取一個(gè)合適除數(shù),對(duì)要進(jìn)行校驗(yàn)的數(shù)據(jù)(被除數(shù))做模 2 除法,得到的余數(shù)就是 CRC 校驗(yàn)值。

1.標(biāo)準(zhǔn) CRC 生成多項(xiàng)式

2.位寬(W)
多項(xiàng)式二進(jìn)制位數(shù)減一。
3.工程中常用 CRC 校驗(yàn)過程
△ 余數(shù)初始值:計(jì)算開始前,先給變量 CRC 賦的初始值。
△結(jié)果異或值:計(jì)算結(jié)束后,得到的變量 CRC 與這個(gè)值進(jìn)行異或操作,得到最終校驗(yàn)值。
△輸入數(shù)據(jù)反轉(zhuǎn):計(jì)算開始前,將需要校驗(yàn)的數(shù)據(jù)反轉(zhuǎn),如 1011 反轉(zhuǎn)為 1101。
△輸出數(shù)據(jù)反轉(zhuǎn):計(jì)算結(jié)束后,與結(jié)果異或值異或之前,計(jì)算值反轉(zhuǎn),如 1011 反轉(zhuǎn)為 1101。
4. 模 2 運(yùn)算
不考慮進(jìn)位和借位的二進(jìn)制數(shù)運(yùn)算。


操作步驟(以 CRC8 為例)
1
利用C腳本對(duì)單一信號(hào)設(shè)置自定義CRC校驗(yàn)算法
1. 打開 TSMaster,創(chuàng)建一個(gè) C 腳本窗口。

2. 創(chuàng)建 Rollingcount 信號(hào)變量 RC、創(chuàng)建需要校驗(yàn)信號(hào)所對(duì)應(yīng)報(bào)文的預(yù)發(fā)送事件、以及校驗(yàn)算法函數(shù) MakeCheckSum(此處以 ABSData 報(bào)文為例)。

3. 編輯 CRC 自定義算法函數(shù)。

4. 在預(yù)發(fā)送事件中,調(diào)用編輯好的自定義 CRC 算法函數(shù),利用回調(diào)函數(shù)賦值給 CheckSum信號(hào),同時(shí)對(duì) RollingCount 信號(hào)編程做循環(huán)處理。

5. 將 DBC 中 CheckSum 和 RollingCount 信號(hào)添加至信號(hào)曲線進(jìn)行觀察,即可完成通過腳本對(duì)單一校驗(yàn)信號(hào)設(shè)置自定義的 CRC 校驗(yàn)算法。

2
對(duì)多個(gè)信號(hào)設(shè)置自定義CRC校驗(yàn)算法
1. 添加 DBC 文件進(jìn) TSMaster,打開 RBS 模塊,找到需要設(shè)置的 CheckSum 信號(hào),點(diǎn)擊鼠標(biāo)右鍵,選擇設(shè)置為 CheckSum 信號(hào)。

2. 在彈出的 CRC 算法庫中選擇合適的 CRC 算法,如需要自定義則需進(jìn)行以下步驟。

3. 在彈出算法庫窗口后,進(jìn)入 C 小程序,選擇 CRC Library,在自定義函數(shù)右鍵添加自定義算法函數(shù)(如 MyCRC)。

4. 編輯自定義算法函數(shù)代碼(注意:參數(shù)類型需與現(xiàn)有 CRC 算法函數(shù)保持一致:指針指向數(shù)據(jù)首地址,數(shù)據(jù)長度),編輯好后點(diǎn)擊編譯。

5. 回到 RBS 界面,選中要設(shè)置的 CRC 校驗(yàn)信號(hào),右鍵選擇設(shè)置為 CRC 校驗(yàn)信號(hào),在彈出的算法庫中便已包含了我們自定義的 CRC 校驗(yàn)算法,這樣即可快速對(duì)多個(gè) CRC 信號(hào)進(jìn)行CRC 校驗(yàn)算法設(shè)置,實(shí)現(xiàn) CheckSum 本地化支持。

6. 在編譯好 CRC 信號(hào)函數(shù)后,我們可以在 RBS 中對(duì) CRC 信號(hào)點(diǎn)擊鼠標(biāo)右鍵,選擇設(shè)置編輯算法參數(shù),在彈出的窗口中,可以選擇切換其他 CRC 校驗(yàn)算法,并設(shè)置首地址和長度。這樣即可快速對(duì)多個(gè) CRC 信號(hào)進(jìn)行 CRC 校驗(yàn)算法設(shè)置,實(shí)現(xiàn) CheckSum 本地化支持。


-
crc
+關(guān)注
關(guān)注
0文章
205瀏覽量
30863 -
信號(hào)
+關(guān)注
關(guān)注
12文章
2916瀏覽量
80206 -
MASTER
+關(guān)注
關(guān)注
0文章
111瀏覽量
12212
發(fā)布評(píng)論請(qǐng)先 登錄
一文解讀CRC校驗(yàn)
如何保證電能質(zhì)量在線監(jiān)測裝置的自定義監(jiān)測時(shí)段功能的準(zhǔn)確性和穩(wěn)定性?
無圖形界面模式下自定義檢查工具的應(yīng)用
硬件循環(huán)冗余校驗(yàn)(CRC)模塊介紹
CRC校驗(yàn)的原理和應(yīng)用
CRC校驗(yàn)的本質(zhì)和物理意義
電能質(zhì)量在線監(jiān)測裝置的數(shù)據(jù)推送協(xié)議是否可以自定義配置?
如何在e203 SOC中添加自定義外設(shè)
LOTO示波器自定義解碼功能—CANFD解碼
KiCad 中的自定義規(guī)則(KiCon 演講)
HarmonyOS應(yīng)用自定義鍵盤解決方案
custom.c中自定義代碼無法自動(dòng)保存怎么解決?
基于Verilog語言實(shí)現(xiàn)CRC校驗(yàn)
TSMaster中如何自定義CRC校驗(yàn)算法
評(píng)論