TSMaster中如何自定义CRC校验算法

描述

 

在通讯过程中,用户需要利用 CheckSum 信号对传输数据用自己规定的算法逻辑进行校验,来看数据在传输过程中是否被更改或传输错误。本文主要介绍 TSMaster 如何设置自己的 CRC 算法信号。

 

 

CRC相关知识介绍

 

1

原理

 

CRC 校验本质上是选取一个合适除数,对要进行校验的数据(被除数)做模 2 除法,得到的余数就是 CRC 校验值。

信号

1. 标准 CRC 生成多项式

信号

 

2. 位宽(W)

多项式二进制位数减一。

 

3. 工程中常用 CRC 校验过程

△ 余数初始值:计算开始前,先给变量 CRC 赋的初始值。

△ 结果异或值:计算结束后,得到的变量 CRC 与这个值进行异或操作,得到最终校验值。

△ 输入数据反转:计算开始前,将需要校验的数据反转,如 1011 反转为 1101。

△ 输出数据反转:计算结束后,与结果异或值异或之前,计算值反转,如 1011 反转为 1101。

 

4. 模 2 运算

不考虑进位和借位的二进制数运算。

信号信号

 

 

操作步骤(以 CRC8 为例)

 

1

利用C脚本对单一信号设置自定义CRC校验算法

 

1. 打开 TSMaster,创建一个 C 脚本窗口。

信号


 

2. 创建 Rollingcount 信号变量 RC、创建需要校验信号所对应报文的预发送事件、以及校验算法函数 MakeCheckSum(此处以 ABSData 报文为例)。

信号

 

3. 编辑 CRC 自定义算法函数。

信号

 

4. 在预发送事件中,调用编辑好的自定义 CRC 算法函数,利用回调函数赋值给 CheckSum信号,同时对 RollingCount 信号编程做循环处理。

信号


 

5. 将 DBC 中 CheckSum 和 RollingCount 信号添加至信号曲线进行观察,即可完成通过脚本对单一校验信号设置自定义的 CRC 校验算法。

信号

 

2

对多个信号设置自定义CRC校验算法

 

1. 添加 DBC 文件进 TSMaster,打开 RBS 模块,找到需要设置的 CheckSum 信号,点击鼠标右键,选择设置为 CheckSum 信号。

信号

 

2. 在弹出的 CRC 算法库中选择合适的 CRC 算法,如需要自定义则需进行以下步骤。

信号


 

3. 在弹出算法库窗口后,进入 C 小程序,选择 CRC Library,在自定义函数右键添加自定义算法函数(如 MyCRC)。

信号


 

4. 编辑自定义算法函数代码(注意:参数类型需与现有 CRC 算法函数保持一致:指针指向数据首地址,数据长度),编辑好后点击编译。

信号


 

5. 回到 RBS 界面,选中要设置的 CRC 校验信号,右键选择设置为 CRC 校验信号,在弹出的算法库中便已包含了我们自定义的 CRC 校验算法,这样即可快速对多个 CRC 信号进行CRC 校验算法设置,实现 CheckSum 本地化支持。

信号


 

6. 在编译好 CRC 信号函数后,我们可以在 RBS 中对 CRC 信号点击鼠标右键,选择设置编辑算法参数,在弹出的窗口中,可以选择切换其他 CRC 校验算法,并设置首地址和长度。这样即可快速对多个 CRC 信号进行 CRC 校验算法设置,实现 CheckSum 本地化支持。

信号信号

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分