基于FIFO模式的串行通信总线数据智能纠错方法技术

技术编号:10375956 阅读:251 留言:0更新日期:2014-08-28 18:21
本发明专利技术涉及一种基于FIFO模式的串行通信总线数据智能纠错方法,采用FIFO(First In First Out)模式,处理器在接收完一个完整8位字符后,将其先存入FIFO缓存中,当接收的数据累计到一定程度后通知处理器一次性响应,发送采用类似形式,一次性将多个8位字符存入FIFO缓存中逐个发送。很明显,这样节省了处理器的开销,提高了通信效率,让处理器不用频繁的响应通信任务,从而提高了系统的整体效率。本发明专利技术克服目前现有技术中存在的不足,提高了串行通信总线在FIFO这种低系统开销的工作模式下接收端接收数据的可靠性。

【技术实现步骤摘要】
基于FIFO模式的串行通信总线数据智能纠错方法
本专利技术涉及一种基于FIFO模式的串行通信总线数据智能纠错方法
技术介绍
随着计算机系统的应用和微机网络的发展,复杂系统之间的数据通信功能显得越来越重要。串口是计算机上一种非常通用的设备通信协议,串口通讯对嵌入式系统而言意义重大,不但可以实现将数据传输到上位机,而且也能实现上位机对其的指令控制。串口通信所需电缆线根数少,在远距离通信中可以节约通信成本,尽管比按字节传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据,其接线简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20m,并且任意两个设备间的长度不得超过2m;而对于串口而言,其通信长度可达1200m。RS-232、RS-422与RS-485都是串行数据标准接口。RS422总线与RS485和RS232的电路原理基本相同,都是以差动方式发送和接收,不需要数字地线。RS-422总线为全双工工作模式,四线接口采用独立的发送和接收通道,不必控制数据传输方向,各通信装置之间任何必须的信号交换均可以按软件(XON/XOFF握手)或硬件(一对单独的双绞线)的方式实现。标准串行通信模式为查询或中断方式:处理器每接收完一个完整8位字符后,即对其进行处理,发送采用类似形式。如果接收或发送的字符比较多的话,很明显,处理器要不断地去响应处理数据。因此,处理器的开销就大大增加,降低了处理器执行效率。常见的串行通信总线数据传输过程采用数据通信帧格式,即将若干实际需要传输的数据结合一定的通信帧头(X个8位数据)、帧尾(Y个8位数据)和帧校验(Z个8位数据),组成一帧有效的串行总线传输帧格式传输,这种帧格式的通信总线传输格式可以有效的保证数据的完整性和有效性,提高通信可靠性。目前在串行通信FIFO的普遍应用中,因为接受与发送控制器端不可能保证两者同时开启工作,发送端先于接收端开启的情况是完全有可能存在。因此当串行通信发送端先开启,接收端后开启时,会存在接受到的数据帧格式错位,而FIFO接受过程中仅仅根据接收到的数据个数触发响应,并不对其内容校验,因此处理器接收到的数据格式不对,导致通信故障。
技术实现思路
要解决的技术问题为了避免现有技术的不足之处,本专利技术提出一种基于FIFO模式的串行通信总线数据智能纠错方法,能够在随机初始状态下,提高串行通信总线接收端收到数据在FIFO这种低系统开销的工作模式下的可靠性。技术方案一种基于FIFO模式的串行通信总线数据智能纠错方法,其特征在于步骤如下:步骤1:当处理器FIFO缓冲存储单元接收到X个8位数据一组的串行通信总线数据帧后,触发串行通信总线数据处理任务响应,处理器将FIFO缓冲存储单元中的数据逐位存入接收数据处理数组Temp[N]中;步骤2:对接收数据处理数组Temp[N]中的数据逐位进行检测,得到X个8位数据帧头在接收数据处理数组Temp[N]中的起始位置Temp[i],其中:i<N;步骤3:对起始位置Temp[i]进行判断:当X个8位数据帧头在接收数据处理数组Temp[N]中的起始位置Temp[i]中i=0,则判定接收到的数据帧未发生错位,数据帧符合传输协议,将接收数据处理数组Temp[N]中的数据逐位赋给接收数组ReceiveData[N],返回步骤2进行下一个步帧校验;当X个8位数据帧头在接收数据处理数组Temp[N]中的起始位置Temp[i]中i≠0,判定接收到的数据帧发生错位,进行步骤4;步骤4:将本帧数据中各个8位数据以出现Temp[i]中i≠0的位置分为两部分,前i位8位数据Temp[0]-Temp[i-1]为一帧符合传输协议8位数据的后半部分,后N-i位数据Temp[i]-Temp[N-1]为一帧符合传输协议8位数据的前半部分;步骤5:将本帧中有效数据帧的Temp[i]-Temp[N-1]逐位赋给错位接收缓冲数据ReceiveTemp[N-i]中;步骤6:将前一次错位接收缓冲数据ReceiveTemp[N-i]中的一帧符合传输协议8位数据的前半部分逐位赋给接收数组ReceiveData[N]的前N-i位,并将本帧接收到的一帧符合传输协议8位数据的后半部分位赋给接收数组ReceiveData[N]的后i位,组成符合传输协议的数据帧,返回步骤2进行下一个步帧校验。有益效果本专利技术提出的一种基于FIFO模式的串行通信总线数据智能纠错方法,采用FIFO(FirstInFirstOut)模式,处理器在接收完一个完整8位字符后,将其先存入FIFO缓存中,当接收的数据累计到一定程度后通知处理器一次性响应,发送采用类似形式,一次性将多个8位字符存入FIFO缓存中逐个发送。很明显,这样节省了处理器的开销,提高了通信效率,让处理器不用频繁的响应通信任务,从而提高了系统的整体效率。本专利技术克服目前现有技术中存在的不足,提高了串行通信总线在FIFO这种低系统开销的工作模式下接收端接收数据的可靠性。附图说明图1:基于FIFO模式的串行通信总线数据智能纠错方法的流程图2:以13个8位数据一组的串行通信总线数据帧为例具体实施方式现结合实施例、附图对本专利技术作进一步描述:由于存在串行通信总线发送端与接收端不同步的情况,接收到的一帧数据中各个数据位置错位,本帧数据不能通过串口通信总线传输协议的校验。通过分析,我们可以知道,处理器接收到的一帧数据,是由前一次发送数据的后半段和该次发送数据的前半段组成。可以看出,处理器读取的这帧数据,虽然数据相对位置不符合协议要求,但本桢所含数据彼此之间的位置是正确的,即部分整体相对前移或后移了若干位,是具有规律性的。当处理器FIFO缓冲存储单元接收到设定数量的数据位后,触发串行通信总线数据处理任务响应,处理器将FIFO缓冲存储单元中的数据逐位存入接收数据处理数组Temp[N](Temp[0]-Temp[N-1])中,对存入接收数据处理数组Temp[N]中的数据进行分析,根据不同的情况分别给予相应的处理方式,具体操作流程如下:(1)如果接收数据处理数组Temp[N]中的数据逐位进行检测,判断出X个8位数据帧头在接收数据处理数组Temp[N]中的起始位置Temp[i](i<N)。(2)如果X个8位数据帧头在接收数据处理数组Temp[N]中的起始位置Temp[i]中i=0,则可判定接收到的数据帧未发生错位,数据帧符合传输协议,将接收数据处理数组Temp[N]中的数据逐位赋给接收数组ReceiveData[N],进行下一步帧校验后对数据解析。(3)如果X个8位数据帧头在接收数据处理数组Temp[N]中的起始位置Temp[i]中i≠0,则可判定接收到的数据帧发生错位,因此本帧数据中各个8位数据可分为两部分,前i位8位数据Temp[0]-Temp[i-1]为一帧符合传输协议8位数据的后半部分,后N-i位数据Temp[i]-Temp[N-1]为一帧符合传输协议8位数据的前半部分。由此可将本帧中有效数据帧的Temp[i]-Temp[N-1]逐位赋给错位接收缓冲数据ReceiveTemp[N-i]中。(4)当判定接收到的数据帧发生错位时,将前一次错位接收缓冲数据ReceiveTemp[N-i]中的一帧符合传输协议8位数本文档来自技高网
...
基于FIFO模式的串行通信总线数据智能纠错方法

【技术保护点】
一种基于FIFO模式的串行通信总线数据智能纠错方法,其特征在于步骤如下:步骤1:当处理器FIFO缓冲存储单元接收到X个8位数据一组的串行通信总线数据帧后,触发串行通信总线数据处理任务响应,处理器将FIFO缓冲存储单元中的数据逐位存入接收数据处理数组Temp[13]中;步骤2:对接收数据处理数组Temp[N]中的数据逐位进行检测,得到X个8位数据帧头在数据处理数组Temp[N]中的起始位置Temp[i],其中:i<N;步骤3:对起始位置Temp[i]进行判断:当X个8位数据帧头在数据处理数组Temp[N]中的起始位置Temp[i]中i=0,则判定接收到的数据帧未发生错位,数据帧符合传输协议,将数据处理数组Temp[N]中的数据逐位赋给接收数组ReceiveData[N],返回步骤2进行下一个步帧校验;当X个8位数据帧头在数据处理数组Temp[N]中的起始位置Temp[i]中i≠0,判定接收到的数据帧发生错位,进行步骤4;步骤4:将本帧数据中各个8位数据以出现Temp[i]中i≠0的位置分为两部分,前i位8位数据(Temp[0]‑Temp[i‑1])为一帧符合传输协议8位数据的后半部分,后N‑i位数据(Temp[i]‑Temp[N‑1])为一帧符合传输协议8位数据的前半部分;步骤5:将本帧中有效数据帧的Temp[i]‑Temp[N‑1]逐位赋给错位接收缓冲数据ReceiveTemp[N‑i]中;步骤6:将前一次错位接收缓冲数据ReceiveTemp[N‑i]中的一帧符合传输协议8位数据的前半部分逐位赋给接收ReceiveData[N]的前N‑i位,并将本帧接收到的一帧符合传输协议8位数据的后半部分位赋给接收ReceiveData[N]的后i位,组成符合传输协议的数据帧,返回步骤2进行下一个步帧校验。...

【技术特征摘要】
1.一种基于FIFO模式的串行通信总线数据智能纠错方法,其特征在于步骤如下:步骤1:当处理器FIFO缓冲存储单元接收到X个8位数据一组的串行通信总线数据帧后,触发串行通信总线数据处理任务响应,处理器将FIFO缓冲存储单元中的数据逐位存入接收数据处理数组Temp[N]中;步骤2:对接收数据处理数组Temp[N]中的数据逐位进行检测,得到X个8位数据帧头在接收数据处理数组Temp[N]中的起始位置Temp[i],其中:i<N;步骤3:对起始位置Temp[i]进行判断:当X个8位数据帧头在接收数据处理数组Temp[N]中的起始位置Temp[i]中i=0,则判定接收到的数据帧未发生错位,数据帧符合传输协议,将接收数据处理数组Temp[N]中的数据逐位赋给接收数组ReceiveData[N],返回步骤2进行下一个步帧校验;当X个8位数据帧头在接收数据处理数组Temp...

【专利技术属性】
技术研发人员:张震马瑞卿白浩刘亚兵
申请(专利权)人:西北工业大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1