CRC校验学习笔记
在两台设备传输过程中,如果对数据要求较高,需要高的准确性,那么校验是必不可少的。一般用到的校验方式有奇偶校验和CRC校验。
假设我们要用单片机和pc之间进行通信,每次数据不能出错,如果出错,那么这一帧数据直接无效,那么用什么方法可以检验其有效性?
假设数据为111010(数据段)+(校验位)。
下面就上述例子介绍CRC校验:
首先发送端要将数据进行打包处理。就上述而言,每次我们要发送6+n个数据,n为CRC的n位冗余码,将这些数据包打包后构成一帧完整的数据发送出去。
数据处理的方法如下:
注:这里说明一下,如果约定的除数为n为二进制,那么得到的余数规定为n-1位,也就是n-1个冗余码。
假设约定的除数为1101,那么就用111010除以1101得到余数为011,即三位冗余码。
有3为冗余码就要把原来的数据左移3位,即:
2^3*(原数据)
处理之后原来的数据变成了6+3个,即111010011
这就完成了发送端的处理。
接收端:
接受每一帧数据以后,拿这帧数据除以1101,得到余数为0.
111010011/1101=0
校验完毕!