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

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;
}

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值