CN110865957A - 一种uart接口的数据接收方法和装置 - Google Patents
一种uart接口的数据接收方法和装置 Download PDFInfo
- Publication number
- CN110865957A CN110865957A CN201911117740.2A CN201911117740A CN110865957A CN 110865957 A CN110865957 A CN 110865957A CN 201911117740 A CN201911117740 A CN 201911117740A CN 110865957 A CN110865957 A CN 110865957A
- Authority
- CN
- China
- Prior art keywords
- sampling
- data receiving
- value
- code element
- period
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/40—Bus coupling
- G06F2213/4004—Universal serial bus hub with a plurality of upstream ports
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Dc Digital Transmission (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明提供了一种UART接口的数据接收方法和装置,包括:采样模块,用于分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;起始检测模块,与所述采样模块电连接,用于当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;数据接收模块,与所述采样模块和所述起始检测模块电连接,用于在数据接收态,根据码元周期内的采样值得到相应位的判决值。本发明可以改善因接收工作时钟的频率低、偏差大等造成的接收误码问题。
Description
技术领域
本发明涉及数据传输领域,尤指一种UART接口的数据接收方法和装置。
背景技术
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种通用串行数据总线,用于异步通信,可实现全双工传输和接收,被广泛应用计算机、通信领域。
UART的帧格式,如图7所示:1bit的起始位(start),8bit的数据位,1bit的校验位(可选),1bit/1.5bit/2bit的停止位(stop)。其中,每个bit统一称为一个码元。起始位为低电平,停止位为高电平。
UART是异步传输,没有传输同步时钟,所以收/发双方需预先定义一致的数据传输速率,即波特率。
传统的UART接收方法为:空闲态(IDLE)时,线路处于高电平;持续检测处于空闲态的线路上是否出现下降沿,如果检测到下降沿则说明线路开始数据传输,立即进入数据接收态,按照约定的波特率进行UART帧的接收。首先开始起始位的码元周期,接收起始位。码元周期结束后进入数据位的接收,取每个码元周期的中间采样点记录的采样值作为相应位的判决值。当数据位的最后一位码元结束时进入校验位的接收(如果有),采样码元中间点作为校验值,之后等待码元周期结束后进入停止位的接收。在停止位码元周期结束,跳转至IDLE状态,等待下一个UART帧的接收。
一般,在工作时钟的上升沿进行采样,码元周期等于配置的波特率除以工作时钟频率。比如,波特率为1kbps,工作时钟为16kbps(即16倍钟),在工作时钟的上升沿进行采样,这样每个码元周期有16个采样值,取中间采样点记录的采样值作为相应位的判决值。
由于UART是用接收端的工作时钟的上升沿采样,每个码元周期的中间采样点并不是绝对的数据中心点,这就引入采样误差。接收端的工作时钟的频率越低、精度越低,则采样误差会越大。
所以为了保证数据传输的正确性,通常要求:1.发送或接收设备的工作时钟相对于理想时钟的偏差不能超限。2.接收设备的工作时钟频率应不低于传输波特率的16倍。
但实际应用中,采用精准时钟和高频时钟会增加成本和功耗,在某些场景中,上面两点可能无法满足。比如,NBIOT场景,要求终端设备低功耗,通常这类设备在进入休眠态时采用低精度的低频时钟工作,在这种情况下,如何改善数据传输成功率,是一个待解决的问题。
发明内容
本发明的目的是提供一种UART接口的数据接收方法和装置,用于改善因接收工作时钟的频率低、偏差大等造成的接收误码问题。
本发明提供的技术方案如下:
一种UART接口的数据接收装置,包括:采样模块,用于分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;起始检测模块,与所述采样模块电连接,用于当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;数据接收模块,与所述采样模块和所述起始检测模块电连接,用于在数据接收态,根据码元周期内的采样值得到相应位的判决值。
进一步地,所述数据接收模块,进一步用于将码元周期的中间采样点记录的采样值作为相应位的判决值。
进一步地,所述数据接收模块包括:计数单元,用于在每个码元周期开始时,启动分频计数器,每经过一个时钟周期,计数值加1;码元边界检测单元,与所述计数单元电连接,用于当所述计数值等于预设码元周期,或检测到所获取的采样值发生翻转时,将所述分频计数器清0,启动下一码元周期的采样。
进一步地,所述数据接收模块还包括:码元周期更新单元,用于在数据接收态,统计预设数目的连续码元所包含的时钟周期数;根据所述时钟周期数更新所述预设码元周期。
进一步地,所述数据接收模块还包括:空闲态判断单元,用于在进入停止位的接收时,若检测到高电平,则停止对停止位的采样,直接进入空闲态。
本发明还提供一种UART接口的数据接收方法,包括:分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;在数据接收态,根据码元周期内的采样值得到相应位的判决值。
进一步地,所述的根据码元周期内的采样值得到相应位的判决值,包括:将码元周期的中间采样点记录的采样值作为相应位的判决值。
进一步地,所述的立即进入数据接收态,之后还包括:在每个码元周期开始时,启动分频计数器,每经过一个时钟周期,计数值加1;当所述计数值等于预设码元周期,或检测到所获取的采样值发生翻转时,将所述分频计数器清0,启动下一码元周期的采样。
进一步地,所述的根据码元周期内的采样值得到相应位的判决值,之后包括:在数据接收态,统计预设数目的连续码元所包含的时钟周期数;根据所述时钟周期数更新所述预设码元周期。
进一步地,所述的根据码元周期内的采样值得到相应位的判决值,之后还包括:在进入停止位的接收时,若检测到高电平,则停止对停止位的采样,直接进入空闲态。
通过本发明提供的一种UART接口的数据接收方法和装置,能够带来以下有益效果:
1、本发明通过在工作时钟的上升沿和下降沿对接收信号进行采样,获得了2倍工作时钟的采样效果,降低了采样误差,从而提高了数据接收的成功率,增强了接收设备的抗干扰能力。
2、本发明通过监测线路上的数据翻转,当出现翻转时,立即重置码元边界,防止时钟偏差累积造成后续码元的采样错误。
3、本发明通过统计预设数目的连续码元所包含的时钟周期数,动态更新预设码元周期,从而自适应匹配发送端的波特率变化。
4、本发明通过在停止位的接收中,一旦检测到高电平就直接进入空闲态,避免在某些情况下(比如,停止位短、快速进入下一UART帧的起始位时)因停止位的接收而过晚进入下一UART帧的接收,影响了下一帧的采样。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种UART接口的数据接收方法和装置的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明实施例的一种UART接口的数据接收装置的结构示意图;
图2是本发明实施例的另一种UART接口的数据接收装置的结构示意图;
图3是本发明实施例的另一种UART接口的数据接收装置的结构示意图;
图4是本发明实施例的一种UART接口的数据接收方法的流程图;
图5是本发明实施例的另一种UART接口的数据接收方法的流程图;
图6是本发明实施例的另一种UART接口的数据接收方法的流程图;
图7是UART帧格式的示意图;
图8是本发明实施例的一种双沿采样电路;
图9是本发明实施例的一种码元边界检测示意图;
图10是本发明实施例的另一种码元边界检测示意图。
附图标号说明:
100.采样模块,200.起始检测模块,300.数据接收模块,310.计数单元,320.码元边界检测单元,330.码元周期更新单元,340.空闲态判断单元。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
在本发明的一个实施例中,如图1所示,一种UART接口的数据接收装置,包括:
采样模块,用于分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;
起始检测模块,与所述采样模块电连接,用于当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;
数据接收模块,与所述采样模块和所述起始检测模块电连接,用于在数据接收态,根据码元周期内的采样值得到相应位的判决值。
具体地,接收端不仅在工作时钟的上升沿对接收信号(即RXD信号)进行采样,还在工作时钟的下降沿也进行采样,这样所获得的采样量相当于2倍工作时钟所获得的采样量,将采样精度提高了一倍。比如,工作时钟为4倍钟(4倍波特率的简称),由于采用双沿采样,获得了8倍钟的采样精度,从而降低了采样误差、提升了数据接收的正确率。
图8示出了一种双沿采样电路。具体地,RXD信号经第一类D触发器在上升沿采样,获得的采样信号再经另一第一类D触发器在上升沿锁存,得到bit[1];同时,RXD信号经第二类D触发器在下降沿采样,获得的采样信号再经另一第一类D触发器在上升沿锁存,得到bit[0]。如此,在每拍(即每个时钟周期)获得了2bit采样值,相对单沿采样,采样精度提高了一倍。采用两个串联的D触发器,有利于最终获得稳定的电平,避免采集到不稳定的电平信号。
在空闲态,当在工作时钟的上升沿或下降沿检测到接收信号由高电平翻转为低电平时,说明线路有数据传输,则立即进入UART帧的数据接收。如果在工作时钟的下降沿检测到接收信号变为低电平,则立即进入数据接收,相对传统的仅在上升沿采样,减小了采样偏差;假设工作时钟的占空比为50%,则采样偏差减少了一半的时钟周期。
在数据接收态,可以根据码元周期内的所有采样值得到相应位的判决值,比如,统计码元周期内的低电平采样数和高电平采样数,选取占比较高的电平作为相应位的判决值;也可以根据码元周期的部分采样值或某个采样值得到相应位的判决值,比如将每个码元周期的中间采样点记录的采样值作为相应位的判决值。中间采样点的位置按预设规则定义,比如,码元周期内的采样点数为N,若N为偶数,可选取第N/2个采样点、或第(N/2+1)个采样点作为中间采样点;若N为奇数,可选取第(N+1)/2个采样点作为中间采样点。
比如,工作时钟为4倍钟,如果仅在上升沿采样,则在一个码元周期可获得4个采样点,中间采样点可取第2个采样点,中间采样点距离码元周期的中心的偏差接近一个T,T为工作时钟的时钟周期。如果上升沿和下降沿都采样,则在一个码元周期可获得8个采样点,中间采样点可取第4个采样点,中间采样点距离码元周期的中心的偏差接近T/2,偏差更小。采样偏差的累计,通常易使bit6、bit7、stop位会采错。当累计采样偏差达到码元周期的一半时会使采样出错。所以低频时钟在双沿采样下相对单沿采样精度更高。
本实施例,通过采用双沿采样可将采样精度提高一倍,降低采样误差,从而改善因接收工作时钟的频率低、偏差大等造成的接收误码问题。
在本发明的另一个实施例中,如图2所示,一种UART接口的数据接收装置,包括:
采样模块,用于分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;
起始检测模块,与所述采样模块电连接,用于当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;
数据接收模块,与所述采样模块和所述起始检测模块电连接,用于在数据接收态,将每个码元周期的中间采样点记录的采样值作为相应位的判决值。
所述数据接收模块包括:
计数单元,用于在每个码元周期开始时,启动分频计数器,每经过一个时钟周期,计数值加1;
码元边界检测单元,与所述计数单元电连接,用于当所述计数值等于预设码元周期,或检测到所获取的采样值发生翻转时,将所述分频计数器清0,启动下一码元周期的采样;
空闲态判断单元,用于在进入停止位的接收时,若检测到高电平,则停止对停止位的采样,直接进入空闲态。
具体地,在每个码元周期开始时,启动分频计数器,计数值的初始值为0,每经过一个时钟周期,计数值加1。通常,当计数值等于预设码元周期时,将分频计数器清0,启动下一码元周期的采样。
但有时数据传输相对约定的波特率会瞬时偏快或偏慢,为了紧密跟随接收信号的变化,减少采样误差,当检测到接收信号出现了翻转时,说明数据已进入下一个码元周期,所以对分频计数器清0,重新开始计数,启动下一码元周期的采样。这样可以防止时钟偏差累积,造成后续bit的采样错误。
这里存在两种情况,一种是数据传输瞬时偏慢,则会出现实际接收的采样信号的码元周期大于预设码元周期的情况。如图9所示,在预设码元周期结束时出现第一个清0点,在检测到接收信号发生翻转时出现第二个清0点。从第一个清0点到第二个清0点之间的计数值相对预设码元周期小于第一预设比例时,则放弃该码元周期(即从第一个清0点到第二个清0点)内的采样值,即根据计数值判断未达到码元周期的中间采样点对应的采样位置时,则放弃所述码元周期内的采样值。比如,如果此时计数值所占比例不到1/2,则该码元周期内的计数白计,实际上该码元周期应合并到前一个码元周期。
另一种是数据传输瞬时偏快,则会出现实际接收的采样信号的码元周期小于预设码元周期的情况。如图10所示,计数值尚未达到预设码元周期,但检测到接收信号发生翻转时,则立即清0,这样可以紧密跟随接收信号的变化,减少采样误差。
检测接收信号是否出现翻转,可根据双沿采样获得的采样值分析得到。
预期的停止位为高电平。在某些情况下,比如stop位很短,只有1个bit,接着又进入start,如果继续采用取中间采样点的采样值作为相应位的判断值,由于累计偏差的影响,stop位的中间采样点偏差最大,可能误采到下一个start(start是低电平),导致采不到stop位,从而影响下一个UART帧的正确接收。所以本实施例提出,在停止位的码元周期内,只要收到一个高电平的采样值,则认为检测到停止位,停止对停止位的继续采样,直接进入空闲态(空闲态时,线路也是高电平),从而不影响下一个UART帧的接收。
本实施例,通过监测线路上的数据翻转,一旦出现翻转,立即重置码元边界,从而防止时钟偏差累积造成后续码元的采样错误;通过有效缩短停止位的接收,避免影响下一UART帧的接收。
在本发明的另一个实施例中,如图3所示,一种UART接口的数据接收装置,包括:
采样模块,用于分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;
起始检测模块,与所述采样模块电连接,用于当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;
数据接收模块,与所述采样模块和所述起始检测模块电连接,用于在数据接收态,将每个码元周期的中间采样点记录的采样值作为相应位的判决值。
所述数据接收模块包括:
计数单元,用于在每个码元周期开始时,启动分频计数器,每经过一个时钟周期,计数值加1;
码元边界检测单元,与所述计数单元电连接,用于当所述计数值等于预设码元周期,或检测到所获取的采样值发生翻转时,将所述分频计数器清0,启动下一码元周期的采样。
码元周期更新单元,用于在数据接收态,统计预设数目的连续码元所包含的时钟周期数;根据所述时钟周期数更新所述预设码元周期。
空闲态判断单元,用于在进入停止位的接收时,若检测到高电平,则停止对停止位的采样,直接进入空闲态。
具体地,在数据接收态,统计预设数目的连续码元所包含的时钟周期数;将该时钟周期数除以预设数目得到新的码元周期,用新的码元周期更新旧的码元周期。比如,约定波特率为1kbps,工作时钟为4kbps,所以码元周期为4(单位是一个工作时钟的时钟周期);从码元周期的起点开始从0计数,当计数达到4,一个码元周期结束;统计start位和数据位bit[0]~bit[6]所经历的时钟周期数,正常为32(=4*8个码元周期),如果实测的为24,说明波特率发生了改变,得到新的码元周期为3(=24/8),用该値更新码元周期,从而自适应匹配发送端的时钟变化。
本实施例,通过统计预设数目的连续码元所包含的时钟周期数,动态更新码元周期,从而自适应匹配发送端的波特率变化。
在本发明的另一个实施例中,如图4所示,一种UART接口的数据接收方法,包括:
步骤S100分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;
步骤S200当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;
步骤S400在数据接收态,将每个码元周期的中间采样点记录的采样值作为相应位的判决值。
具体地,接收端不仅在工作时钟的上升沿对接收信号(即RXD信号)进行采样,还在工作时钟的下降沿也进行采样,这样所获得的采样量相当于2倍工作时钟所获得的采样量,将采样精度提高了一倍。比如,工作时钟为4倍钟(4倍波特率的简称),由于采用双沿采样,获得了8倍钟的采样精度,从而降低了采样误差、提升了数据接收的正确率。
图8示出了一种双沿采样电路。具体地,RXD信号经第一类D触发器在上升沿采样,获得的采样信号再经另一第一类D触发器在上升沿锁存,得到bit[1];同时,RXD信号经第二类D触发器在下降沿采样,获得的采样信号再经另一第一类D触发器在上升沿锁存,得到bit[0]。如此,在每拍(即每个时钟周期)获得了2bit采样值,相对单沿采样,采样精度提高了一倍。采用两个串联的D触发器,有利于最终获得稳定的电平,避免采集到不稳定的电平信号。
在空闲态,当在工作时钟的上升沿或下降沿检测到接收信号由高电平翻转为低电平时,说明线路有数据传输,则立即进入UART帧的数据接收。如果在工作时钟的下降沿检测到接收信号变为低电平,则立即进入数据接收,相对传统的仅在上升沿采样,减小了采样偏差;假设工作时钟的占空比为50%,则采样偏差减少了一半的时钟周期。
在数据接收态,可以根据码元周期内的所有采样值得到相应位的判决值,比如,统计码元周期内的低电平采样数和高电平采样数,选取占比较高的电平作为相应位的判决值;也可以根据码元周期的部分采样值或某个采样值得到相应位的判决值,比如将每个码元周期的中间采样点记录的采样值作为相应位的判决值。中间采样点的位置按预设规则定义,比如,码元周期内的采样点数为N,若N为偶数,可选取第N/2个采样点、或第(N/2+1)个采样点作为中间采样点;若N为奇数,可选取第(N+1)/2个采样点作为中间采样点。
比如,工作时钟为4倍钟,如果仅在上升沿采样,则在一个码元周期可获得4个采样点,中间采样点可取第2个采样点,中间采样点距离码元周期的中心的偏差接近一个T,T为工作时钟的时钟周期。如果上升沿和下降沿都采样,则在一个码元周期可获得8个采样点,中间采样点可取第4个采样点,中间采样点距离码元周期的中心的偏差接近T/2,偏差更小。采样偏差的累计,通常易使bit6、bit7、stop位会采错。当累计采样偏差达到码元周期的一半时会使采样出错。所以低频时钟在双沿采样下相对单沿采样精度更高。
本实施例,通过采用双沿采样可将采样精度提高一倍,降低采样误差,从而改善因接收工作时钟的频率低、偏差大等造成的接收误码问题。
在本发明的另一个实施例中,如图5所示,一种UART接口的数据接收方法,包括:
步骤S100分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;
步骤S200当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;
步骤S300在数据接收态,在每个码元周期开始时,启动分频计数器,每经过一个时钟周期,计数值加1;
步骤S310当所述计数值等于预设码元周期,或检测到所获取的采样值发生翻转时,将分频计数器清0,启动下一码元周期的采样;
步骤S410在数据接收态,将中间采样点记录的采样值作为相应位的判决值;
步骤S600在进入停止位的接收时,若检测到高电平,则停止对停止位的采样,直接进入空闲态。
具体地,在每个码元周期开始时,启动分频计数器,计数值的初始值为0,每经过一个时钟周期,计数值加1。通常,当计数值等于预设码元周期时,将分频计数器清0,启动下一码元周期的采样。
但有时数据传输相对约定的波特率会瞬时偏快或偏慢,为了紧密跟随接收信号的变化,减少采样误差,当检测到接收信号出现了翻转时,说明数据已进入下一个码元周期,所以对分频计数器清0,重新开始计数,启动下一码元周期的采样。这样可以防止时钟偏差累积,造成后续bit的采样错误。
这里存在两种情况,一种是数据传输瞬时偏慢,则会出现实际接收的采样信号的码元周期大于预设码元周期的情况。如图9所示,在预设码元周期结束时出现第一个清0点,在检测到接收信号发生翻转时出现第二个清0点。从第一个清0点到第二个清0点之间的计数值相对预设码元周期小于第一预设比例时,则放弃该码元周期(即从第一个清0点到第二个清0点)内的采样值,即根据计数值判断未达到码元周期的中间采样点对应的采样位置时,则放弃所述码元周期内的采样值。比如,如果此时计数值所占比例不到1/2,则该码元周期内的计数白计,实际上该码元周期应合并到前一个码元周期。
另一种是数据传输瞬时偏快,则会出现实际接收的采样信号的码元周期小于预设码元周期的情况。如图10所示,计数值尚未达到预设码元周期,但检测到接收信号发生翻转时,则立即清0,这样可以紧密跟随接收信号的变化,减少采样误差。
检测接收信号是否出现翻转,可根据双沿采样获得的采样值分析得到。
预期的停止位为高电平。在某些情况下,比如stop位很短,只有1个bit,接着又进入start,如果继续采用取中间采样点的采样值作为相应位的判断值,由于累计偏差的影响,stop位的中间采样点偏差最大,可能误采到下一个start(start是低电平),导致采不到stop位,从而影响下一个UART帧的正确接收。所以本实施例提出,在停止位的码元周期内,只要收到一个高电平的采样值,则认为检测到停止位,停止对停止位的继续采样,直接进入空闲态(空闲态时,线路也是高电平),从而不影响下一个UART帧的接收。
本实施例,通过监测线路上的数据翻转,一旦出现翻转,立即重置码元边界,从而防止时钟偏差累积造成后续码元的采样错误;通过有效缩短停止位的接收,避免影响下一UART帧的接收。
在本发明的另一个实施例中,如图6所示,一种UART接口的数据接收方法,包括:
步骤S100分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;
步骤S200当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;
步骤S300在每个码元周期开始时,启动分频计数器,每经过一个时钟周期,计数值加1;
步骤S310当所述计数值等于预设码元周期,或检测到所获取的采样值发生翻转时,将所述分频计数器清0,启动下一码元周期的采样;
步骤S400在数据接收态,将每个码元周期的中间采样点记录的采样值作为相应位的判决值;
步骤S500在数据接收态,统计预设数目的连续码元所包含的时钟周期数;
步骤S510根据所述时钟周期数更新所述预设码元周期;
步骤S600在进入停止位的接收时,若检测到高电平,则停止对停止位的采样,直接进入空闲态。
具体地,在数据接收态,统计预设数目的连续码元所包含的时钟周期数;将该时钟周期数除以预设数目得到新的码元周期,用新的码元周期更新旧的码元周期。比如,约定波特率为1kbps,工作时钟为4kbps,得到码元周期为4(=4kbps/1kbps,单位是一个工作时钟的时钟周期);从码元周期的起点开始从0计数,当计数达到4,一个码元周期结束;统计start位和数据位bit[0]~bit[6]所经历的时钟周期数,正常为32(=4*8个码元周期),如果实测的为24,说明波特率发生了改变,得到新的码元周期为3(=24/8),用该値更新码元周期,从而自适应匹配发送端的时钟变化。
本实施例,通过通过统计预设数目的连续码元所包含的时钟周期数,动态更新码元周期,从而自适应匹配发送端的波特率变化。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种UART接口的数据接收装置,其特征在于,包括:
采样模块,用于分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;
起始检测模块,与所述采样模块电连接,用于当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;
数据接收模块,与所述采样模块和所述起始检测模块电连接,用于在数据接收态,根据码元周期内的采样值得到相应位的判决值。
2.根据权利要求1所述的数据接收装置,其特征在于,还包括:
所述数据接收模块,进一步用于将码元周期的中间采样点记录的采样值作为相应位的判决值。
3.根据权利要求1所述的一种UART接口的数据接收装置,其特征在于,所述数据接收模块包括:
计数单元,用于在每个码元周期开始时,启动分频计数器,每经过一个时钟周期,计数值加1;
码元边界检测单元,与所述计数单元电连接,用于当所述计数值等于预设码元周期,或检测到所获取的采样值发生翻转时,将所述分频计数器清0,启动下一码元周期的采样。
4.根据权利要求3所述的一种UART接口的数据接收装置,其特征在于,所述数据接收模块还包括:
码元周期更新单元,用于在数据接收态,统计预设数目的连续码元所包含的时钟周期数;根据所述时钟周期数更新所述预设码元周期。
5.根据权利要求1-4任意一项所述的数据接收装置,其特征在于,所述数据接收模块还包括:
空闲态判断单元,用于在进入停止位的接收时,若检测到高电平,则停止对停止位的采样,直接进入空闲态。
6.一种UART接口的数据接收方法,其特征在于,包括:
分别在工作时钟的上升沿和下降沿对接收信号进行采样,获取对应的采样值;
当在空闲态检测到所述采样值由高电平翻转为低电平时,则立即进入数据接收态;
在数据接收态,根据码元周期内的采样值得到相应位的判决值。
7.根据权利要求6所述的数据接收方法,其特征在于,所述的根据码元周期内的采样值得到相应位的判决值,包括:
将码元周期的中间采样点记录的采样值作为相应位的判决值。
8.根据权利要求6所述的数据接收方法,其特征在于,所述的立即进入数据接收态,之后还包括:
在每个码元周期开始时,启动分频计数器,每经过一个时钟周期,计数值加1;
当所述计数值等于预设码元周期,或检测到所获取的采样值发生翻转时,将所述分频计数器清0,启动下一码元周期的采样。
9.根据权利要求8所述的数据接收方法,其特征在于,所述根据码元周期内的采样值得到相应位的判决值,之后包括:
在数据接收态,统计预设数目的连续码元所包含的时钟周期数;
根据所述时钟周期数更新所述预设码元周期。
10.根据权利要求6-9任意一项所述的数据接收方法,其特征在于,所述根据码元周期内的采样值得到相应位的判决值,之后还包括:
在进入停止位的接收时,若检测到高电平,则停止对停止位的采样,直接进入空闲态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911117740.2A CN110865957A (zh) | 2019-11-15 | 2019-11-15 | 一种uart接口的数据接收方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911117740.2A CN110865957A (zh) | 2019-11-15 | 2019-11-15 | 一种uart接口的数据接收方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110865957A true CN110865957A (zh) | 2020-03-06 |
Family
ID=69654615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911117740.2A Pending CN110865957A (zh) | 2019-11-15 | 2019-11-15 | 一种uart接口的数据接收方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110865957A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116671193A (zh) * | 2021-01-29 | 2023-08-29 | 华为技术有限公司 | 一种采样方法、采样电路及分布式网络的时钟同步方法 |
CN116980294A (zh) * | 2023-06-28 | 2023-10-31 | 深圳精控集成半导体有限公司 | 通信数据的接收方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017473A (zh) * | 2007-03-14 | 2007-08-15 | 杭州华为三康技术有限公司 | 支持热插拔的spi4总线接口卡、及相应的主机和方法 |
CN107222219A (zh) * | 2017-06-28 | 2017-09-29 | 中国电子科技集团公司第五十八研究所 | 具备帧对齐功能的高速串并转换电路 |
CN109150171A (zh) * | 2018-09-14 | 2019-01-04 | 南京邮电大学 | 一种高速低抖动的鉴频鉴相器及时钟数据恢复电路 |
CN109643298A (zh) * | 2016-08-02 | 2019-04-16 | 高通股份有限公司 | 用于同步链路的三倍数据率技术 |
CN109885525A (zh) * | 2019-03-19 | 2019-06-14 | 西安联飞智能装备研究院有限责任公司 | Uart接收方法、装置、电子设备及可读存储介质 |
CN109977062A (zh) * | 2019-03-14 | 2019-07-05 | 建荣半导体(深圳)有限公司 | 一种软件实现串行数据接收的方法、装置及电子设备 |
-
2019
- 2019-11-15 CN CN201911117740.2A patent/CN110865957A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017473A (zh) * | 2007-03-14 | 2007-08-15 | 杭州华为三康技术有限公司 | 支持热插拔的spi4总线接口卡、及相应的主机和方法 |
CN109643298A (zh) * | 2016-08-02 | 2019-04-16 | 高通股份有限公司 | 用于同步链路的三倍数据率技术 |
CN107222219A (zh) * | 2017-06-28 | 2017-09-29 | 中国电子科技集团公司第五十八研究所 | 具备帧对齐功能的高速串并转换电路 |
CN109150171A (zh) * | 2018-09-14 | 2019-01-04 | 南京邮电大学 | 一种高速低抖动的鉴频鉴相器及时钟数据恢复电路 |
CN109977062A (zh) * | 2019-03-14 | 2019-07-05 | 建荣半导体(深圳)有限公司 | 一种软件实现串行数据接收的方法、装置及电子设备 |
CN109885525A (zh) * | 2019-03-19 | 2019-06-14 | 西安联飞智能装备研究院有限责任公司 | Uart接收方法、装置、电子设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
刘海成: "《AVR单片机原理及测控工程应用——基于ATmega48/ATmega16》", 31 March 2008 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116671193A (zh) * | 2021-01-29 | 2023-08-29 | 华为技术有限公司 | 一种采样方法、采样电路及分布式网络的时钟同步方法 |
CN116671193B (zh) * | 2021-01-29 | 2024-05-17 | 华为技术有限公司 | 一种采样方法、采样电路及分布式网络的时钟同步方法 |
CN116980294A (zh) * | 2023-06-28 | 2023-10-31 | 深圳精控集成半导体有限公司 | 通信数据的接收方法、装置、电子设备及存储介质 |
CN116980294B (zh) * | 2023-06-28 | 2024-04-30 | 深圳精控集成半导体有限公司 | 通信数据的接收方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8537907B2 (en) | Receiving system for use in near field communication and mode detection method therefore | |
CN109075742B (zh) | 波特率校准电路及串口芯片 | |
US10313068B1 (en) | Signal monitoring and measurement for a multi-wire, multi-phase interface | |
JP4814698B2 (ja) | スペクトラム拡散受信機およびその方法 | |
CN100545882C (zh) | 用于无线遥控接收芯片的自适应解码方法 | |
CN111314018B (zh) | 波特率自适应调节处理系统及方法、信息数据处理终端 | |
CN102739352B (zh) | 用于串行通信的变换间隔编码 | |
KR20120101570A (ko) | 부분 네트워킹을 위한 웨이크업 버스 메시지의 정의 | |
CN110865957A (zh) | 一种uart接口的数据接收方法和装置 | |
CN103618588A (zh) | 一种自动波特率检测方法及检测模块 | |
CN101710857A (zh) | 串行通信波特率自适应方法及其装置 | |
CN112422363A (zh) | 异步串口通信波特率自动检测装置及其方法 | |
US6944248B2 (en) | Data rate calibration for asynchronous serial communications | |
CN102938744B (zh) | 一种通用串行收发器的实现方法 | |
CN203574663U (zh) | 一种自动波特率检测模块 | |
CN212969687U (zh) | 异步串口通信波特率自动检测装置 | |
CN110535621B (zh) | 一种串口通讯波特率校正装置及其校正方法 | |
CN116015324A (zh) | 一种强化抗干扰的uart数据接收装置及其接收方法 | |
CN110635854A (zh) | 一种传输协议自适应解码系统及方法 | |
CN114527832B (zh) | 脉冲信号边沿测量方法及装置、存储介质及微控制单元 | |
CN210201839U (zh) | 一种传输协议自适应解码系统 | |
CN211406003U (zh) | 一种曼彻斯特码的解码系统 | |
CN211018863U (zh) | Bmc码的解码系统 | |
CN111800360A (zh) | 一种基于频率识别的fsk软件解码方法 | |
US9712344B2 (en) | Receiving device with error detection circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |