AutoSar中关于E2E报文的实现

E2E报文需要在报文中加入CheckSum,Counter

1.CRC

AutoSar的CrC8算法校验

1)使用现有的第三方库crc,crcmod

from crc import CrcCalculator, Crc8

CRC8H2F = CrcCalculator(Crc8.AUTOSAR).calculate_checksum
crc_0x96 = CRC8H2F(CalculateCRC_0x96)

2)自定义CRC8算法

def CRC8H2F(u8_data: list):
    u8_crc8 = 0xFF # 初始化CRC
    u8_poly = 0x2F # 多项式
    u8_XOR = 0xFF
    for src_data in u8_data:
        u8_crc8 ^= src_data
        for j in range(0, 8):
            if u8_crc8 & 0x80:
                u8_crc8 = (u8_crc8 << 1) ^ u8_poly
            else:
                u8_crc8 <<= 1
    u8_crc8 ^= u8_XOR
    u8_crc8 &= 0xFF
    return u8_crc8

2.Counter和报文绑定,没发一帧报文,Counter加一,加到15再从1开始

例如这是发送函数的部分代码

 

posted @ 2022-11-09 15:16  小柴i  阅读(1189)  评论(0编辑  收藏  举报