CRC校验

作者: 道无显隐 | 来源:发表于2017-01-22 22:48 被阅读0次

采用如下的CRC校验方法

冗余循环码(CRC)包含2个字节。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如两者不相符,则表明出错。

CRC码的计算方法是,先预置16位寄存器全为1。再逐步把8位数据信息进行处理。在进行CRC码计算时只用8位数据位;起始位、停止位及奇偶校验位都不参与CRC码计算。

计算CRC码的步骤:

  1. 预置16bits寄存器为为0xFFFF(即全为1),称此寄存器位CRC寄存器。
  1. 把第一个8bits数据与16bits CRC寄存器的低位相异或,把结果放于CRC寄存器。
  1. 把CRC寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位。
  1. 如果最低位为0:重复第3步;如果最低位为1:CRC寄存器与0xA001进行异或运算。
  1. 重复步骤3和4,直至右移8次,这样整个8bits数据全部进行了处理。
  1. 重复步骤2到步骤5,进行下一个8bits数据的处理。
  1. 最后得到的CRC寄存器即为CRC码。

代码如下:

void crc16(uint8_t data,uint16_t* crc){
  uint8_t i=0;
  while(i<8){
    *crc ^= ((uint16_t)data);
    shift:  *crc >>=1;
    if(*crc&0x0001)
      *crc ^=0xa001;
    else
    goto shift;
    i++;
  }
}

相关文章

  • 硬件连接-CRC32

    一,iOS CRC32校验 项目中用到蓝牙,遇到了CRC32校验失败; CRC校验失败的原因: 1,发的固件是空的...

  • CRC全套算法 CRC4,CRC5,CRC7,CRC8,CRC1

    出处-->全套CRC校验

  • iOS CRC16 校验码

    CRC 在线校验地址:https://www.lammertbies.nl/comm/info/crc-calcu...

  • MySQL crc32 & crc64函数 提高字符串查询效率

    一、概念:CRC全称为Cyclic Redundancy Check,又叫循环冗余校验。CRC32是CRC算法的一...

  • 一文知晓CRC码计算及校验原理

    奇偶校验码(PCC)只能校验一位错误,而循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。 1. CRC校...

  • 循环冗余校验(CRC)算法入门引导

    循环冗余校验(CRC)算法入门引导

  • iOS CRC 校验

    CRC校验,全名叫做循环冗余校验码,是数据通讯中最常采用的校验方式。为了学习这个CRC,在网上找了好多资料,下面这...

  • CRC校验

    CRC校验 是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(C...

  • CRC校验

    采用如下的CRC校验方法 冗余循环码(CRC)包含2个字节。CRC码由发送设备计算,放置于发送信息的尾部。接收信息...

  • CRC校验

    1. 基本概念 1.1 模2运算   模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC...

网友评论

      本文标题:CRC校验

      本文链接:https://www.haomeiwen.com/subject/rggobttx.html