新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 8051单片机串口通信中的检错方法

8051单片机串口通信中的检错方法

作者: 时间:2009-12-08 来源:网络 收藏

1.3 汉明码(Hamming)
汉明码是在一组代码中加入一定数量的冗余,以形成一组新的数据。新加入的冗余数据被称为校验位。若某个信息位出错,则将引起几组奇偶校验结果均出错,由此根据奇偶组的检错,便可确定误码的信息位及性质。汉明码具有如下特点:
码长:N=2m-1
信息码位:k=2m-m-1
监督码位:r=N-k=m,其中m≥2正整数
由于本文中的检错对象是发送,一次发送8 bits数据,故需要的冗余位为4 bits,本文采用的汉明码为(12,8),其编码由8 bits数据和4bits组成。设数据分别为a0,a1,a2,a3,a4,a5,a6,a7。检验位为a8,a9,a10,a11,它们可按下面的式子决定:

本文引用地址:https://www.eepw.com.cn/article/173544.htm


2 测试环境及原理
本文的测试平台分为两部分,即PC发送部分和8051接收部分。PC通过串口发送数据,每次串口发送的单位为8 bits。8051通过串口接收PC发送的数据。由于硬件的限制,8051中存储数据的buffer最大为512 bytes。所以PC端的数据每次也只发送512 bytes,总共测试的数据大小为8 K bytes,传输完8 K bytes的数据需要16次。串口传输的波特率为57600。8051接收来自PC的数据,每次接收512 bytes数据,并进行错误检测。若检测到错误,则给PC发送一个重传请求,若没有检测到错误,则给PC发送一个继续传输的命令。
为了提高传输效率,在不影响检错的情况下,可分别对奇偶校验、CRC校验、汉明码校验采用不同的数据传输结构。
奇偶校验每发送8 bits数据就算出1 bit的奇偶位,在算出8 bits的奇偶位之后,再将校验位一起发送到8051,其中数据D为512 bytes,Group为64bytes,data为8 bits数据。其数据结构如图2所示。

CRC校验时,每512 bytes数据产生1bytes校验位并发送到8051,其数据结构如图3所示。其中D为512 bytes,data为512 bytes,CRC byte为8bit。即每512个bytes得到一个CRC校验值。汉明码由于采用了(12,4),每8 bits数据产生4 bits的校验位。故其数据结构如图4所示,图中,D为512 bytes的数据,data为8 bits的数据。



评论


相关推荐

技术专区

关闭