0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

上海同星智能科技有限公司 2023-09-09 08:23 次阅读

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

CRC相关知识介绍

1

原理

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

f261cac4-4ea6-11ee-a20b-92fbcf53809c.png

1.标准 CRC 生成多项式

f2a7469e-4ea6-11ee-a20b-92fbcf53809c.png

2.位宽(W)

多项式二进制位数减一。

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

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

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

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

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

4. 模 2 运算

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

f2df75d2-4ea6-11ee-a20b-92fbcf53809c.pngf2fa7512-4ea6-11ee-a20b-92fbcf53809c.png

操作步骤(以 CRC8 为例)

1

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

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

f323310a-4ea6-11ee-a20b-92fbcf53809c.png


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

f37359fa-4ea6-11ee-a20b-92fbcf53809c.png

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

f3f81be0-4ea6-11ee-a20b-92fbcf53809c.png

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

f429cb54-4ea6-11ee-a20b-92fbcf53809c.png


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

f49af540-4ea6-11ee-a20b-92fbcf53809c.png

2

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

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

f4f959e6-4ea6-11ee-a20b-92fbcf53809c.png

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

f53ee24a-4ea6-11ee-a20b-92fbcf53809c.png


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

f5a876d8-4ea6-11ee-a20b-92fbcf53809c.png


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

f64b9584-4ea6-11ee-a20b-92fbcf53809c.png


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

f6bbb0a8-4ea6-11ee-a20b-92fbcf53809c.png


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

f73af0d4-4ea6-11ee-a20b-92fbcf53809c.pngf7aa9434-4ea6-11ee-a20b-92fbcf53809c.png

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

    关注

    0

    文章

    200

    浏览量

    29709
  • 信号
    +关注

    关注

    11

    文章

    2819

    浏览量

    77380
  • MASTER
    +关注

    关注

    0

    文章

    104

    浏览量

    11430
收藏 人收藏

    评论

    相关推荐

    DLPC7540EVM是否支持自定义的图像处理算法,以及如何进行算法的移植?

    是否支持自定义的图像处理算法,以及如何进行算法的移植?
    发表于 02-17 08:25

    如何快速创建用户自定义Board和App工程

    可将该文件夹复制到用户自定义的工作目录(workspace),基于此模板进行开发。本模板主要牵涉到的用户自定义的文件有:用户板级文件Board用户应用程序App用
    的头像 发表于 02-08 13:38 144次阅读
    如何快速创建用户<b class='flag-5'>自定义</b>Board和App工程

    Altium Designer 15.0自定义元件设计

    电子发烧友网站提供《Altium Designer 15.0自定义元件设计.pdf》资料免费下载
    发表于 01-21 15:04 0次下载
    Altium Designer 15.0<b class='flag-5'>自定义</b>元件设计

    think-cell:自定义think-cell(四)

    C.5 设置默认议程幻灯片布局 think-cell 议程可以在演示文稿中使用特定的自定义布局来定义议程、位置和议程幻灯片上的其他形状,例如标题或图片。通过将此自定义布局添加到模板,您可以为整个组织
    的头像 发表于 01-13 10:37 185次阅读
    think-cell:<b class='flag-5'>自定义</b>think-cell(四)

    think-cell;自定义think-cell(一)

    本章介绍如何自定义 think-cell,即如何更改默认颜色和其他默认属性;这是通过 think-cell 的样式文件完成的,这些文件将在前四个部分中进行讨论。 第五部分 C.5 设置默认议程幻灯片
    的头像 发表于 01-08 11:31 299次阅读
    think-cell;<b class='flag-5'>自定义</b>think-cell(一)

    创建自定义的基于闪存的引导加载程序(BSL)

    电子发烧友网站提供《创建自定义的基于闪存的引导加载程序(BSL).pdf》资料免费下载
    发表于 09-19 10:50 0次下载
    创建<b class='flag-5'>自定义</b>的基于闪存的引导加载程序(BSL)

    NVIDIA NeMo加速并简化自定义模型开发

    如果企业希望充分发挥出 AI 的力量,就需要根据其行业需求量身定制的自定义模型。
    的头像 发表于 07-26 11:17 914次阅读
    NVIDIA NeMo加速并简化<b class='flag-5'>自定义</b>模型开发

    详解TSMaster CAN 与 CANFD 的 CRC E2E 校验方法

    面对切换工具链的用户来说,在TSMaster上完成总线通讯CRC/E2E校验处理不是特别熟悉,该文章可以协助客户快速使用TSMaster
    的头像 发表于 05-25 08:21 2924次阅读
    详解<b class='flag-5'>TSMaster</b> CAN 与 CANFD 的 <b class='flag-5'>CRC</b> E2E <b class='flag-5'>校验</b>方法

    stm32cubemx如何自定义lwip平台?

    有人知道stm32cubemx,如何自定义lwip平台。(默认只
    发表于 05-22 07:50

    HarmonyOS开发案例:【 自定义弹窗】

    基于ArkTS的声明式开发范式实现了三种不同的弹窗,第一种直接使用公共组件,后两种使用CustomDialogController实现自定义弹窗
    的头像 发表于 05-16 18:18 1568次阅读
    HarmonyOS开发案例:【 <b class='flag-5'>自定义</b>弹窗】

    CRC(循环冗余校验)应用举例

    CRC(循环冗余校验)应用举例
    的头像 发表于 05-16 16:12 1536次阅读

    TSMaster 自定义 LIN 调度表编程指导

    TSMaster(v2023.10.7.990)之后的版本中新增了实现自定义LIN调度表相关API。今天重点和大家分享一下关于编程实现TSMaster自定义LIN调度表
    的头像 发表于 05-11 08:21 829次阅读
    <b class='flag-5'>TSMaster</b> <b class='flag-5'>自定义</b> LIN 调度表编程指导

    HarmonyOS开发案例:【UIAbility和自定义组件生命周期】

    本文档主要描述了应用运行过程UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
    的头像 发表于 05-10 15:31 1482次阅读
    HarmonyOS开发案例:【UIAbility和<b class='flag-5'>自定义</b>组件生命周期】

    HarmonyOS开发实例:【自定义Emitter】

    使用[Emitter]实现事件的订阅和发布,使用[自定义弹窗]设置广告信息。
    的头像 发表于 04-14 11:37 1124次阅读
    HarmonyOS开发实例:【<b class='flag-5'>自定义</b>Emitter】

    鸿蒙ArkUI实例:【自定义组件】

    组件是 OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自带系统组件,比如 `Text` 、 `Button` 等,也可以是自定义组件,本节笔者简单介绍一下自定义组件的语法规范。
    的头像 发表于 04-08 10:17 770次阅读