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

    文章

    199

    浏览量

    29432
  • 信号
    +关注

    关注

    11

    文章

    2778

    浏览量

    76603
  • MASTER
    +关注

    关注

    0

    文章

    103

    浏览量

    11260
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    浅析MCU通信、存储常用的简单校验算法

    UART有一个奇偶校验,CAN通信有CRC校验。Modbus、MAVlink、USB等通信协议也有校验信息。
    的头像 发表于 03-07 10:56 473次阅读
    浅析MCU通信、存储常用的简单<b class='flag-5'>校验算法</b>

    fpga报告crc故障是什么意思

    方法,通过对发送的数据进行计算并附加到数据末尾,接收方能够使用相同的校验算法来检测传输的错误。CRC可以检测多种不同类型的错
    的头像 发表于 01-04 11:06 1310次阅读

    虹科技术|保障数据传输稳定性:BabyLIN产品的CRC算法实现

    文章将以CRC8校验为例,介绍在BabyLIN产品如何使用CRC校验算法CRC
    的头像 发表于 01-02 10:45 461次阅读
    虹科技术|保障数据传输稳定性:BabyLIN产品的<b class='flag-5'>CRC</b><b class='flag-5'>算法</b>实现

    基于YOLOv8实现自定义姿态评估模型训练

    Hello大家好,今天给大家分享一下如何基于YOLOv8姿态评估模型,实现在自定义数据集上,完成自定义姿态评估模型的训练与推理。
    的头像 发表于 12-25 11:29 2773次阅读
    基于YOLOv8实现<b class='flag-5'>自定义</b>姿态评估模型训练

    博途用户自定义库的使用

    博途官方提供了很多库,比如:基本函数库、通信库、安全库、驱动库等等,用户可以使用库的函数/函数块来完成具体的控制任务。除了官方的库,我们也可以创建自己的库(用户自定义库)。比如,把项目
    的头像 发表于 12-25 10:08 873次阅读
    博途用户<b class='flag-5'>自定义</b>库的使用

    简述循环冗余码crc校验方法的工作原理

    位 首先,需要将需要进行CRC校验的数据进行补位操作。CRC校验算法通常以二进制的形式工作,因此需要将原始数据转换为二进制。同时,生成多项式也需要进行补位操作,使其与数据的位数相对应。
    的头像 发表于 12-20 11:27 1164次阅读