CRC差错检验法在PC机与8031单片机串行通讯中的应用
- 格式:pdf
- 大小:106.02 KB
- 文档页数:2
crc应用场景CRC(Cyclic Redundancy Check)是一种常用的错误检测技术,它可以在数据传输过程中检测出数据是否出现了错误。
CRC应用广泛,下面将从不同的场景来介绍其应用。
一、网络通信在网络通信中,数据包传输过程中可能会发生丢包、损坏等情况,为了保证数据的可靠性,在发送端对数据进行CRC校验,接收端收到数据后也进行CRC校验,如果校验结果不一致,则说明数据发生了错误。
这样可以确保数据传输的正确性。
二、存储设备在存储设备中,比如硬盘、U盘等,也需要使用CRC来检测数据是否出现错误。
由于存储设备容量较大,可能会出现部分扇区损坏导致文件无法正常读取的情况。
通过对文件进行CRC校验,在读取文件时可以及时发现错误并进行修复。
三、数字电视数字电视信号中也使用了CRC技术来保证信号的可靠性。
由于数字电视信号需要经过传输和解码等多个环节,在每个环节都需要进行CRC校验以确保信号正确传递和解码。
四、无线通信在无线通信中,由于受到干扰和衰减等因素影响,数据传输很容易出现错误。
因此,在无线通信中也需要使用CRC技术来保证数据的可靠性。
五、自动控制系统在自动控制系统中,数据的准确性对于系统的正常运行至关重要。
因此,在自动控制系统中也需要使用CRC技术来检测数据是否出现错误,以确保系统的正常运行。
六、音视频传输在音视频传输中,由于其带宽较大,需要进行压缩和解压缩等多个环节。
在每个环节都需要进行CRC校验以确保音视频信号的正确传递和解码。
七、安全领域在安全领域中,CRC技术可以用来验证文件是否被篡改。
通过对文件进行CRC校验,在文件被篡改后可以及时发现并进行修复。
总结:以上就是CRC技术在不同场景下的应用介绍。
可以看出,CRC技术是一种非常实用的错误检测技术,在很多领域都有广泛应用,并且能够有效地提高数据传输和处理的可靠性。
两个8031单片机之间的数据通信电路及
程序
下图为采纳RS-232C标准接口实现两个8031单片机之间数据通信的连接电路
相应的通信程序可用串行口中断法或串行口查询法编制。
1、用串行口中断法编制程序。
约定如下:
(a)假定甲、乙双方既可发又可收。
(b)它们的通信波特率为300波特,对6MHz晶体振荡频率,THl预置为#CCH,,并设T1为定时方式2,SM0D设置为o。
(c)双方都采纳串行口方式3,即字符路式为l位起始位,8位数据位(低位在前),1位可编程设置的第9位(下面的程序将此位清零),以及1位停止位(即设置SM0,SM1都为
1),TB8清零。
(d)欲发送或接收的数据块首地址存放78H、77H中,其中78H为首地址高字节暂存单元,77H为苜地址低字节暂存单元;数据块长度存放在72H,71H中,其中72H为长度高字节暂存单元,71H为长度低字节暂存单元。
(c)甲,乙双方都采纳串行口中断发送和接收,因此,设置EA=1,ES=]。
依照上面的约定,用串行口中断法编制通信程序如下:
以上是甲、乙两机发送接收子程序,假如甲机向乙机发送,则甲机调用发送子程序.乙机调用接收子程序,反之亦然。
2、用串行口查询法编制程序。
第21卷 第4期1998年8月鞍山钢铁学院学报Journal of Anshan Institute of I.&S.TechnologyVol.21No.4Aug.1998软件差错控制在单片机通信中的应用梁 红 王英焕 张学东(鞍山钢铁学院) (铁法矿务局职工中专技术学校) (鞍山钢铁学院)摘 要 为降低单片机通信中的误码率,保障通信的准确无误,在单片机串行双工通信的基础上,提出了采用差错控制方式,配合灵活的软件进行纠错编码的技术,并在实际应用中取得了满意效果。
关键词 通信,误码率,差错控制,软件,纠错编码分类号 TN911122 目前,工业控制中单片机通信应用场合越来越广泛,但由于工业现场各种电器设备的运行,例如电机的启动、停机,电磁继电器的吸合、断开,都会给通信线路带来冲击噪声,幅度可能相当大。
这种情况会影响单片机传输数据中的相邻几位,造成所谓“突发错”,它和信道本身引起的随机错都会影响单片机的正常通信。
衡量现场通信信道的指标之一为误码率P0(P0=错误接收码元数/接收的总码元数)。
为保证单片机之间通信正常准确,降低信道误码率,通常采用两种方法:(1)提高信道质量,降低信道本身引起的误码;(2)在信道本身误码率不理想的情况下,采用差错控制技术,在发送端对信息码进行抗干扰编码,在接收端进行译码,从而发现错误码字或自动纠正错误码字,以提高准确度。
第二种方法通常在线路收发端加装编、解码控制电路,用硬件完成纠错编码功能,在现场实时性允许的情况下,我们利用单片机软件来完成此硬件功能,从而简化电路,降低成本,而且根据现场实际情况,灵活地采用适当的编码码制。
1 差错控制的基本理论 在数据传输过程中,将发送端要发送的数据按一定规律加入一些冗余码元,并将这些冗余码元作为监督元和信息一块儿发送,接收端根据信息元与监督元之间规律进行检验,一旦发现错误,通过反馈通道要求发端重发,也可由接收端把错误校正。
这种技术有三种工作方式。
单片机串行口应用实验_双机通信一.设计要求利用两个8031单片机实现甲乙两机间的信息串行通信。
二.设计作用和目的1、注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。
2、了解8031各脚的功能,工作方式,计数/定时,I/O口的相关原理,掌握双机通信的原理和方法,并巩固学习单片机的相关内容知识。
3、通过软硬件设计实现两片8031单片机间的信息串行通信,以及74LS373、62256和2764等芯片的应用。
4、掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。
5、掌握双机通信的原理和方法,了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。
三.具体内容1、先在发送端1号机上显示班级号,然后送到接受端2号机上显示。
2、接下来在发送端1号机上输入学号显示,然后送到接受端2号机上显示。
如:某学生的班级号为050901,学号为0502030;则:3、先在发送端1号机上显示050901,然后送到接收端2号机上显示050901。
4、接下来在发送端1号机上输入学号0502030显示,然后送到接受端2号机上显示0502030。
四.硬件设计五.实验说明1、实验时需将1号机8031串行接收信号线(RXD)连到2号机8031串行发送信号线(TXD),1号机的(TXD)连到2号机的(RXD)。
2、两台实验机必须共地。
实验接线图P3.1 GND P3.0P3.0 GND P3.18031一号机8031二号机六、画出发送与接收程序流程图七、实验步骤1、用8芯排线将8279区JB51(a-h)连接到数码管显示区的CODE,JB53(BIT0-BIT7)连接到数码管显示区的BIT。
用4芯排线将8279区的JB52(RL0-RL3)连到键盘区的KH上;JB54(KBIT0-KBIT3)连到键盘区的KL上。
8279区8279CS2连到系统译码的Y6上,8279CLK连接到固定脉冲的1MHz。
Science and Technology & Innovation ┃科技与创新·93·文章编号:2095-6835(2015)20-0093-02计算机网络通信差错检测控制关于CRC 算法的应用陈欢欢(深圳市公安边防支队,广东 深圳 518000)摘 要:在计算机网络通信中,通常会出现误码率问题,对其通信安全造成一定的影响。
其中,基于环冗余码校验(Cyclic Redundancy Check ,CRC )算法是针对计算机网络通信差错检测控制的有效方式。
对CRC 算法在计算机网络通信差错检测控制中的应用策略进行了分析。
关键词:计算机;网络通信;差错检测;CRC 算法中图分类号:TP393.06 文献标识码:A DOI :10.15913/ki.kjycx.2015.20.093在网络中传输信息必须依靠计算机实体之间的通信线路,从而提高信息传输的速度和准确性。
在实际的计算机通信过程中,信息的传输过程难免会受到一定的干扰,使得接收端接收到的信息出现偏差,即接收端的信息发生了误码的现象,从而影响了计算机通信的准确性。
1 降低通信信号传输误码率的策略如果我们用Pc 表示信号传输过程中的误码率,那么衡量信息传输过程的准确度就可以表示为Pc=错误接受码元素/接收码元素。
降低误码率的方法主要有两种:①改善数据通信线路的传输质量;②差错控制。
第一种方法主要是从硬件的角度出发,改善现有的硬件设备,引入新的通信线路和信号交换设备等。
这种方法一方面受到硬件技术的限制,另一方面由于新设备和新技术的成本较高,因此通过硬件改善信号传输质量的效果一般。
而第二种方法是通过软件来解决的。
实际上,每一种计算机通信系统中都有差错检测系统控制,通过检测通信信号的质量,然后校验和修正信号,进而优化计算机通信的传输过程。
计算机通信过程中的差错检测控制方法非常多,这里只介绍CRC 算法。
2 CRC 算法的校验规则通过以上的叙述,我们知道了CRC 算法的差错检测的主要思想和原理,那么CRC 算法是怎样对一个数据进行编码和译码的呢?具体的校验规则是使接收端接收到的校验数据能够被一个多项式所除,如果能够被除尽,那么表示代码正确;如果除不尽,那么余数的值能够对应出错位的具体位数。
1CRC 算法在单片机通信系统中的实现秦建新 路林吉(上海交通大学自动化系,上海 200240)摘 要:主要论述了在单片机通信系统中CRC 算法的设计和在单片机硬件环下的编程实现。
为了实现单片机系统之间高效无差错的数据传输,必须对数据进行检错,当传输距离较远或采用无线传输时,这就更为重要了。
给出了3种对应于51单片机硬件环境的C 语言程序的算法,并从性能和成本上进行了比较,对按位计算CRC 码的方法给出了一种通用的算法。
关键词:CRC 算法 C 语言 线形编码 生成多项式 单片机0 引言在通信系统的众多检错手段中,CRC 是非常著名的一种。
CRC—全称循环冗余校验是对数据块校验的一种高效的差错控制方法。
在单片机通信系统设计过程中,当传输距离较远或是采用无线传输时,为了保证高效而无错地传输数据,必须对数据进行检错,从性能和成本上考虑,采用CRC 校验算法远优于奇偶校验和算术和校验等方法。
CRC 的计算有两种方法,一种是采用专门的硬件,另一种就是软件方法。
对于小型低成本的51单片机系统而言,常常需要在没有相关硬件的支持下实现CRC 校验,也即通过软件来完成CRC 计算(CRC 算法)。
这里给出了3种算法,从性能和成本上考虑,它们的适用范围也稍有不同:第一种适用于单片机程序存储空间较小但CRC 计算速度要求不高的情况;第二种适用于程序存储空间较大且CRC 计算速度要求较高的情况;最后一种适用于程序存储空间不太大,且CRC 计算速度要求适中的情况。
1 CRC 算法的原理CRC 校验主要是利用线形编码理论,基本思想是:在发送端,根据要传送的n 位二进制数据码,以一定的规则产生一个用来进行校验的r 位校验码,即CRC 码,把它附加在数据码后边,从而形成一个新的(n+r)位二进制码序列并发送出去;在接收端,根据数据码和CRC码之间所遵循的规则进行校验,这样就可以确定数据在传送过程中是否出错了。
假设n位二进制数据序列110[]n n D d d d d −=",r位二进制校验码110[]n n R r r r r −=",我们得到的n+r位序列110110[]n n n n M d d d d r r r r −−=""。
收稿日期:2002-02-14
CRC差错检验法在PC机与8031单片机串行通讯中的应用The Application on Series Communication Between PC and Microprocessor Using CRC Error Detecting Method
刘 涛 廉海涛 马积勋
Liu T ao Lian Haitao M a Jix un
(西安交通大学电气工程学院 西安 710049)
(Elec t ri cal Engineering Schoo l,Xi'an Jiaot ong Uni v ersit y,710049)
摘 要 通过对不同校验方法的分析,介绍了一种适合P C机与8031单片机通讯差错校验的CR C方法并给出了其实现的软件流程图。
关键词 数据传输 差错校验 CRC
随着数据采集系统的功能日益强大,以及微型计算机的普及,在现代工业中,利用微机进行数据通讯的工业控制应用得也越来越广泛。
特别是在大规模高精度数据采集系统中,对数据进行分析和计算将占用很大一部分单片机的资源,可以将采集到的数据通过串行通讯方式传送给PC机,由PC机来完成数据的处理工作。
但是由于传输距离、现场状况等诸多可能出现的因素的影响,计算机与受控设备之间的通讯数据常会发生无法预测的错误。
为了防止错误所带来的影响,在数据的接收端必须进行差错校验。
虽然差错校验也可以完全由硬件来承担,但由于单片机和PC都具有很强的软件编程能力,这就为实施软件的差错校验提供了前提条件,而软件的差错校验有经济实用并且不增加硬件开销的优点。
本文就是基于多功能应变测试系统而编写的主机和单片机之间的RS-485通讯系统,介绍了一种软件差错校验方案循环冗余差错校验法。
1 C RC法的原理
传统的差错检验法有:奇偶校验法,校验和法,行列冗余校验法等。
这些方法都是在数据后面加一定数量的冗余位同时发送出去,例如在单片机的通讯方式2和3中,TB8就可以作为奇偶校验位同数据一起发送出去,在数据的接收端通过对数据信息进行比较、判别或简单的求和运算,然后将所得和接收到的冗余位进行比较,若相等就认为数据接收正确,否则就认为数据传送过程中出现错误。
但是冗余位只能反映数据行或列的奇偶情况,所以这类检验方法对数据行或列的偶数个错误不敏感,漏判的概率很高。
因此,此种方法的可靠性就差。
循环冗余码校验英文名称为Cy clical Redundan-cy Check,简称CRC。
它是利用除法及余数的原理来作错误侦测(Erro r Detecting)的。
实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC 相比较,若两个CRC值不同,则说明数据通讯出现错误。
由于这种方法取得校验码的方式具有很强的信息覆盖能力,所以它是一种效率极高的错误校验法。
错误的概率几乎为零。
在很多的仪器设备中都采用这种冗余校验的通讯规约。
根据应用环境与习惯的不同,CRC又可分为以下几种标准:
CRC-12码; CRC-16码;
CRC-CCITT码;!CRC-32码。
CRC-12码通常用来传送6-bit字符串。
CRC-16及CRC-CCITT码则是用来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。
CRC-32码大都被采用在一种称为Po int-to-Point的同步传输中。
2 C RC校验码的生成过程
我们以最常用的CRC-16码作为例子进行说明。
冗余循环码包括2个字节,即16位二进制数。
先预置16位寄存器全部为1,再逐步把每8位的数据信息进行处理。
在进行CRC计算时只用8位数据位,起始位和停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC计算。
在计算CRC码时,8位数据与寄存器的数据相异或,得到的数据向低位移一位,用0填补最高位,再检查最低位。
如果最低位为1,把寄存器的内容与预置数相异或;若最低位为0,则不进行异或计算。
这个过程一直重复8次,第8次移位后,下一个8位数据再与现在寄存器中的内容相异或,这个过程
21
《现代电子技术》2002年第4期总第135期
单 片 机
和以上一样重复8次。
当所有的信息处理完后,最后寄存器中的内容即为CRC 码。
这个CRC 码将由发送设备跟在数据的最后一起发送。
计算CRC 的步骤为:
(1)预置16位寄存器位十六进制数FFFF (即全为1)。
称此寄存器位CRC 寄存器。
(2)把第一个8位数据与16位寄存器的低位相异或,将结果放于CRC 寄存器中;
(3)把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位;
(4)如果最低位为0,重复第三步(再次移位);如果最低位为1,CRC 寄存器与多项式码进行异或;(5)重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
(6)重复步骤2到5,进行下一个8位数据的处理;
(7)最后得到的CRC 寄存器即为CRC
码。
图1 单片机接收CRC 流程图
3 C RC 法在收发双方的软件实现
根据前面给出的CRC 码的生成过程,我们可以编制CRC 校验程序,根据通讯协议通过RS232-RS485电平转换接口和M AX 485,PC 机的串口与单片机的串行口进行串行异步通讯,需要发送的数据信息位8位,选取异或多项式为A 001(Hex )。
8031单片机CRC 算法的程序流程图如图1所示。
同时给出汇编语言的源程序。
CRC 源代码:
CRCH,CRCL,CRCD 分别代表CRC 校验码的高8位,低8位和要处理的数据。
CRCPR O: NO P
CRCIN 1: M O V M OT IM ES,#00H
;设置寄存器,右移8次结束
M O V A ,CRCL
XRL A ,CR CD ;与处理数异或M O V CR CL ,A
CRCRU :CLR C ;右移一位
M O V A ,CRCH RRC A
M O V CR CH,A M O V A ,CRCL RRC A
M O V CR CL ,A
M O V A ,M O T IM ES ;判断循环次数CJN E A ,#08H,CR CR U N 1RET
CRCRU N 1:M O V A ,CRCL
CL R C RR C A
JN C CR CR U N E M O V A ,CRCL XR L A ,#01H M O V CRCL ,A M O V A ,CRCH XR L A ,#0A O H M O V CRCH,A
CRCRU N E:SJM P CRCRU
PC 机的CRC 程序思路与单片机完全相同,信息的处理、发送和接收可以用任何一种高级设计语言来实现。
本文主要讨论了用CRC 法进行差错校验的问题,接收方如果发现接收错误,则返回信息,要求主机重发数据;如果没有发现错误,则不反馈信息。
由此可以提高收发效率。
实践证明CRC 法在PC 机与8031
单片机异步通讯的差错检验中应用是十分有效的,可以在实际中得到广泛应用。
参 考 文 献
1 薛钧义,张彦斌.M CS -51系列单片微型计算机
及其应用.西安:西安交通大学出版社,19902 姚燕南,薛钧义.微型计算机原理.西安:西安电
子科技大学出版社,1995
Abstract T hr o ug h analy zing different er r or detecting metho ds ,a new CRC method is intr oduced w hich is fitted in the err or
det ect ing o f the communicatio n bet ween PC and micro pro cessor ,t hen the so ftwa re flow chart is giv en .
Keywords D ata T r anmissio n,Err or Detecting ,CRC
作者简介 刘 涛 西安交通大学电气学院电子学教研室研究生,主要从事电子测量技术领域的应用研究。
马积勋 西安交通大学电气工程学院电子学教研室,教授,主要从事电子测量技术及电子技术应用,侧重于模拟信号的处理及电子测量技术在各领域的应用。
22
CRC 差错检验法在PC 机与8031单片机串行通讯中的应用。