·上一文章:基于单片机的智能仪器前面板的设计实现
·下一文章:基于LPC2148的音频分析仪设计
0 引言
对于基于flash控制器的8051的芯片结构,一般在进行数据传输时,都是先通过串口将数据传送到flash控制器的buffer中。由于buffer的大小为512 bytes,所以每次传输的最大数据量为512bytes。本文中所讨论的三种检错方法的传输数据量均为512 bytes。
1 检错方式
基于8051的串口数据通信系统的硬件开发平台框图如图1所示。利用该平台进行数据传输时,通常有三种数据检错方式。
1.1 奇偶校验
奇偶校验是检错中比较常见的一种方法。它利用数据中的1的个数作为检错的标志位,若1的个数为奇数个,则错误检测的标志位为1,若1的个数为偶数,则错误检测的标志位为0。在发送端和接收端同时检测奇偶位,若得到相同的结果,则说明数据传输过程无错误发生;若得到不同的结果,则说明数据传输过程中有错误发生,此时8051会发送一个错误重传的信号,让PC端再次发送数据。
1.2 循环冗余校验(CRC)
CRC是利用除法和余数的原理来进行错误检测(Error Detecting)。如果原始数据为多项式JP(x),则将P(x)对生成的多项式G(x)进行模2除法,再将得到的余式R(x)作为生成的CRC校验码,用公式可以表示为:
P(x)=Q(x)·G(x)+R(x)
上式中的Q(x)为除法得到的商。发送端将原始数据P(x)和生成的CRC校验码R(x)发送到接收端。接收端则根据接收到的数据P'(x)算出另外的一个CRC校验码R'(x),然后对两个CRC校验码进行比较,即可得出在传输过程中是否有错误发生。若发生错误,则用发送端重传。本文中所采用的CRC8所生成的多项式G(x)为:x2+x5+x4+1。