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

    文章

    206

    浏览量

    30967
  • 信号
    +关注

    关注

    12

    文章

    2935

    浏览量

    80422
  • MASTER
    +关注

    关注

    0

    文章

    112

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件上的简单硬件设计。
    的头像 发表于 04-09 09:53 260次阅读
    使用Python/MyHDL创建<b class='flag-5'>自定义</b>FPGA IP

    MCUXpresso SDK创建自定义清单

    概述 MCUXpresso SDK 24.12 介绍塞德恩汉CED支持自定义清单,使开发人员能够精确定义其工作区包含哪些组件、驱动程序、中间件和板支持包。此功能在极简主义、可重复性和 CI/CD
    发表于 04-07 07:11

    极海APM32F427如何实现自定义USB HID设备与PC进行通信

    最近需要使用到 APM32F427 枚举成Custom HID设备进行用户自定义通信,但是官方的例程只有提供的HID枚举为鼠标或者键盘类型的设备。这里记录一下,怎么使用Geehy官方的USB中间件,实现自定义的USB HID设备进行用户通信。
    的头像 发表于 03-30 09:30 2786次阅读
    极海APM32F427如何实现<b class='flag-5'>自定义</b>USB HID设备与PC进行通信

    一文解读CRC校验

    校验的过程是什么? 发送方根据发送报文,计算出CRC值。将原始信息和该CRC值一起发送给接收方。接收方根据原始信息,按照同样的算法,计算CRC
    发表于 01-26 07:20

    如何保证电能质量在线监测装置的自定义监测时段功能的准确性和稳定性?

    要保证电能质量在线监测装置 自定义监测时段功能 的准确性(时段执行精准、数据采集可靠)和稳定性(长期无故障、异常自动恢复),需从 时间基准、硬件保障、软件调度、配置校验、容错冗余、运维校准 六个维度
    的头像 发表于 12-10 14:03 505次阅读
    如何保证电能质量在线监测装置的<b class='flag-5'>自定义</b>监测时段功能的准确性和稳定性?

    无图形界面模式下自定义检查工具的应用

    此前文章已介绍 ANSA 自定义检查工具。本文将探讨该功能在无图形界面(No-GUI)模式下的应用,旨在满足标准化工作流程的需求,适用于需要高度自动化的前处理场景。通过集成自定义检查,用户可实现工作流程的高效自动化运行。
    的头像 发表于 11-30 14:13 790次阅读
    无图形界面模式下<b class='flag-5'>自定义</b>检查工具的应用

    硬件循环冗余校验CRC)模块介绍

    CRC是一种错误检测码,用于检测数据传输或存储的意外更改。它通过对数据应用特定的算法生成一个固定长度的校验值。这个校验值附加在数据后面,接
    发表于 11-21 07:39

    CRC校验的原理和应用

    原理: CRC校验将数据视为一个二进制多项式,用一个预先定义好的生成多项式(Generator Polynomial) 进行模2除法,得到的余数作为CRC
    发表于 11-14 06:48

    CRC校验的本质和物理意义

    工业控制系统,Modbus RTU协议的CRC校验如同通信网络的\"免疫系统\",某石化厂DCS系统曾因CRC计算错误导致0.3%的数据包丢失,引发连锁控制故障。 一、
    发表于 11-13 07:58

    电能质量在线监测装置的数据推送协议是否可以自定义配置?

    、核心协议配置能力 1. 协议参数自定义 主流装置支持对协议底层参数进行精细化调整,包括但不限于: 物理层配置 :波特率(1200-115200bps)、数据位(7-8 位)、停止位(1-2 位)、校验方式(CRC、奇偶
    的头像 发表于 11-12 13:58 562次阅读
    电能质量在线监测装置的数据推送协议是否可以<b class='flag-5'>自定义</b>配置?

    如何在e203 SOC添加自定义外设

    如何在E203 添加自定义的外设,困扰已久,以下是一个从别处借鉴而来的方法: 1、设计好自定义外设的RTL后,在其中添加ICB总线的握手协议和读写寄存器。 2、设计一个对外接口,用来设定
    发表于 10-20 10:38

    LOTO示波器自定义解码功能—CANFD解码

    /?spm_id_from=333.1365.list.card_archive.click 。 视频仅对串口进行解码演示,正好我们从客户手中拿到了一块USB转CAN/CANFD模块,如下图所示, 本文借此对自定义解码功能
    的头像 发表于 07-11 10:34 1215次阅读
    LOTO示波器<b class='flag-5'>自定义</b>解码功能—CANFD解码

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

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

    KiCad 自定义规则(KiCon 演讲)

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

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

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