1、循环校验码(CRC 码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段
和校验字段的长度可以任意选定。
2、生成 CRC 码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’
1010111 对应的多项式为 x6+x4+x2+x+1,而多项式为
3、CRC 码集选择的原则:若设码字长度为 N,信息字段为 K 位,校验字段为 R 位(N=K+R),
则对于 CRC 码集中的任一码字,存在且仅存在一个 R 次多项式 g(x),使得
V(x)=A(x)g(x)=xRm(x)+r(x);
发送方:发出的传输字段为: 1 0 1 1 0 0 1 1 0 10
信息字段 校验字段
crc算法已经有成熟和比较经典的现成代码可供我们利用。CRC 计算可以靠专用的硬件来实现,
但是对于低成本的微控制器系统,在没有硬件支持下实现 CRC 检验,关键的问题就是如何通过软
件来完成 CRC 计算,也就是 CRC 算法的问题。CRC 校验的基本思想是利用线性编码理论,在发
送端根据要传送的 k 位二进制码序列,以一定的规则产生一个校验用的监督码(既 CRC 码)r 位,
并附在信息后边,构成一个新的二进制码序列数共 (k+r)位,最后发送出去。在接收端,则根据信
息码和 CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。
16 位的 CRC 码产生的规则是先将要发送的二进制序列数左移 16 位(既乘以)后,再除以一个
多项式,最后所得到的余数既是 CRC 码。任意一个由二进制位串组成的代码都可以和一个系数仅
为‘0’和‘1’取值的多项式一一对应。例如:代码1010111 对应的多项式为 x6+x4+x2+x+1,而多项式
为 x5+x3+x2+x+1 对应的代码 101111。