提高串口数据接收正确性的方法和装置的制造方法

文档序号:9687387阅读:378来源:国知局
提高串口数据接收正确性的方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据传输领域,特别是指一种提高串口数据接收正确性的方法和装置。
【背景技术】
[0002]通用异步收发器(UniversalAsynchronous Receiver and Transmitter ;UART)是用硬件实现异步串行通信的通信接口电路,UART异步串行通信接口是电子电路设计中最常见都接口,可用来与上位机或其他外部设备进行数据通信。由于UART应用的普通性,所以大部分微控制器内部都集成有UART模块。
[0003]UART模块以字节为单位接收数据,每接收一个字节或多个字节,UART模块就会设置一个中断标记,当微控制器使能了 UART模块的中断使能后,就会触发一个中断操作,微控制器会中断当前的操作,跳到UART中断处理函数中执行相应的操作。
[0004]微控制器处理UART的中断操作如图1所示,而当前技术在用UART接收数据的操作如图2所示:
[0005]现有技术利用UART接收数据的操作存在的问题是:
[0006]—、微控制器的工作负荷大;由于微控制器要不断的进出中断来完成串口数据的接收工作,这就使的微控制器要不断的中断当前操作、保持中断现场、执行中断处理函数、然后退出中断、恢复中断现场,这就使得微控制器的工作负荷非常的大。
[0007]二、对微控制器当前进行的操作造成不利影响;微控制器在处理中断的时候需要中断当前的操作,频繁的进出中断将影响到其它的操作,甚至造成某些操作的失败。例如当某器件对操作时序要求非常严格的时候,如果在对此器件操作的过程,频繁的进出UART中断处理,将会使对此器件的操作失败,严重情况下可能会造成整个程序的崩溃。
[0008]三、降低了软件的运行速度和运行效率;微控制器频繁的进出UART中断,整体上降低了软件的运行速度和运行效率,因为微控制器的一部分的工作消耗到了保存中断现场、恢复中断现场上。
[0009]四、可能使数据的丢失,降低了数据接收的正确性;进入UART中断处理函数后,如果不能及时的退出该函数,将会造成UART接口新接收的数据还没来得及被读取,就被后面的数据所覆盖,UART的数据接收缓存的大小是一定的(一般为一个或几个字节),当已经有数据存储到了缓存中,下次有数据到来的时候,UART模块不管当前缓存中有没有数据,会直接将新数据放到UART缓存中,覆盖当前数据,从而造成数据的丢失。

【发明内容】

[0010]本发明提供一种提高串口数据接收正确性的方法和装置,该方法降低了微控制器的工作负荷,不会对微控制器当前进行的操作造成不利影响,提高了软件的运行速度和运行效率,提高了数据接收的正确性,以及降低了系统的功耗。
[0011]为解决上述技术问题,本发明提供技术方案如下:
[0012]一种提高串口数据接收正确性的方法,包括:
[0013]步骤S101:进入UART中断处理函数;
[0014]步骤S102:读取UART缓存,将接收到的数据保存到内存中;
[0015]步骤S103:清除UART中断标记;
[0016]步骤S104:检测UART中断标记,若检测到UART中断标记,则转至步骤S102。
[0017]—种提高串口数据接收正确性的装置,包括:
[0018]开始模块,用于进入UART中断处理函数;
[0019]读取模块,用于读取UART缓存,将接收到的数据保存到内存中;
[0020]清除模块,用于清除UART中断标记;
[0021]第一检测模块,用于检测UART中断标记,若检测到UART中断标记,则转至读取模块。
[0022]本发明具有以下有益效果:
[0023]与现有技术相比,本发明的提高串口数据接收正确性的方法中,在进入UART中断处理函数后,开始读取UART缓存中的数据到内存中,接收完成后,并不立刻退出,而是重新检测UART端口是否接收到了新的数据,如果接收到的话,继续读取UART缓存中的数据到内存中,直至数据接收完成。
[0024]本发明的提高串口数据接收正确性的方法降低了微控制器的工作负荷。本发明只需进入UART中断一次,就能完成串口数据的接收,微控制器不需要不断的中断当前操作、保持中断现场、执行中断处理函数、然后退出中断、恢复中断现场,这就降低了微控制器的工作负荷。
[0025]本发明的提高串口数据接收正确性的方法不会对微控制器当前进行的操作造成不利影响。由于本发明的方法在接收串口数据的时候,一次中断即可完成,不用频繁的进出中断从而影响到其它的操作,不会对整体程序的正常执行造成影响。
[0026]本发明的提高串口数据接收正确性的方法提高了软件的运行速度和运行效率。微控制器不用频繁的进出UART中断,不用将资源消耗到了保存中断现场、恢复中断现场上,减少了微控制器的一些无谓的工作开销,大大提高了微控制器的使用效率,从而大大提高了整体代码的执行速度和执行效率,提高了软件的运行速度和运行效率。
[0027]本发明的提高串口数据接收正确性的方法提高了数据接收的正确性。本发明在进入UART中断后,在中断函数内循环接收串口数据,直至串口数据接收完成,从而提高了串口数据接收的准确性。不会出现现有技术中的如下现象:如果一次中断发生后UART缓存中的数据被读取后,而此时微控制器还没有来的及退出UART中断处理函数时候,又有新数据被UART接口接收的话,此时将会造成这部分数据的丢失。
[0028]另外,发明人还发现,本发明的提高串口数据接收正确性的方法降低了系统的功耗。频繁的进出UART中断,将会使微控制器的工作负荷非常的大,从而使系统的功耗也非常的高。而通过本发明中的方法,降低了微控制器的工作负荷,从而在一定程度上降低了系统的功耗。
[0029]故本发明的提高串口数据接收正确性的方法降低了微控制器的工作负荷,不会对微控制器当前进行的操作造成不利影响,提高了软件的运行速度和运行效率,提高了数据接收的正确性,以及降低了系统的功耗。
【附图说明】
[0030]图1为现有技术中微控制器处理UART时的中断操作流程图;
[0031 ]图2为现有技术中UART接收数据的方法流程图;
[0032]图3为UART的数据传输格式示意图;
[0033]图4为本发明的提高串口数据接收正确性的方法的一个实施例的流程图;
[0034]图5为本发明的提高串口数据接收正确性的方法的另一个实施例的流程图;
[0035]图6为本发明的提高串口数据接收正确性的方法的再一个实施例的流程图;
[0036]图7为本发明的提高串口数据接收正确性的装置的一个实施例的结构示意图;
[0037]图8为本发明的提高串口数据接收正确性的装置的另一个实施例的结构示意图;
[0038]图9为本发明的提高串口数据接收正确性的装置的再一个实施例的结构示意图。
【具体实施方式】
[0039]为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0040]UART (Universal Asynchronous Receiver and Transmitter)通用异步收发器(异步串行通信口),是一种通用的数据通信协议。UART使用的是异步,串行通信。
[0041]串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本。适用于远距离通信,但传输速度慢的应用场合。
[0042]—方面,本发明提供一种提高串口数据接收正确性的方法,如图4所示,包括:
[0043]步骤S101:进入UART中断处理函数;
[0044]本步骤之前的所有操作与现有技术相同,如图1所示;
[0045]步骤S102:读取UART缓存,将接收到的数据保存到内存中;
[0046]此处的UART缓存指UART的输入缓冲寄存器,UART在接收数据时,会用到输入移位寄存器以及输入缓冲寄存器,其中输入移位寄存器以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,输入缓冲寄存器从输入移位寄存器中接收并行数据,然后由CPU取走;
[0047]步骤S103:清除UART中断标记;
[0048]输入缓冲寄存器中的数据由CPU取走之后,CPU会清除UART中断标记(一般是使中断标记的值由逻辑1变为逻辑0);
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1