大数跨境
0
0

干货分享 | TSMaster中如何自定义CRC校验算法

干货分享 | TSMaster中如何自定义CRC校验算法 TOSUN同星
2023-09-08
0
导读:在通讯过程中,用户需要利用 CheckSum 信号对传输数据用自己规定的算法逻辑进行校验,来看数据在传输过程中是否被更改或传输错误。本文主要介绍 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 本地化支持。


更多精彩内容 /







> 如有任何问题欢迎与我们联系 👇👇👇


【声明】内容源于网络
0
0
TOSUN同星
软件定义汽车、软件定义装备、软件定义生活,而同星定义软件。专注汽车电子基础工具链产品,提供行业前沿技术与实战解决方案。
内容 367
粉丝 0
TOSUN同星 软件定义汽车、软件定义装备、软件定义生活,而同星定义软件。专注汽车电子基础工具链产品,提供行业前沿技术与实战解决方案。
总阅读38
粉丝0
内容367