如何计算E2E Profile 1的CRC

目录

1 E2E Profile 1使用的CRC算法

1.1 8-bit SAE-J1850 CRC算法的介绍

2 E2E Profile 1计算CRC过程

2.1 主机厂向供应商提供的E2E Profile 1的配置参数信息

2.2 E2E Profile 1的流程图

2.3 推荐:手动计算E2E Profile 1的CRC

结尾


推荐阅读链接:

【AUTOSAR-E2E】-1.1-End-to-End通信保护介绍(Functional Safety功能安全相关)_autosar e2e故障后如何处理-优快云博客icon-default.png?t=O83Ahttps://blog.youkuaiyun.com/qfmzhu/article/details/122334722

1 E2E Profile 1使用的CRC算法

在Autosar文档AUTOSAR_SWS_E2ELibrarySpecification of SW-C End-to-End Communication Protection Library.pdf中,介绍了E2E Profile 1的CRC算法引用自文档AUTOSAR_SWS_CRCLibrarySpecification of CRC Routines.pdf中的8-bit SAE J1850 CRC,并将其封装为接口函数Crc_CalculateCRC8()

1.1 8-bit SAE-J1850 CRC算法的介绍

CRC 模块的功能是根据 SAE-J1850 CRC8 标准执行 CRC8 例程:

CRC result width: 循环冗余校验的位长度

8 bits

Polynomial: 多项式

1Dh

Initial value: 初始值

FFh

Input data reflected: 反映的输入数据

No

Result data reflected: 反映的结果数据

No

XOR value:

FFh

Check: 校验

4Bh

Magic check: 魔法校验

C4h

CRC 模块的功能应提供以下 CRC 结果:

Data bytes (hexadecimal)

CRC

00

00

00

00

59

F2

01

83

37

0F

AA

00

55

79

00

FF

55

11

B8

33

22

55

AA

BB

CC

DD

EE

FF

CB

92

6B

55

8C

FF

FF

FF

FF

74

2 E2E Profile 1计算CRC过程

2.1 主机厂向供应商提供的E2E Profile 1的配置参数信息

E2E Profile 1的参数用E2E_P01ConfigType描述,包含以下信息,这些参数将被用于接口函数E2E_P01ProtectE2E_P01Check

CounterOffset

uint16

Counter在MSB第一顺序的位偏移。在变体1A和1B中,CounterOffset为8,offset应为4的倍数。

CRCOffset

uint16

CRC的位偏移(即自*Data起),以MSB为第一顺序。在变体1A和1B中,CRCOffset为0,offset应为8的倍数。

DataID

uint16

唯一标识符,用于防止伪装。标识符值的选择有一些限制,详见“Configuration constraints on Data IDs”一节。

DataIDNibbleOffset

uint16

Data ID高位字节低位字节的位偏移。只有在DataIDMode = E2E_P01_DATAID_NIBBLE时,E2E库才会使用该参数(否则E2E库将忽略该参数)。

(否则,E2E库将忽略该参数)。

对于不同于E2E_P01_DATAID_NIBBLE的DataIDMode,DataIDNibbleOffset应初始化为0(即使E2E库忽略它)。

DataIDMode

E2E_P01DataIDMode

ID在CRC计算中的包含模式(包含两个字节、交替包含或仅包含ID的低字节)。

E2E_P01_DATAID_BOTH

E2E_P01_DATAID_ALT

E2E_P01_DATAID_LOW

E2E_P01_DATAID_NIBBLE

DataLength

uint16

数据长度(单位Bit)。该值应为8的倍数,且应小于240。

MaxDeltaCounterInit

uint8

两个连续接收到的有效数据的两个counter值之间的初始最大允许间隔。例如,如果接收方收到counter为1的数据,且MaxDeltaCounterInit为1,则在下一次接收时,接收方可接收counter值为2和3的数据,但不能接收counter值为4的数据。

注意,如果接收方在连续读取时没有接收到新数据,那么接收方会将容差递增1。

MaxNoNewOrRepeatedData

uint8

接收方在正常通信条件下预计不会超过的最大缺失或重复数据量。

SyncCounterInit

uint8

验证counter一致性所需的数据数,在检测到接收到的counter出现意外行为后,必须接收到有效counter(即在允许锁定范围内的counter)。

2.2 E2E Profile 1的流程图

接口函数E2E_P01Protect计算一个CRC的流程图:

2.3 推荐:手动计算E2E Profile 1的CRC

假设8位的CRC信号位置在Byte0,4位的Counter信号位置在Byte1的低四位,整个数据8个Byte,DataID为0x013C,DataIDMode = E2E_P01_DATAID_BOTH

8个字节的数据为:

BC 7E 19 01 00 00 00 00

CRC计算网站:

CRC在线计算 (lddgo.net)icon-default.png?t=O83Ahttps://www.lddgo.net/encrypt/crc

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注优快云博客“汽车电子助手”,做您的好助手。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车电子助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值