CN105446925A - 提高串口数据接收正确性的方法和装置 - Google Patents

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

Info

Publication number
CN105446925A
CN105446925A CN201510335257.7A CN201510335257A CN105446925A CN 105446925 A CN105446925 A CN 105446925A CN 201510335257 A CN201510335257 A CN 201510335257A CN 105446925 A CN105446925 A CN 105446925A
Authority
CN
China
Prior art keywords
uart
interrupt flag
uart interrupt
correctness
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510335257.7A
Other languages
English (en)
Inventor
贾天亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Techshino Technology Co Ltd
Original Assignee
Beijing Techshino Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Techshino Technology Co Ltd filed Critical Beijing Techshino Technology Co Ltd
Priority to CN201510335257.7A priority Critical patent/CN105446925A/zh
Publication of CN105446925A publication Critical patent/CN105446925A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/24Interrupt
    • G06F2213/2414Routing of interrupt among interrupt handlers in processor system or interrupt controller
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种提高串口数据接收正确性的方法和装置,属于数据传输领域。所述方法包括步骤S101:进入UART中断处理函数;步骤S102:读取UART缓存,将接收到的数据保存到内存中;步骤S103:清除UART中断标记;步骤S104:检测UART中断标记,若检测到UART中断标记,则转至步骤S102。与现有技术相比,本发明的提高串口数据接收正确性的方法降低了微控制器的工作负荷,不会对微控制器当前进行的操作造成不利影响,提高了软件的运行速度和运行效率,提高了数据接收的正确性,以及降低了系统的功耗。

Description

提高串口数据接收正确性的方法和装置
技术领域
本发明涉及数据传输领域,特别是指一种提高串口数据接收正确性的方法和装置。
背景技术
通用异步收发器(UniversalAsynchronousReceiverandTransmitter;UART)是用硬件实现异步串行通信的通信接口电路,UART异步串行通信接口是电子电路设计中最常见都接口,可用来与上位机或其他外部设备进行数据通信。由于UART应用的普通性,所以大部分微控制器内部都集成有UART模块。
UART模块以字节为单位接收数据,每接收一个字节或多个字节,UART模块就会设置一个中断标记,当微控制器使能了UART模块的中断使能后,就会触发一个中断操作,微控制器会中断当前的操作,跳到UART中断处理函数中执行相应的操作。
微控制器处理UART的中断操作如图1所示,而当前技术在用UART接收数据的操作如图2所示:
现有技术利用UART接收数据的操作存在的问题是:
一、微控制器的工作负荷大;由于微控制器要不断的进出中断来完成串口数据的接收工作,这就使的微控制器要不断的中断当前操作、保持中断现场、执行中断处理函数、然后退出中断、恢复中断现场,这就使得微控制器的工作负荷非常的大。
二、对微控制器当前进行的操作造成不利影响;微控制器在处理中断的时候需要中断当前的操作,频繁的进出中断将影响到其它的操作,甚至造成某些操作的失败。例如当某器件对操作时序要求非常严格的时候,如果在对此器件操作的过程,频繁的进出UART中断处理,将会使对此器件的操作失败,严重情况下可能会造成整个程序的崩溃。
三、降低了软件的运行速度和运行效率;微控制器频繁的进出UART中断,整体上降低了软件的运行速度和运行效率,因为微控制器的一部分的工作消耗到了保存中断现场、恢复中断现场上。
四、可能使数据的丢失,降低了数据接收的正确性;进入UART中断处理函数后,如果不能及时的退出该函数,将会造成UART接口新接收的数据还没来得及被读取,就被后面的数据所覆盖,UART的数据接收缓存的大小是一定的(一般为一个或几个字节),当已经有数据存储到了缓存中,下次有数据到来的时候,UART模块不管当前缓存中有没有数据,会直接将新数据放到UART缓存中,覆盖当前数据,从而造成数据的丢失。
发明内容
本发明提供一种提高串口数据接收正确性的方法和装置,该方法降低了微控制器的工作负荷,不会对微控制器当前进行的操作造成不利影响,提高了软件的运行速度和运行效率,提高了数据接收的正确性,以及降低了系统的功耗。
为解决上述技术问题,本发明提供技术方案如下:
一种提高串口数据接收正确性的方法,包括:
步骤S101:进入UART中断处理函数;
步骤S102:读取UART缓存,将接收到的数据保存到内存中;
步骤S103:清除UART中断标记;
步骤S104:检测UART中断标记,若检测到UART中断标记,则转至步骤S102。
一种提高串口数据接收正确性的装置,包括:
开始模块,用于进入UART中断处理函数;
读取模块,用于读取UART缓存,将接收到的数据保存到内存中;
清除模块,用于清除UART中断标记;
第一检测模块,用于检测UART中断标记,若检测到UART中断标记,则转至读取模块。
本发明具有以下有益效果:
与现有技术相比,本发明的提高串口数据接收正确性的方法中,在进入UART中断处理函数后,开始读取UART缓存中的数据到内存中,接收完成后,并不立刻退出,而是重新检测UART端口是否接收到了新的数据,如果接收到的话,继续读取UART缓存中的数据到内存中,直至数据接收完成。
本发明的提高串口数据接收正确性的方法降低了微控制器的工作负荷。本发明只需进入UART中断一次,就能完成串口数据的接收,微控制器不需要不断的中断当前操作、保持中断现场、执行中断处理函数、然后退出中断、恢复中断现场,这就降低了微控制器的工作负荷。
本发明的提高串口数据接收正确性的方法不会对微控制器当前进行的操作造成不利影响。由于本发明的方法在接收串口数据的时候,一次中断即可完成,不用频繁的进出中断从而影响到其它的操作,不会对整体程序的正常执行造成影响。
本发明的提高串口数据接收正确性的方法提高了软件的运行速度和运行效率。微控制器不用频繁的进出UART中断,不用将资源消耗到了保存中断现场、恢复中断现场上,减少了微控制器的一些无谓的工作开销,大大提高了微控制器的使用效率,从而大大提高了整体代码的执行速度和执行效率,提高了软件的运行速度和运行效率。
本发明的提高串口数据接收正确性的方法提高了数据接收的正确性。本发明在进入UART中断后,在中断函数内循环接收串口数据,直至串口数据接收完成,从而提高了串口数据接收的准确性。不会出现现有技术中的如下现象:如果一次中断发生后UART缓存中的数据被读取后,而此时微控制器还没有来的及退出UART中断处理函数时候,又有新数据被UART接口接收的话,此时将会造成这部分数据的丢失。
另外,发明人还发现,本发明的提高串口数据接收正确性的方法降低了系统的功耗。频繁的进出UART中断,将会使微控制器的工作负荷非常的大,从而使系统的功耗也非常的高。而通过本发明中的方法,降低了微控制器的工作负荷,从而在一定程度上降低了系统的功耗。
故本发明的提高串口数据接收正确性的方法降低了微控制器的工作负荷,不会对微控制器当前进行的操作造成不利影响,提高了软件的运行速度和运行效率,提高了数据接收的正确性,以及降低了系统的功耗。
附图说明
图1为现有技术中微控制器处理UART时的中断操作流程图;
图2为现有技术中UART接收数据的方法流程图;
图3为UART的数据传输格式示意图;
图4为本发明的提高串口数据接收正确性的方法的一个实施例的流程图;
图5为本发明的提高串口数据接收正确性的方法的另一个实施例的流程图;
图6为本发明的提高串口数据接收正确性的方法的再一个实施例的流程图;
图7为本发明的提高串口数据接收正确性的装置的一个实施例的结构示意图;
图8为本发明的提高串口数据接收正确性的装置的另一个实施例的结构示意图;
图9为本发明的提高串口数据接收正确性的装置的再一个实施例的结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
UART(UniversalAsynchronousReceiverandTransmitter)通用异步收发器(异步串行通信口),是一种通用的数据通信协议。UART使用的是异步,串行通信。
串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本。适用于远距离通信,但传输速度慢的应用场合。
一方面,本发明提供一种提高串口数据接收正确性的方法,如图4所示,包括:
步骤S101:进入UART中断处理函数;
本步骤之前的所有操作与现有技术相同,如图1所示;
步骤S102:读取UART缓存,将接收到的数据保存到内存中;
此处的UART缓存指UART的输入缓冲寄存器,UART在接收数据时,会用到输入移位寄存器以及输入缓冲寄存器,其中输入移位寄存器以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,输入缓冲寄存器从输入移位寄存器中接收并行数据,然后由CPU取走;
步骤S103:清除UART中断标记;
输入缓冲寄存器中的数据由CPU取走之后,CPU会清除UART中断标记(一般是使中断标记的值由逻辑1变为逻辑0);
步骤S104:检测UART中断标记,若检测到UART中断标记,则转至步骤S102。
清除UART中断标记后,并不会立即退出UART中断处理函数,而是继续检测UART中断标记,来判断UART端口是否接收到了新的数据,如果检测到UART中断标记的话,则证明UART端口接收到了新的数据,此时继续读取UART缓存中的数据到内存中,直至数据接收完成;如果没有检测到UART中断标记的话,则证明UART端口没有接收到新的数据,此时进行后续操作,可以是退出UART中断处理函数,也可以是其他操作。
在有的处理器中,UART模块除了可以通过UART中断标记来检查UART缓存中是否有数据外,某些状态寄存器中的值也能用来判断UART缓存中是否有数据,这并不影响本发明的内容。
与现有技术相比,本发明的提高串口数据接收正确性的方法中,在进入UART中断处理函数后,开始读取UART缓存中的数据到内存中,接收完成后,并不立刻退出,而是重新检测UART端口是否接收到了新的数据,如果接收到的话,继续读取UART缓存中的数据到内存中,直至数据接收完成。
本发明的提高串口数据接收正确性的方法降低了微控制器的工作负荷。本发明只需进入UART中断一次,就能完成串口数据的接收,微控制器不需要不断的中断当前操作、保持中断现场、执行中断处理函数、然后退出中断、恢复中断现场,这就降低了微控制器的工作负荷。
本发明的提高串口数据接收正确性的方法不会对微控制器当前进行的操作造成不利影响。由于本发明的方法在接收串口数据的时候,一次中断即可完成,不用频繁的进出中断从而影响到其它的操作,不会对整体程序的正常执行造成影响。
本发明的提高串口数据接收正确性的方法提高了软件的运行速度和运行效率。微控制器不用频繁的进出UART中断,不用将资源消耗到了保存中断现场、恢复中断现场上,减少了微控制器的一些无谓的工作开销,大大提高了微控制器的使用效率,从而大大提高了整体代码的执行速度和执行效率,提高了软件的运行速度和运行效率。
本发明的提高串口数据接收正确性的方法提高了数据接收的正确性。本发明在进入UART中断后,在中断函数内循环接收串口数据,直至串口数据接收完成,从而提高了串口数据接收的准确性。不会出现现有技术中的如下现象:如果一次中断发生后UART缓存中的数据被读取后,而此时微控制器还没有来的及退出UART中断处理函数时候,又有新数据被UART接口接收的话,此时将会造成这部分数据的丢失。
另外,发明人还发现,本发明的提高串口数据接收正确性的方法降低了系统的功耗。频繁的进出UART中断,将会使微控制器的工作负荷非常的大,从而使系统的功耗也非常的高。而通过本发明中的方法,降低了微控制器的工作负荷,从而在一定程度上降低了系统的功耗。
故本发明的提高串口数据接收正确性的方法降低了微控制器的工作负荷,不会对微控制器当前进行的操作造成不利影响,提高了软件的运行速度和运行效率,提高了数据接收的正确性,以及降低了系统的功耗。
作为本发明的提高串口数据接收正确性的方法的一种改进,如图5所示,步骤S104进一步为:检测UART中断标记,若检测到UART中断标记,则转至步骤S102,否则转至步骤S201;
方法还包括:
步骤S201:启动定时器,设置定时时间;
步骤S202:判断定时时间是否到,若是,转至步骤S203,否则,继续执行步骤S102;
步骤S203:检测UART中断标记,若检测到UART中断标记,则转至步骤S102,否则退出UART中断处理函数。
当未检测UART中断标记,没有接收到数据时,不立即退出UART中断处理函数,而是定时一段时间后再检测UART中断标记,若此时检测到UART中断标记,则表明数据传输未完成,继续执行前面的接收数据的过程,若此时没有检测到UART中断标记,则表明数据传输已经完成,退出UART中断处理函数。若没有定时环节,有可能在数据未接收完毕时就退出了UART中断处理函数,此时有新的数据传来后,还需要再次进入UART中断处理函数。通过定时可以进一步减少进出UART中断处理函数的次数
故本发明的提高串口数据接收正确性的方法进一步降低了微控制器的工作负荷,更加不会对微控制器当前进行的操作造成不利影响,进一步提高了软件的运行速度和运行效率,进一步提高了数据接收的正确性,以及进一步降低了系统的功耗。
上述定时时间可以为串口接收一帧数据的时间的倍数。
异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。
数据传送速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特(即1200bps)。
UART的数据传输格式如图3所示,(其中,LSB是leastsignificantbit的缩写,中文为最低有效位;MSB是MostSignificantBit的缩写,中文为最高有效位,LSB的前一位),其中各位的意义如下:
起始位(图中为LSB的前一位):先发出一个逻辑0信号,表示传输字符的开始。
数据位(图中为LSB、MSB以及它们之间的各个位):可以是5~8位逻辑0或1。如ASCII码(7位),扩展BCD码(8位)。使用小端模式传输。(小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。)
校验位(图中为MSB的后一位):数据位加上这一位后,使得1的位数应为偶数(偶校验)或奇数(奇校验)。
停止位(图中为校验位的后一位):它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位(图中为停止位的后一位):处于逻辑1状态,表示当前线路上没有资料传送。
注:异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的)。
本发明假设UART通讯波特率为Bau,一帧数据由S个bit组成,
则一秒钟UART端口所接收的帧数FR=Bau/S,那么每帧数据传输的周期CY=1/FR(秒),本发明设置定时时间Time=n*CY(其中n为整数,可以根据实际应用确定),即如果连续n帧时间内UART端口没有再收到到数据的话,就认为该次接收行为后续再无数据,本次接收完成。
这样设置定时时间既可以保证在数据未接收完毕时就退出了UART中断处理函数的情况不会发生,又不会使微处理器等待时间过长而浪费时间,提高了微处理器的工作效率。
优选的,定时时间可以为10-500ms,具体的:在应用中,UART常用的最低的波特率为9600bps,以一帧为8bit,经过实际测试,选择10倍帧率的延时时间最为合适(即n=10),Time=1/(9600/8)*10=8.3ms,考虑一定的余量,Time=10ms);
作为本发明的提高串口数据接收正确性的方法的另一种改进,如图6所示,步骤S104进一步为:检测UART中断标记,若检测到UART中断标记,则转至步骤S102,否则转至步骤S501;
方法还包括:
步骤S501:设置计数变量的初值以及预设值;
步骤S502:检测UART中断标记,若检测到UART中断标记,则转至步骤S102,否则转至步骤S503。
步骤S503:使计数变量自加或自减;
步骤S504:判断计数变量的值是否等于预设值,若是,退出UART中断处理函数,否则,转至步骤S502;
当未检测UART中断标记,没有接收到数据时,不立即退出UART中断处理函数,而是继续检测UART中断标记一定次数(该次数由计数变量的初值以及预设值的差值得到),若在规定次数内检测到UART中断标记,则表明数据传输未完成,继续执行前面的接收数据的过程,若在规定次数内没有检测到UART中断标记,则表明数据传输已经完成,退出UART中断处理函数。若没有上述环节,有可能在数据未接收完毕时就退出了UART中断处理函数,此时有新的数据传来后,还需要再次进入UART中断处理函数。通过上述方法可以进一步减少进出UART中断处理函数的次数
故本发明的提高串口数据接收正确性的方法进一步降低了微控制器的工作负荷,更加不会对微控制器当前进行的操作造成不利影响,进一步提高了软件的运行速度和运行效率,进一步提高了数据接收的正确性,以及进一步降低了系统的功耗。
另一方面,本发明还提供一种提高串口数据接收正确性的装置,如图7所示,包括:
开始模块11,用于进入UART中断处理函数;
读取模块12,用于读取UART缓存,将接收到的数据保存到内存中;
清除模块13,用于清除UART中断标记;
第一检测模块14,用于检测UART中断标记,若检测到UART中断标记,则转至读取模块12。
与上述提高串口数据接收正确性的方法对应的,本发明的提高串口数据接收正确性的装置降低了微控制器的工作负荷,不会对微控制器当前进行的操作造成不利影响,提高了软件的运行速度和运行效率,提高了数据接收的正确性,以及降低了系统的功耗。
作为本发明的提高串口数据接收正确性的装置的一种改进,如图8所示,第一检测模块14进一步用于:检测UART中断标记,若检测到UART中断标记,则转至读取模块12,否则转至定时模块21;
该装置还包括:
定时模块21,用于启动定时器,设置定时时间;
第一判断模块22,用于判断定时时间是否到,若是,转至第二检测模块23,否则,继续执行判断模块22;
第二检测模块23,用于检测UART中断标记,若检测到UART中断标记,则转至读取模块12,否则退出UART中断处理函数。
与上述提高串口数据接收正确性的方法对应的,本发明的提高串口数据接收正确性的装置进一步降低了微控制器的工作负荷,更加不会对微控制器当前进行的操作造成不利影响,进一步提高了软件的运行速度和运行效率,进一步提高了数据接收的正确性,以及进一步降低了系统的功耗。
上述定时时间为串口接收一帧数据的时间的倍数。
这样设置定时时间既可以保证在数据未接收完毕时就退出了UART中断处理函数的情况不会发生,又不会使微处理器等待时间过长而浪费时间,提高了微处理器的工作效率。
优选的,定时时间可以为10-500ms。
作为本发明的提高串口数据接收正确性的装置的另一种改进,如图9所示,第一检测模块14进一步用于:检测UART中断标记,若检测到UART中断标记,则转至读取模块12,否则转至设置模块51;
该装置还包括:
设置模块51,用于设置计数变量的初值以及预设值;
第三检测模块52,用于检测UART中断标记,若检测到UART中断标记,则转至读取模块12,否则转至计数模块53;
计数模块53,用于使计数变量自加或自减;
第二判断模块54,用于判断计数变量的值是否等于预设值,若是,退出UART中断处理函数,否则,转至第三检测模块52。
与上述提高串口数据接收正确性的方法对应的,本发明的提高串口数据接收正确性的装置进一步降低了微控制器的工作负荷,更加不会对微控制器当前进行的操作造成不利影响,进一步提高了软件的运行速度和运行效率,进一步提高了数据接收的正确性,以及进一步降低了系统的功耗。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种提高串口数据接收正确性的方法,其特征在于,包括:
步骤S101:进入UART中断处理函数;
步骤S102:读取UART缓存,将接收到的数据保存到内存中;
步骤S103:清除UART中断标记;
步骤S104:检测UART中断标记,若检测到UART中断标记,则转至步骤S102。
2.根据权利要求1所述的提高串口数据接收正确性的方法,其特征在于,所述步骤S104进一步为:检测UART中断标记,若检测到UART中断标记,则转至步骤S102,否则转至步骤S201;
所述方法还包括:
步骤S201:启动定时器,设置定时时间;
步骤S202:判断定时时间是否到,若是,转至步骤S203,否则,继续执行步骤S102;
步骤S203:检测UART中断标记,若检测到UART中断标记,则转至步骤S102,否则退出UART中断处理函数。
3.根据权利要求2所述的提高串口数据接收正确性的方法,其特征在于,所述定时时间为串口接收一帧数据的时间的倍数。
4.根据权利要求3所述的提高串口数据接收正确性的方法,其特征在于,所述定时时间为10-500ms。
5.根据权利要求1所述的提高串口数据接收正确性的方法,其特征在于,所述步骤S104进一步为:检测UART中断标记,若检测到UART中断标记,则转至步骤S102,否则转至步骤S501;
所述方法还包括:
步骤S501:设置计数变量的初值以及预设值;
步骤S502:检测UART中断标记,若检测到UART中断标记,则转至步骤S102,否则转至步骤S503;
步骤S503:使计数变量自加或自减;
步骤S504:判断计数变量的值是否等于预设值,若是,退出UART中断处理函数,否则,转至步骤S502。
6.一种提高串口数据接收正确性的装置,其特征在于,包括:
开始模块,用于进入UART中断处理函数;
读取模块,用于读取UART缓存,将接收到的数据保存到内存中;
清除模块,用于清除UART中断标记;
第一检测模块,用于检测UART中断标记,若检测到UART中断标记,则转至读取模块。
7.根据权利要求6所述的提高串口数据接收正确性的装置,其特征在于,所述第一检测模块进一步用于:检测UART中断标记,若检测到UART中断标记,则转至读取模块,否则转至定时模块;
所述装置还包括:
定时模块,用于启动定时器,设置定时时间;
第一判断模块,用于判断定时时间是否到,若是,转至第二检测模块,否则,继续执行判断模块;
第二检测模块,用于检测UART中断标记,若检测到UART中断标记,则转至读取模块,否则退出UART中断处理函数。
8.根据权利要求7所述的提高串口数据接收正确性的装置,其特征在于,所述定时时间为串口接收一帧数据的时间的倍数。
9.根据权利要求8所述的提高串口数据接收正确性的装置,其特征在于,所述定时时间为10-500ms。
10.根据权利要求6所述的提高串口数据接收正确性的装置,其特征在于,所述第一检测模块进一步用于:检测UART中断标记,若检测到UART中断标记,则转至读取模块,否则转至设置模块;
所述装置还包括:
设置模块,用于设置计数变量的初值以及预设值;
第三检测模块,用于检测UART中断标记,若检测到UART中断标记,则转至读取模块,否则转至计数模块;
计数模块,用于使计数变量自加或自减;
第二判断模块,用于判断计数变量的值是否等于预设值,若是,退出UART中断处理函数,否则,转至第三检测模块。
CN201510335257.7A 2015-06-16 2015-06-16 提高串口数据接收正确性的方法和装置 Pending CN105446925A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510335257.7A CN105446925A (zh) 2015-06-16 2015-06-16 提高串口数据接收正确性的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510335257.7A CN105446925A (zh) 2015-06-16 2015-06-16 提高串口数据接收正确性的方法和装置

Publications (1)

Publication Number Publication Date
CN105446925A true CN105446925A (zh) 2016-03-30

Family

ID=55557146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510335257.7A Pending CN105446925A (zh) 2015-06-16 2015-06-16 提高串口数据接收正确性的方法和装置

Country Status (1)

Country Link
CN (1) CN105446925A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240947A (zh) * 2018-08-13 2019-01-18 武汉普利商用机器有限公司 智能卡数据接收方法及装置
CN111352888A (zh) * 2020-02-28 2020-06-30 北京铁科英迈技术有限公司 异步收发器的中断信号产生方法及装置
CN112131153A (zh) * 2020-09-15 2020-12-25 北京自动化控制设备研究所 一种使用arm处理器串口进行实时通讯的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101136735A (zh) * 2006-09-12 2008-03-05 中兴通讯股份有限公司 使用通用异步收发报机的半双工串口通信系统及通信方法
CN101146090A (zh) * 2007-10-16 2008-03-19 深圳国人通信有限公司 一种基于usart总线的发送接收数据的方法及其装置
CN201349219Y (zh) * 2008-12-21 2009-11-18 重庆川仪自动化股份有限公司 异步通信控制器
CN102546843A (zh) * 2012-01-17 2012-07-04 厦门雅迅网络股份有限公司 一种通过软件模拟实现多个uart通信接口的方法
CN102882754A (zh) * 2012-09-29 2013-01-16 南京国电南自轨道交通工程有限公司 重复中断方式485方向控制方法
US20130219159A1 (en) * 2012-02-22 2013-08-22 Atmel Corporation Single-wire bootloader for target device with self-programming capability

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101136735A (zh) * 2006-09-12 2008-03-05 中兴通讯股份有限公司 使用通用异步收发报机的半双工串口通信系统及通信方法
CN101146090A (zh) * 2007-10-16 2008-03-19 深圳国人通信有限公司 一种基于usart总线的发送接收数据的方法及其装置
CN201349219Y (zh) * 2008-12-21 2009-11-18 重庆川仪自动化股份有限公司 异步通信控制器
CN102546843A (zh) * 2012-01-17 2012-07-04 厦门雅迅网络股份有限公司 一种通过软件模拟实现多个uart通信接口的方法
US20130219159A1 (en) * 2012-02-22 2013-08-22 Atmel Corporation Single-wire bootloader for target device with self-programming capability
CN102882754A (zh) * 2012-09-29 2013-01-16 南京国电南自轨道交通工程有限公司 重复中断方式485方向控制方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHENFANG7977: "UART中断浅析", 《HTTP://BLOG.163.COM/CHENFANG7977%40YEAH/BLOG/STATIC/128274196200911144374278/》 *
GQ坚守: "单片机] 51单片机UART串口中断问题", 《HTTP://TIEBA.BAIDU.COM/P/3153251405》 *
ZJPING0815、NE5532: "UART在中断接收多字节", 《HTTP://BBS.21IC.COM/ICVIEW-623580-1-1.HTML》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240947A (zh) * 2018-08-13 2019-01-18 武汉普利商用机器有限公司 智能卡数据接收方法及装置
CN111352888A (zh) * 2020-02-28 2020-06-30 北京铁科英迈技术有限公司 异步收发器的中断信号产生方法及装置
CN112131153A (zh) * 2020-09-15 2020-12-25 北京自动化控制设备研究所 一种使用arm处理器串口进行实时通讯的方法
CN112131153B (zh) * 2020-09-15 2024-04-02 北京自动化控制设备研究所 一种使用arm处理器串口进行实时通讯的方法

Similar Documents

Publication Publication Date Title
CN101146102B (zh) Rru网络中hdlc数据下行、上行的方法及通讯装置
US9229897B2 (en) Embedded control channel for high speed serial interconnect
US8665124B2 (en) Compression format for high bandwidth dictionary compression
CN104008078B (zh) 一种基于fpga的数据传输板之间进行高速传输的方法
US8281189B2 (en) SATA primitive prediction and correction
US8909880B2 (en) Method and apparatus for high bandwidth dictionary compression technique using delayed dictionary update
WO2013001631A1 (ja) 伝送装置、伝送回路、伝送システムおよび伝送装置の制御方法
CN102262572A (zh) 一种带crc校验功能的iic总线接口控制器
CN105446925A (zh) 提高串口数据接收正确性的方法和装置
CN102546084B (zh) 异步串行通信数据接收时的抗干扰纠错采样系统和方法
EP1656777A1 (en) Auto realignment of multiple serial byte-lanes
CN109101453B (zh) 异步串行通信采样系统和方法
US7178045B2 (en) Optimizing exit latency from an active power management state
WO2013048530A1 (en) Method and apparatus for high bandwidth dictionary compression technique using set update dictionary update policy
CN107771331B (zh) 独立式uark brk检测
CN114416626A (zh) 一种基于8b/10b编码的异步串行数据恢复方法
CN105045743A (zh) 一种具备优先级调度的多协议转换方法
CN103577378A (zh) 一种全双工异步串行通信方法
CN105512061A (zh) 对uart数据进行接收和解析的方法以及装置
CN104009823A (zh) 一种SerDes技术中的错位检测与纠错电路
US9306598B2 (en) Compression format for high bandwidth dictionary compression
CN101989250A (zh) 一种串行通信的方法和系统
CN114490488A (zh) 一种低功耗uart串口系统
US5793803A (en) Underrecovery system and method for block processing modems
CN110109615B (zh) 字节流转义字符硬件处理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160330