CRC-8(PEC)校验原理以及实现

本文详细介绍了CRC-8(PEC)校验码的生成原理及过程,给出了具体的计算实例,并提供了源代码实现。CRC-8(PEC)采用X8+X2+X1+1多项式,通过逐位异或运算完成数据校验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CRC-8(PEC)是具有多项式的CRC-8 X8+X2+X1+1。

X8+X2+X1+1 = 2^8+2^2+2^1+1 = 0x107 = 1 0000 0111

例如:0XB4经过CRC-8(PEC)后得到0X05,以下是换算过程

     1011 0100 0000 0000 (0XB4<<8)

^   1000 0011 1xxx xxxx (0x107)


     0011 0111 1000 0000

^       10 0000 111x xxxx


   0001 0111 0110 0000

^       1 0000 0111 xxxx


  0000 0111 0001 0000

^           100 0001 11xx


0000 0011 0000 1100

^           10 0000 111x


0000 0001 0000 0010

^              1 0000 0111


 0000 0000 0000 0101 = 0x05

源代码实现:

static uint8_t PEC_Calculation(uint8_t *dat , uint8_t len)

{
        uint8_t i;
        uint8_t crc=0;
        while( len-- )

        {
                crc ^= *dat++;
                for( i=0 ; i<8 ; i++ )
                {
                        if( crc&0x80 ) {
                                crc = (crc<<1)^0x07;
                        } else {
                                crc = (crc<<1);
                        }
                }
        }
        return crc;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值