CN112039635B - 一种基于rc振荡器的uart波特率自适应方法、装置 - Google Patents
一种基于rc振荡器的uart波特率自适应方法、装置 Download PDFInfo
- Publication number
- CN112039635B CN112039635B CN202010886260.9A CN202010886260A CN112039635B CN 112039635 B CN112039635 B CN 112039635B CN 202010886260 A CN202010886260 A CN 202010886260A CN 112039635 B CN112039635 B CN 112039635B
- Authority
- CN
- China
- Prior art keywords
- uart
- oscillator
- oscillation frequency
- baud rate
- time
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0002—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0036—Systems modifying transmission characteristics according to link quality, e.g. power backoff arrangements specific to the receiver
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0046—Code rate detection or code type detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Communication Control (AREA)
Abstract
本申请公开了一种基于RC振荡器的UART波特率自适应方法、装置、设备及介质,该方法应用于设置有UART的串口通信芯片,串口通信芯片的时钟信号由RC振荡器所触发;包括:UART预先与数据发送方约定以7D为数据帧帧头进行通信,然后,通过自定义的数据帧帧头来判断UART接收到的数据是否正确,在UART接收数据帧正确的条件下,利用UART接收数据帧的波特率对RC振荡器的振荡频率进行校正,得到校正振荡频率,之后,再利用校正振荡频率重新推算UART接收下一帧数据的波特率,这样就使得UART能够对接收到数据帧的波特率进行适应性调整,由此就避免了对人力资源的浪费。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种基于RC振荡器的UART波特率自适应方法、装置、设备及介质。
背景技术
UART(Universal Asynchronous Receiver Transmitter,通用异步收发传输器)通常会被集成在串口上,用于将传输数据在串行通信与并行通信之间进行转换。由于在串行通信方式中,只能在信号线上传送数据位,不能包含有任何时钟信号,所以,UART必须得预先知道数据发送方发送数据的波特率才能正确采样数据,而UART采样数据的精度是由触发时钟信号的振荡器所决定。
因为RC振荡器比晶体振荡器的成本更低,所以,在实际应用中,经常会见到利用RC振荡器触发时钟信号的应用场景。但是,由于RC振荡器的振荡频率会受到电阻电容精度以及外界环境温湿度的影响,这样就会导致RC振荡器的振荡频率发生变化,并由此导致UART出现采集不到正确数据帧的现象。
在现有技术中,为了保证UART采集得到正确的数据帧,通常需要人工手动来对UART接收数据帧的波特率进行调整,但是,此种操作方式会对人力资源造成较大的浪费。目前,针对这一技术问题,还没有较为有效的解决办法。
由此可见,如何使得UART能够对接收数据帧的波特率进行自适应调整,以避免对人力资源的浪费,是本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种基于RC振荡器的UART波特率调整方法、装置、设备及介质,以避免对人力资源的浪费。其具体方案如下:
一种基于RC振荡器的UART波特率自适应方法,应用于设置有UART的串口通信芯片,所述串口通信芯片的时钟信号由RC振荡器所触发;包括:
约定所述UART以7D为数据帧帧头与数据发送方进行通信,并对所述UART的数据接收信号线进行监听;
当检测到第一触发沿时,则控制所述UART开始接收数据帧,并将所述第一触发沿所对应的时刻标记为第一时刻;
当检测到第二触发沿时,则获取当前时刻与所述第一时刻的第一时间差,并当检测到第三触发沿时,则获取当前时刻与所述第一时刻的第二时间差;
若所述第二时间差为所述第一时间差的4倍,则判定所述UART接收的数据帧正确,并确定所述UART接收所述数据帧的波特率为目标值;其中,所述目标值的表达式为:I=8f/count2;式中,f为所述RC振荡器的振荡频率,count2为所述第二时间差;
利用所述目标值获取所述UART的当前波特率,并根据所述UART的当前波特率确定所述RC振荡器的实际振荡频率;
判断所述RC振荡器的实际振荡频率是否满足预设条件;
若是,则利用所述RC振荡器的实际振荡频率和所述RC振荡器的理论振荡频率对所述RC振荡器的振荡频率进行校正,得到校正振荡频率;
控制所述UART开始接收下一帧数据,当检测到第四触发沿时,则将所述第四触发沿所对应的时刻标记为第二时刻;
当检测到第五触发沿时,则获取当前时刻与所述第二时刻的第三时间差,并当检测到第六触发沿时,则获取当前时刻与所述第二时刻的第四时间差;
获取所述第四时间差和所述第二时间差之间的目标差值,并获取所述目标差值与所述第二时间差之间的目标比值;
若所述目标比值小于第一预设阈值,则利用所述第四时间差替换所述第二时间差,并利用所述校正振荡频率替换所述RC振荡器的振荡频率,重新计算所述目标值,得到更新目标值;
控制所述UART按照所述更新目标值接收所述下一帧数据。
优选的,所述第一触发沿具体为第一下降沿。
优选的,还包括:
若所述目标比值大于第二预设值,则判定所述UART接收所述下一帧数据失败。
优选的,还包括:
若所述目标比值大于等于所述第一预设值且小于等于所述第二预设值,则控制所述UART按照所述目标值接收所述下一帧数据。
优选的,所述利用所述RC振荡器的实际振荡频率和所述RC振荡器的理论振荡频率对所述RC振荡器的振荡频率进行校正,得到校正振荡频率的过程,包括:
利用所述RC振荡器的实际振荡频率和所述RC振荡器的理论振荡频率确定所述RC振荡器的频率偏差值;
利用所述RC振荡器的频率偏差值对所述RC振荡器的振荡频率进行校正,得到所述校正振荡频率。
优选的,还包括:
若所述第四时间差不等于所述第三时间差的4倍,则控制所述UART将所述下一帧数据丢弃。
优选的,所述第一预设值具体为1/64。
相应的,本发明还公开了一种基于RC振荡器的UART波特率自适应装置,应用于设置有UART的串口通信芯片,所述串口通信芯片的时钟信号由RC振荡器所触发;包括:
信号监听模块,用于约定所述UART以7D为数据帧帧头与数据发送方进行通信,并对所述UART的数据接收信号线进行监听;
第一时刻标记模块,用于当检测到第一触发沿时,则控制所述UART开始接收数据帧,并将所述第一触发沿所对应的时刻标记为第一时刻;
第一差值获取模块,用于当检测到第二触发沿时,则获取当前时刻与所述第一时刻的第一时间差,并当检测到第三触发沿时,则获取当前时刻与所述第一时刻的第二时间差;
波特率判定模块,用于若所述第二时间差为所述第一时间差的4倍,则判定所述UART接收的数据帧正确,并确定所述UART接收所述数据帧的波特率为目标值;其中,所述目标值的表达式为:I=8f/count2;式中,f为所述RC振荡器的振荡频率,count2为所述第二时间差;
频率确定模块,用于利用所述目标值获取所述UART的当前波特率,并根据所述UART的当前波特率确定所述RC振荡器的实际振荡频率;
条件判断模块,用于判断所述RC振荡器的实际振荡频率是否满足预设条件;
频率校正模块,用于当所述条件判断模块的判断结果为是时,则利用所述RC振荡器的实际振荡频率和所述RC振荡器的理论振荡频率对所述RC振荡器的振荡频率进行校正,得到校正振荡频率;
第二时刻标记模块,用于控制所述UART开始接收下一帧数据,当检测到第四触发沿时,则将所述第四触发沿所对应的时刻标记为第二时刻;
第二差值获取模块,用于当检测到第五触发沿时,则获取当前时刻与所述第二时刻的第三时间差,并当检测到第六触发沿时,则获取当前时刻与所述第二时刻的第四时间差;
比值获取模块,用于获取所述第四时间差和所述第二时间差之间的目标差值,并获取所述目标差值与所述第二时间差之间的目标比值;
频率计算模块,用于若所述目标比值小于第一预设阈值,则利用所述第四时间差替换所述第二时间差,并利用所述校正振荡频率替换所述RC振荡器的振荡频率,重新计算所述目标值,得到更新目标值;
数据接收模块,用于控制所述UART按照所述更新目标值接收所述下一帧数据。
相应的,本发明还公开了一种基于RC振荡器的UART波特率自适应设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如前述所公开的一种基于RC振荡器的UART波特率自适应方法的步骤。
相应的,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述所公开的一种基于RC振荡器的UART波特率自适应方法的步骤。
可见,在本发明中,因为可以通过自定义的数据帧帧头判断UART接收到的数据帧是否正确,并通过自定义的数据帧帧头计算出UART在接收数据帧时的波特率,在此情况下,就可以根据UART的波特率来对RC振荡器的振荡频率进行校正,并且,在数据发送方发送数据帧的波特率出现变化时,UART同时也可以对接收数据帧的波特率进行自适应的调整。显然,相比于现有技术而言,因为利用该方法可以使得UART对接收数据帧的波特率进行自适应调整,所以,通过本发明所提供的方法就可以避免对人力资源的浪费。相应的,本发明所提供的一种基于RC振荡器的UART波特率自适应装置、设备及介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种基于RC振荡器的UART波特率自适应方法的流程图;
图2为本发明实施例所提供自定义数据帧帧头的示意图;
图3为本发明实施例所提供的一种基于RC振荡器的UART波特率自适应装置的结构图;
图4为本发明实施例所提供的一种基于RC振荡器的UART波特率自适应设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1为本发明实施例所提供的一种基于RC振荡器的UART波特率自适应方法的流程图,该方法应用于设置有UART的串口通信芯片,串口通信芯片的时钟信号由RC振荡器所触发;包括:
步骤S11:约定UART以7D为数据帧帧头与数据发送方进行通信,并对UART的数据接收信号线进行监听;
步骤S12:当检测到第一触发沿时,则控制UART开始接收数据帧,并将第一触发沿所对应的时刻标记为第一时刻;
步骤S13:当检测到第二触发沿时,则获取当前时刻与第一时刻的第一时间差,并当检测到第三触发沿时,则获取当前时刻与第一时刻的第二时间差;
步骤S14:若第二时间差为第一时间差的4倍,则判定UART接收的数据帧正确,并确定UART接收数据帧的波特率为目标值;
其中,目标值的表达式为:I=8f/count2;
式中,f为RC振荡器的振荡频率,count2为第二时间差。
在本实施例中,是提供了一种基于RC振荡器的UART波特率自适应方法,通过该方法能够使得UART对接收到数据帧的波特率进行自适应调整,以避免对人力资源的浪费。
具体的,在本实施例中,UART首先约定以自定义的数据帧头与数据发送方进行通信,也即,UART与数据发送方约定以7D为数据帧帧头进行通信,请参见图2,图2为本发明实施例所提供自定义数据帧帧头的示意图;当UART与数据发送方约定好以7D为数据帧帧头进行通信时,则开始对UART的数据接收信号线进行监听,当检测到第一触发沿时,则将第一触发沿所对应的时刻标记为第一时刻t1,并控制UART开始接收数据帧。
当检测到第二触发沿时,则将第二触发沿所对应的时刻标记为t2,获取当前时刻与第一时刻之间的第一时间差,也即,获取t2与t1之间的第一时间差count1,其中,第一时间差count1为传输2bit数据所需要的时间;当检测到第三触发沿时,则将第三触发沿所对应的时刻标记为t3,并获取当前时刻与第一时刻的第二时间差,也即,t3与t1之间的第二时间差count2,其中,第二时间差count2为传输8bit数据所需要的时间。
之后,再通过判断第二时间差count2是否为第一时间差count1的4倍来判断UART是否能够接收到正确的数据帧,也即,如果count2=4*count1,则说明UART所接收到的数据帧为正确的数据帧,如果count2≠4*count1,则说明UART所接收的数据帧为错误的数据帧。
可以理解的是,当判断出UART所接收到的数据帧为正确的数据帧时,则可以根据第二时间差count2与第一时间差count1之间的关系来推算UART接收数据帧的波特率。具体的,在本实施例中,是根据第二时间差count2与第一时间差count1之间的关系将UART接收数据帧的波特率确定为目标值。
其中,目标值的表达式为:I=8f/count2;
式中,f为RC振荡器的振荡频率,count2为第二时间差。
步骤S15:利用目标值获取UART的当前波特率,并根据UART的当前波特率确定RC振荡器的实际振荡频率;
步骤S16:判断RC振荡器的实际振荡频率是否满足预设条件;
步骤S17:若是,则利用RC振荡器的实际振荡频率和RC振荡器的理论振荡频率对RC振荡器的振荡频率进行校正,得到校正振荡频率;
可以理解的是,当确定出UART接收数据帧的波特率为目标值时,则可以根据UART接收数据帧的波特率推测出UART接收数据帧的当前波特率固定值,也即,UART的当前波特率,比如:4800、9600或者19200等等。在此情况下,就可以根据UART接收数据帧的波特率目标值确定出RC振荡器的实际振荡频率。
其中,RC振荡器的实际振荡频率的表达式为:
式中,count2为第二时间差,BaudRate为UART接收数据帧的当前波特率固定值。
具体的,当确定出RC振荡器的实际振荡频率时,则可以将RC振荡器的实际振荡频率与预设条件进行比较来判断RC振荡器的实际振荡频率是否满足实际应用需求,也即,如果RC振荡器的实际振荡频率不满足预设条件,则说明RC振荡器的实际振荡频率不符合实际应用场景,此时,则不能利用RC振荡器的实际振荡频率来对RC振荡器的振荡频率进行校正;如果RC振荡器的实际振荡频率满足预设条件,则说明RC振荡器的实际振荡频率符合实际应用场景,在此情况下,则可以利用RC振荡器的实际振荡频率与RC振荡器的理论振荡频率对RC振荡器的振荡频率进行校正,得到校正振荡频率。
步骤S18:控制UART开始接收下一帧数据,当检测到第四触发沿时,则将第四触发沿所对应的时刻标记为第二时刻;
步骤S19:当检测到第五触发沿时,则获取当前时刻与第二时刻的第三时间差,并当检测到第六触发沿时,则获取当前时刻与第二时刻的第四时间差;
步骤S20:获取第四时间差和第二时间差之间的目标差值,并获取目标差值与第二时间差之间的目标比值;
步骤S21:若目标比值小于第一预设阈值,则利用第四时间差替换第二时间差,并利用校正振荡频率替换RC振荡器的振荡频率,重新计算目标值,得到更新目标值;
步骤S22:控制UART按照更新目标值接收下一帧数据。
当UART开始接收数据发送方所发送的下一帧数据时,则控制UART开始接收下一帧数据,并且,当检测到第四触发沿时,则将第四触发沿所对应的时刻标记为第二时刻t'2,当检测到第五触发沿时,则获取当前时刻与第二时刻的第三时间差,也即,获取t5与t'2之间的第三时间差count3,当检测到第六触发沿时,则获取当前时刻与第二时刻的第四时间差,也即,获取t6与t'2之间的第四时间差count4。
之后,获取第四差值和第二差值之间的目标差值,并获取目标差值与第二时间差之间的目标比值,也即,(count4-count2)/count2,如果目标比值小于第一预设值w1,也即,(count4-count2)/count2<w1,则利用第四时间count4差替换第二时间差count2,并利用校正振荡频率替换RC振荡器的振荡频率f,重新计算目标值,然后,获取更新目标值,最后,再控制UART按照更新目标值开始接收下一帧数据。
可见,在本实施例中,因为可以通过自定义的数据帧帧头判断UART接收到的数据帧是否正确,并通过自定义的数据帧帧头计算出UART在接收数据帧时的波特率,在此情况下,就可以根据UART的波特率来对RC振荡器的振荡频率进行校正,并且,在数据发送方发送数据帧的波特率出现变化时,UART同时也可以对接收数据帧的波特率进行自适应的调整。显然,相比于现有技术而言,因为利用该方法可以使得UART对接收数据帧的波特率进行自适应调整,所以,通过本实施例所提供的方法就可以避免对人力资源的浪费。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,第一触发沿具体为第一下降沿。
在本实施例中,是将第一触发沿设置为第一下降沿,也即,利用每一个下降沿的触发时刻来对UART接收到的数据帧进行标记。因为在实际应用中,下降沿所对应的波形特征更加明显,所以,当利用下降沿来计算UART接收数据帧的波特率时,就可以进一步提高UART在接收数据帧时的波特率。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,第一预设值具体为1/64。
在本实施例中,是将第一预设值设置为164,因为经过大量的实际操作经验得出,当将第一预设值设置为1/64时,能够进一步保证UART接收数据帧过程中的准确率。当然,在实际应用中,还可以根据实际情况的不同,对第一预设值的设定值进行适应性的调整,此处不作具体赘述。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述基于RC振荡器的UART波特率自适应方法还包括:
若目标比值大于第二预设值,则判定UART接收下一帧数据失败。
具体的,可以将第二预设值设置为w2,那么,如果目标比值大于第二预设值,也即,如果(count4-count2)/count2>w2,则说明UART接收下一帧数据的过程失败,在此情况下,则可以重新执行波特率自适应的流程。在实际应用中,可以将第二预设值设置为4%,也即,如果(count4-count2)/count2>4%,则说明UART接收下一帧数据的过程失败。
显然,通过本实施例所提供的技术方案,可以使得UART接收数据帧的过程更加准确与可靠。
作为一种优选的实施方式,上述基于RC振荡器的UART波特率自适应方法还包括:
若目标比值大于等于第一预设值且小于等于第二预设值,则控制UART按照目标值接收下一帧数据。
在本实施例中,如果w1≤(count4-count2)count2≤w2,则说明UART接收到的数据帧为干扰噪声,在此情况下,则应当控制UART接收数据帧的波特率保持不变,也即,UART还是按照目标值来接收数据发送方所发送的下一帧数据。
具体的,如果1/64≤(count4-count2)/count2≤4%,则控制UART按照目标值I=8fcount2来接收数据发送方所发送的数据帧。显然,通过本实施例所提供的技术方案,可以进一步保证UART在接收数据帧过程中的准确性。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:利用RC振荡器的实际振荡频率和RC振荡器的理论振荡频率对RC振荡器的振荡频率进行校正,得到校正振荡频率的过程,包括:
利用RC振荡器的实际振荡频率和RC振荡器的理论振荡频率确定RC振荡器的频率偏差值;
利用RC振荡器的频率偏差值对RC振荡器的振荡频率进行校正,得到校正振荡频率。
在本实施例中,是提供了一种对RC振荡器进行校正的具体实施方法,也即,在对RC振荡器的振荡频率进行校正的过程中,首先是利用RC振荡器的实际振荡频率和RC振荡器的理论振荡频率确定RC振荡器的频率偏差值,然后,再利用RC振荡器的频率偏差值来对RC振荡器的振荡频率进行校正,得到校正振荡频率。
其中,RC振荡器的实际振荡频率的表达式为:
式中,count2为第二时间差,BaudRate为UART接收数据帧的当前波特率固定值;
RC振荡器的理论振荡频率的表达式为:
式中,R为RC振荡器的电阻值,C为RC振荡器的电容值。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述基于RC振荡器的UART波特率自适应方法还包括:
若第四时间差不等于第三时间差的4倍,则控制UART将下一帧数据丢弃。
可以理解的是,如果第四时间差不等于第三时间差的4倍,则说明UART接收到的数据帧为错误的数据帧,也即,如果count4≠4count3,则说明UART接收到的数据帧为错误的数据帧,在此情况下,则可以控制UART将接收到的数据帧丢弃,以避免接收错误数据帧而对后续流程的影响。
请参见图3,图3为本发明实施例所提供的一种基于RC振荡器的UART波特率自适应装置的结构图;该装置应用于设置有UART的串口通信芯片,串口通信芯片的时钟信号由RC振荡器所触发;该装置包括:
信号监听模块21,用于约定UART以7D为数据帧帧头与数据发送方进行通信,并对UART的数据接收信号线进行监听;
第一时刻标记模块22,用于当检测到第一触发沿时,则控制UART开始接收数据帧,并将第一触发沿所对应的时刻标记为第一时刻;
第一差值获取模块23,用于当检测到第二触发沿时,则获取当前时刻与第一时刻的第一时间差,并当检测到第三触发沿时,则获取当前时刻与第一时刻的第二时间差;
波特率判定模块24,用于若第二时间差为第一时间差的4倍,则判定UART接收的数据帧正确,并确定UART接收数据帧的波特率为目标值;其中,目标值的表达式为:I=8f/count2;式中,f为RC振荡器的振荡频率,count2为第二时间差;
频率确定模块25,用于利用目标值获取UART的当前波特率,并根据UART的当前波特率确定RC振荡器的实际振荡频率;
条件判断模块26,用于判断RC振荡器的实际振荡频率是否满足预设条件;
频率校正模块27,用于当条件判断模块的判断结果为是时,则利用RC振荡器的实际振荡频率和RC振荡器的理论振荡频率对RC振荡器的振荡频率进行校正,得到校正振荡频率;
第二时刻标记模块28,用于控制UART开始接收下一帧数据,当检测到第四触发沿时,则将第四触发沿所对应的时刻标记为第二时刻;
第二差值获取模块29,用于当检测到第五触发沿时,则获取当前时刻与第二时刻的第三时间差,并当检测到第六触发沿时,则获取当前时刻与第二时刻的第四时间差;
比值获取模块30,用于获取第四时间差和第二时间差之间的目标差值,并获取目标差值与第二时间差之间的目标比值;
频率计算模块31,用于若第四时间差与第二时间差之间的差值小于第一预设阈值,则利用第四时间差替换第二时间差,并利用校正振荡频率替换RC振荡器的振荡频率,重新计算目标值,得到更新目标值;
数据接收模块32,用于控制UART按照更新目标值接收下一帧数据。
本发明实施例所提供的一种基于RC振荡器的UART波特率自适应装置,具有前述所公开的一种基于RC振荡器的UART波特率自适应方法所具有的有益效果。
请参见图4,图4为本发明实施例所提供的一种基于RC振荡器的UART波特率自适应设备的结构图,该设备包括:
存储器31,用于存储计算机程序;
处理器32,用于执行计算机程序时实现如前述所公开的一种基于RC振荡器的UART波特率自适应方法的步骤。
本发明实施例所提供的一种基于RC振荡器的UART波特率自适应设备,具有前述所公开的一种基于RC振荡器的UART波特率自适应方法所具有的有益效果。
相应的,本发明实施例还公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如前述所公开的一种基于RC振荡器的UART波特率自适应方法的步骤。
本发明实施例所提供的一种计算机可读存储介质,具有前述所公开的一种基于RC振荡器的UART波特率自适应方法所具有的有益效果。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种基于RC振荡器的UART波特率自适应方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于RC振荡器的UART波特率自适应方法,其特征在于,应用于设置有UART的串口通信芯片,所述串口通信芯片的时钟信号由RC振荡器所触发;包括:
约定所述UART以7D为数据帧帧头与数据发送方进行通信,并对所述UART的数据接收信号线进行监听;
当检测到第一触发沿时,则控制所述UART开始接收数据帧,并将所述第一触发沿所对应的时刻标记为第一时刻;
当检测到第二触发沿时,则获取当前时刻与所述第一时刻的第一时间差,并当检测到第三触发沿时,则获取当前时刻与所述第一时刻的第二时间差;
若所述第二时间差为所述第一时间差的4倍,则判定所述UART接收的数据帧正确,并确定所述UART接收所述数据帧的波特率为目标值;其中,所述目标值的表达式为:I=8f/count2;式中,f为所述RC振荡器的振荡频率,count2为所述第二时间差;
利用所述目标值获取所述UART的当前波特率,并根据所述UART的当前波特率确定所述RC振荡器的实际振荡频率;
其中,所述RC振荡器的实际振荡频率的表达式为:
式中,count2为所述第二时间差,BaudRate为所述UART的当前波特率;
判断所述RC振荡器的实际振荡频率是否满足预设条件;
若是,则利用所述RC振荡器的实际振荡频率和所述RC振荡器的理论振荡频率对所述RC振荡器的振荡频率进行校正,得到校正振荡频率;
控制所述UART开始接收下一帧数据,当检测到第四触发沿时,则将所述第四触发沿所对应的时刻标记为第二时刻;
当检测到第五触发沿时,则获取当前时刻与所述第二时刻的第三时间差,并当检测到第六触发沿时,则获取当前时刻与所述第二时刻的第四时间差;
获取所述第四时间差和所述第二时间差之间的目标差值,并获取所述目标差值与所述第二时间差之间的目标比值;
若所述目标比值小于第一预设阈值,则利用所述第四时间差替换所述第二时间差,并利用所述校正振荡频率替换所述RC振荡器的振荡频率,重新计算所述目标值,得到更新目标值;
控制所述UART按照所述更新目标值接收所述下一帧数据。
2.根据权利要求1所述的UART波特率自适应方法,其特征在于,所述第一触发沿具体为第一下降沿。
3.根据权利要求1所述的UART波特率自适应方法,其特征在于,还包括:
若所述目标比值大于第二预设值,则判定所述UART接收所述下一帧数据失败。
4.根据权利要求3所述的UART波特率自适应方法,其特征在于,还包括:
若所述目标比值大于等于所述第一预设值且小于等于所述第二预设值,则控制所述UART按照所述目标值接收所述下一帧数据。
5.根据权利要求1所述的UART波特率自适应方法,其特征在于,所述利用所述RC振荡器的实际振荡频率和所述RC振荡器的理论振荡频率对所述RC振荡器的振荡频率进行校正,得到校正振荡频率的过程,包括:
利用所述RC振荡器的实际振荡频率和所述RC振荡器的理论振荡频率确定所述RC振荡器的频率偏差值;
利用所述RC振荡器的频率偏差值对所述RC振荡器的振荡频率进行校正,得到所述校正振荡频率。
6.根据权利要求1所述的UART波特率自适应方法,其特征在于,还包括:
若所述第四时间差不等于所述第三时间差的4倍,则控制所述UART将所述下一帧数据丢弃。
7.根据权利要求1至6任一项所述的UART波特率自适应方法,其特征在于,所述第一预设值具体为1/64。
8.一种基于RC振荡器的UART波特率自适应装置,其特征在于,应用于设置有UART的串口通信芯片,所述串口通信芯片的时钟信号由RC振荡器所触发;包括:
信号监听模块,用于约定所述UART以7D为数据帧帧头与数据发送方进行通信,并对所述UART的数据接收信号线进行监听;
第一时刻标记模块,用于当检测到第一触发沿时,则控制所述UART开始接收数据帧,并将所述第一触发沿所对应的时刻标记为第一时刻;
第一差值获取模块,用于当检测到第二触发沿时,则获取当前时刻与所述第一时刻的第一时间差,并当检测到第三触发沿时,则获取当前时刻与所述第一时刻的第二时间差;
波特率判定模块,用于若所述第二时间差为所述第一时间差的4倍,则判定所述UART接收的数据帧正确,并确定所述UART接收所述数据帧的波特率为目标值;其中,所述目标值的表达式为:I=8f/count2;式中,f为所述RC振荡器的振荡频率,count2为所述第二时间差;
频率确定模块,用于利用所述目标值获取所述UART的当前波特率,并根据所述UART的当前波特率确定所述RC振荡器的实际振荡频率;
其中,所述RC振荡器的实际振荡频率的表达式为:
式中,count2为所述第二时间差,BaudRate为所述UART的当前波特率;
条件判断模块,用于判断所述RC振荡器的实际振荡频率是否满足预设条件;
频率校正模块,用于当所述条件判断模块的判断结果为是时,则利用所述RC振荡器的实际振荡频率和所述RC振荡器的理论振荡频率对所述RC振荡器的振荡频率进行校正,得到校正振荡频率;
第二时刻标记模块,用于控制所述UART开始接收下一帧数据,当检测到第四触发沿时,则将所述第四触发沿所对应的时刻标记为第二时刻;
第二差值获取模块,用于当检测到第五触发沿时,则获取当前时刻与所述第二时刻的第三时间差,并当检测到第六触发沿时,则获取当前时刻与所述第二时刻的第四时间差;
比值获取模块,用于获取所述第四时间差和所述第二时间差之间的目标差值,并获取所述目标差值与所述第二时间差之间的目标比值;
频率计算模块,用于若所述目标比值小于第一预设阈值,则利用所述第四时间差替换所述第二时间差,并利用所述校正振荡频率替换所述RC振荡器的振荡频率,重新计算所述目标值,得到更新目标值;
数据接收模块,用于控制所述UART按照所述更新目标值接收所述下一帧数据。
9.一种基于RC振荡器的UART波特率自适应设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的一种基于RC振荡器的UART波特率自适应方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的一种基于RC振荡器的UART波特率自适应方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010886260.9A CN112039635B (zh) | 2020-08-28 | 2020-08-28 | 一种基于rc振荡器的uart波特率自适应方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010886260.9A CN112039635B (zh) | 2020-08-28 | 2020-08-28 | 一种基于rc振荡器的uart波特率自适应方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112039635A CN112039635A (zh) | 2020-12-04 |
CN112039635B true CN112039635B (zh) | 2023-06-20 |
Family
ID=73587621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010886260.9A Active CN112039635B (zh) | 2020-08-28 | 2020-08-28 | 一种基于rc振荡器的uart波特率自适应方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112039635B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032320B (zh) * | 2021-04-09 | 2022-10-18 | 山东大学 | 一种异步串口通信波特率自适应方法 |
CN116016019A (zh) * | 2022-12-19 | 2023-04-25 | 上海爱信诺航芯电子科技有限公司 | 一种免晶振的can设备校准系统及方法 |
CN116541323A (zh) * | 2023-03-24 | 2023-08-04 | 北京华控智加科技有限公司 | 一种串口通信波特率的调整方法、装置及电子设备 |
CN117075752A (zh) * | 2023-08-15 | 2023-11-17 | 杭州凡诺电子有限公司 | 一种数据转换方法、装置及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467477B (zh) * | 2010-11-12 | 2014-10-15 | 施耐德电器工业公司 | 一种波特率自适应的Modbus中继器和波特率自适应系统及方法 |
CN106301685B (zh) * | 2016-08-15 | 2019-06-21 | 中车株洲电力机车研究所有限公司 | 一种异步串行通讯方法及系统 |
CN107508573B (zh) * | 2017-08-11 | 2020-11-10 | 北京瑞华高科技术有限责任公司 | 晶振振荡频率校正方法及装置 |
CN110581814B (zh) * | 2019-09-06 | 2022-03-29 | 惠州志顺电子实业有限公司 | 通信设备波特率调节方法及通信设备 |
CN111585681B (zh) * | 2020-05-08 | 2023-04-14 | 海信容声(广东)冰箱有限公司 | 一种家电设备 |
-
2020
- 2020-08-28 CN CN202010886260.9A patent/CN112039635B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112039635A (zh) | 2020-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112039635B (zh) | 一种基于rc振荡器的uart波特率自适应方法、装置 | |
EP2922261B1 (en) | A method and technical equipment for short range data transmission | |
US10256925B2 (en) | Methods and wireless communication systems for wireless re-calibration of RF components of communication devices | |
CN109075742B (zh) | 波特率校准电路及串口芯片 | |
RU2163051C2 (ru) | Способ управления энергетическим запасом линии связи и система для его осуществления | |
US7398101B2 (en) | Transmitter power level optimization and error correction technique | |
US10274601B2 (en) | Communications system | |
US20090046607A1 (en) | Automatic gain control apparatus and method in wireless telecommunication system based on time division duplex | |
CN107566088B (zh) | 一种波特率的调整方法及充电适配器 | |
US8521097B1 (en) | Method and apparatus for tuning a radio receiver with a radio transmitter | |
US20200076643A1 (en) | Controller area network receiver | |
KR20110096808A (ko) | 데이터 수신율을 개선하기 위한 수신 데이터 보정방법 및 그에 따른 수신 모뎀 회로 | |
JP4642563B2 (ja) | Fsk受信装置 | |
US8249519B2 (en) | Method of determining the instant of consideration of a modification of at least one reception condition for signals in a communication system | |
US20230071506A1 (en) | Method for signal detection, electronic device, and storage medium | |
US9736709B2 (en) | Receiver with frequency deviation detection capability and method therefor | |
US9634804B2 (en) | Method and apparatus for stable signal demodulation in communication system | |
CN111918377A (zh) | 一种蓝牙发射功率自适应的方法及系统 | |
CN116541323A (zh) | 一种串口通信波特率的调整方法、装置及电子设备 | |
CN113098809B (zh) | 一种软件自适应解码方法、装置及无线充电系统 | |
CN110022601A (zh) | 一种信号功率的控制方法、装置、存储介质及设备 | |
US9526079B1 (en) | Sensing apparatus, time alignment apparatus, time processing method, and time alignment method | |
TW202022627A (zh) | 通用序列匯流排裝置及其操作方法 | |
JP4288427B2 (ja) | 携帯無線端末、afc制御方法及びafc制御プログラム | |
TWI677198B (zh) | 可依據信號干擾比決定是否捨棄同相/正交相不匹配補償參數的接收電路 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |