Autosar --- CRC8 SAE J1850 CRC计算

前言

        CRC计算一般用于通信中,用来保证一组数据的完整性。 发送方发送一组数据dataA+CRC检验码CRCa(CRC校验码由数据算出); 接收方接收到数据dataA+CRC校验码CRCa,接收方通过与发送方约定好的计算公式,计算出一个CRC校验码CRCb, 如果CRCa = CRCb,则表示这一帧数据没有被篡改。有时候为了保证数据的连续性,也会加上一个rolling count。

一、原理

CRC原理可以参考文章: CRC8算法的解读,以及在E2E通信保护的应用_crc8查表法-CSDN博客

二、Autosar 规范

下面的这些参数非常重要,完全决定了你的CRC值对不对

A:  CRC result width: 8bit

B:  Polynomial : 0x1D

C:  Initial value : 0xFF

D:  Input data reflected : NO

E:  Result data reflected : NO

F:  XOR value : 0xFF

三、Autosar示例验证

Autosar规范中给了一些例子,我将它分为7组

接下来我们打开下面的网页,针对上面规范中给出的参数,以及例子中的数据,我们进行一个校验。      CRC在线计算

图片里的ABCDEF与规范中的参数一一对应。 输入Autosar例子中的第一组数据,得出计算出来的结果与例子的一致。

四、CRC配置

4.1 Crc General

4.2 Crc Channels Configuration

五、Mcu

CRC时钟使能,如果选择Table计算的话,这里应该就不用配置了。如果选择硬件计算,那就要打开CRC的硬件时钟。

六、代码实现

6.1 代码实现

volatile uint32_t CrcResult1;

uint8 testdata1[3] = { 0xF2, 0x01, 0x83 };

CrcResult1 = Crc_CalculateCRC8(&testdata1[0], 3, 0U, TRUE);

6.2 Crc_CalculateCRC8函数讲解

uint8 Crc_CalculateCRC8(const uint8 *Crc_DataPtr, uint32 Crc_Length, uint8 Crc_StartValue8, boolean Crc_IsFirstCall)

参数1:要计算的数据源

参数2:计算几个字节的数据

参数3:start Value,  如果参数4为1,则忽略这个值。 如果参数4为0,那么计算的起始值则为这个数(这里看不懂没关系,下面会有例子详细的讲解)

参数4:True:第一次调用   FALSE: 后续调用

返回值: 计算的结果

这里使用autosar规范中例子2中数据参与计算,得出结果0x37,与规范一致。

函数Crc_CalculateCRC8()最终还是将要计算的数据,在下表中通过查表的方式计算出来。

Crc_lp_Lookup_Tables.c中:

6.3 Crc_CalculateCRC8参数3详解

6.3.1 参数4为TRUE

uint8 testdata1[3] = { 0xF2, 0x01, 0x83 };

CrcResult1 = Crc_CalculateCRC8(&testdata1[0], 3, 0U, TRUE);
CrcResult2 = Crc_CalculateCRC8(&testdata1[0], 3, 2U, TRUE);

当参数4为TRUE的时候,参数3的值是不起作用的,这时候上面计算出来的结果是一致的,如下:

6.3.2 参数4为FLASE

上面的例子跟计算结果好好地研究理解下,就能知道参数3跟4的用处了。

1:计算出table1的结果

2:计算出table2的结果

3:将table1和table2合在一起,生成table3,计算出table3的结果

4:计算出table3的前三个数据的结果,理论上跟1的结果一致

5:将参数4改为false, 参数3改为4的结果,那么就是将4的结果作为起始值,然后结算table3后四个数据的结果,理论上跟3出来的结果一致

6:6和5的区别就是参数4为false还是true, 证明了为true的时候,参数3不起作用。结果与2一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/329706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

*p++和(*p)++一样吗

大家好,今天给大家介绍*p和(*p)的区别,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 *p 和 (*p) 在 C/C 语言中具有不同的含义。 *p:这个表…

Java研学-Maven基础

一 概述 Maven是一个跨平台的项目管理工具,主要用于基于 Java 平台的项目(Maven 底层为Java)构建、依赖包管理和项目信息管理,只需要运行一条简单的命令,就能高效的完成构建动作   Maven 能提供一种项目的依赖配置&a…

精细微调技术在大型预训练模型优化中的应用

目录 前言1 Delta微调简介2 参数微调的有效性2.1 通用知识的激发2.2 高效的优化手段3 Delta微调的类别3.1 增量式微调3.2 指定式微调3.3 重参数化方法 4 统一不同微调方法4.1 整合多种微调方法4.2 动态调整微调策略4.3 超参数搜索和优化 结语 前言 随着大型预训练模型在自然语…

超优秀的三维模型优化平台(轻量化、格式转换、可视化等)

老子云概述 老子云3D可视化快速开发平台,集云压缩、云烘焙、云存储云展示于一体,使3D模型资源自动输出至移动端PC端、Web端,能在多设备、全平台进行展示和交互,是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 基于 …

C#,人工智能,机器人,路径规划,A*(AStar Algorithm)算法、源代码及计算数据可视化

Peter Hart Nils Nilsson Bertram Raphael 参考: C#,人工智能(AI)机器人路径规划(Path Planning)的ARA*(Anytime Replanning A* Algorithm)算法与源程序https://blog.csdn.net/…

Apache Doris (六十四): Flink Doris Connector - (1)-源码编译

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Flink与Doris版本兼容

【大数据】Flink 详解(八):SQL 篇 Ⅰ

《Flink 详解》系列(已完结),共包含以下 10 10 10 篇文章: 【大数据】Flink 详解(一):基础篇【大数据】Flink 详解(二):核心篇 Ⅰ【大数据】Flink 详解&…

基于Java+SSM+MYSQL的助农特色农产品销售系统详细设计和实现【附源码】

基于JavaSSM助农特色农产品销售系统详细设计和实现【附源码】 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定…

笔试面试题——继承和多态

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、什么是多态?二、什么是重载、重写(覆盖)、重定义(隐藏)?三、 inli…

使用 Python 创造你自己的计算机游戏(游戏编程快速上手)第四版:第十九章到第二十一章

十九、碰撞检测 原文:inventwithpython.com/invent4thed/chapter19.html 译者:飞龙 协议:CC BY-NC-SA 4.0 碰撞检测涉及确定屏幕上的两个物体何时相互接触(即发生碰撞)。碰撞检测对于游戏非常有用。例如,如…

《动手学深度学习》学习笔记 第9章 现代循环神经网络

本系列为《动手学深度学习》学习笔记 书籍链接:动手学深度学习 笔记是从第四章开始,前面三章为基础知识,有需要的可以自己去看看 关于本系列笔记: 书里为了让读者更好的理解,有大篇幅的描述性的文字,内容很…

成功 BOM 流程的五个基本要素

您应该以确保 BOM 流程的方式实现和启用它们: 准确的 当前的 完全的 清除 可行的 追求准确性 为下游提供准确数据 制造商使用其 BOM 来通知下游操作他们需要执行什么。不言而喻,向其他团队和员工提供准确的信息至关重要;否则&…

transbigdata笔记:栅格参数优化

在transbigdata中,栅格参数有如下几个 params(lonStart,latStart,deltaLon,deltaLat,theta) 如何选择合适的栅格参数是很重要的事情,这会对最终的分析结果产生很大的影响。 怎么选择参数,和数据以及分析的目的息息相关,transbi…

25考研英语复习计划

Hello各位小伙伴大家好,今天要给大家分享的是英语备考计划,大家可以作为参考,制定适合自己的备考计划。 【英一/二】 英语分为英一、英二,一般学硕英一,专硕英二。 英一要比英二难度大。 【复习计划】 1-2月&#xf…

383. 观光(dp思想运用,Dijkstra)

383. 观光 - AcWing题库 “您的个人假期”旅行社组织了一次比荷卢经济联盟的巴士之旅。 比荷卢经济联盟有很多公交线路。 每天公共汽车都会从一座城市开往另一座城市。 沿途汽车可能会在一些城市(零或更多)停靠。 旅行社计划旅途从 S 城市出发&…

1.C语言基础知识

这里写目录标题 1.第一个C语言程序2.注释3.标识符4.关键字5.数据类型6.变量7.常量8.运算符9.输入输出输入输出 1.第一个C语言程序 C语言的编程框架 #include <stdio.h> int main() {/* 我的第一个 C 程序 */printf("Hello, World! \n");return 0; }2.注释 单行…

信管网2023年上半年信息系统项目管理师论文真题

链接 信息系统项目管理师真题题库 - 信管网 上午综合知识、下午案例分析和下午论文三部分 可以单个试题查看 可以在线考试 在线考试又分&#xff1a;考试模式、练习模式和机考模式

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(6)解散部门

指路&#xff08;1&#xff09;&#xff08;2&#xff09;&#xff08;3&#xff09;&#xff08;4&#xff09;&#xff08;5&#xff09;&#x1f447; 黑马程序员JavaWeb开发|案例&#xff1a;tlias智能学习辅助系统&#xff08;1&#xff09;准备工作、部门管理_tlias智能…

【Qt】Qt配置

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt SDK下载 二、配置环境变量 三、新建工程(QWidget) 四、QWidg…

今年第一个互联网医疗IPO,健康之路靠医药零售“再上一层楼”?

提起互联网医疗&#xff0c;大家最先想到的或许是阿里健康、京东健康、丁香医生等“名号响亮”的公司。事实上&#xff0c;健康之路开辟互联网医疗之路的时间比这些巨头们更早。据悉&#xff0c;2001年&#xff0c;健康之路就将互联网和医院资源结合&#xff0c;是第一批开展线…