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

    文章

    204

    浏览量

    30170
  • 信号
    +关注

    关注

    11

    文章

    2856

    浏览量

    78440
  • MASTER
    +关注

    关注

    0

    文章

    109

    浏览量

    11785
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    大彩讲堂:VisualTFT软件如何自定义圆形进度条

    VisualTFT软件如何自定义圆形进度条
    的头像 发表于 07-07 17:10 ?561次阅读
    大彩讲堂:VisualTFT软件如何<b class='flag-5'>自定义</b>圆形进度条

    KiCad 自定义规则(KiCon 演讲)

    “ ?Seth Hillbrand 在 KiCon US 2025 上为大家介绍了 KiCad 的规则系统,并详细讲解了自定义规则的设计与实例。? ” ? 演讲主要围绕 加强 KiCad 自定义
    的头像 发表于 06-16 11:17 ?720次阅读
    KiCad <b class='flag-5'>中</b>的<b class='flag-5'>自定义</b>规则(KiCon 演讲)

    HarmonyOS应用自定义键盘解决方案

    自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义键盘可以
    的头像 发表于 06-05 14:19 ?767次阅读

    LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令自定义封装

    LabVIEW高效加工指令自定义封装
    的头像 发表于 04-08 13:49 ?2751次阅读
    LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令<b class='flag-5'>自定义</b>封装

    custom.c自定义代码无法自动保存怎么解决?

    我在custom.c插入自定义代码,当我不保存就切换到其他文件时,custom.c自定义代码就会消失。我该如何解决这个问题
    发表于 04-08 06:00

    基于Verilog语言实现CRC校验

    CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数
    的头像 发表于 03-24 10:36 ?1573次阅读
    基于Verilog语言实现<b class='flag-5'>CRC</b><b class='flag-5'>校验</b>

    如何添加自定义单板

    在开发过程,用户有时需要创建自定义板配置。本节将通过一个实例讲解用户如何创建属于自己的machine,下面以g2l-test.conf为例进行说明。
    的头像 发表于 03-12 14:43 ?644次阅读

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

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

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

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

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

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

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

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

    如何创建TestStand自定义步骤

    在之前的课程简单地介绍过TestStand自带的一些步骤类型,如测试、消息弹窗、赋值、标签等等,这些简单的步骤从TestStand的插入选版中就可以添加到序列。那么在使用如果碰到需要实现更加灵活、复杂的功能,使用自带的一些
    的头像 发表于 09-11 14:46 ?2618次阅读
    如何创建TestStand<b class='flag-5'>自定义</b>步骤

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划。
    的头像 发表于 08-15 11:49 ?1306次阅读
    EtherCAT运动控制器PT/PVT实现用户<b class='flag-5'>自定义</b>轨迹规划