目录
2.1 主机厂向供应商提供的E2E Profile 1的配置参数信息
推荐阅读链接:
1 E2E Profile 1使用的CRC算法
在Autosar文档AUTOSAR_SWS_E2ELibrary(Specification of SW-C End-to-End Communication Protection Library).pdf中,介绍了E2E Profile 1的CRC算法引用自文档AUTOSAR_SWS_CRCLibrary(Specification 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_P01Protect和E2E_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)https://www.lddgo.net/encrypt/crc
结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注优快云博客“汽车电子助手”,做您的好助手。