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

物聯(lián)網(wǎng)轉(zhuǎn)向E2E解決方案
用于單片機(jī)的CRC數(shù)據(jù)校驗(yàn)方法

細(xì)說CANFD CRC段帶來的變化
【Z站推薦】CANFD CRC段與傳統(tǒng)CAN差距有多大?

TSMaster中如何自定義CRC校驗(yàn)算法

Autosar E2E介紹及其實(shí)現(xiàn)

奇偶校驗(yàn)和crc校驗(yàn)的區(qū)別 CRC校驗(yàn)和奇偶校驗(yàn)之間有什么關(guān)系?
簡(jiǎn)述循環(huán)冗余碼crc校驗(yàn)方法的工作原理
干貨分享 | TSMaster AUTOSAR E2E使用說明

評(píng)論