一种串口通信波特率自适应方法、系统及设备与流程

文档序号:14714291发布日期:2018-06-16 01:01阅读:319来源:国知局
一种串口通信波特率自适应方法、系统及设备与流程

本发明涉及通信技术领域,更具体地说,涉及一种串口通信波特率自适应方法、系统及设备和一种计算机可读存储介质。



背景技术:

串口通信因为成本低、易于实现,是目前嵌入式系统中常用的一种通信模式。在串口通信中,“波特率”是用来描述通信速度的单位。在通信中,只有通信双方的波特率相同才能确保通信的正常进行,这为串口通信设备的使用带来了不便,尤其是当对一方对另一方波特率未知的时候。如果能实现串口通信波特率的自适应,无疑会提高串口通信设备使用的灵活性和通用性。

目前波特率自适应常用的两种方式是:标准波特率穷举法和码元宽度实时检测法。波特率穷举法要求通信设备波特率只能在有限的固定值之间变化,串行设备启动后,逐个尝试以不同的波特率接收数据终端发出的特征字符,直到能正确接收为止。这种办法效率很低,对于实时通信要求高的地方,无法确保通信的及时性。

码元宽度实时检测法要求数据终端按照约定发送特征字符,串行设备测量输入数据的码元宽度,而后计算出待测的波特率。该方法目前应用比较广泛。但如果因为外部电路造成了波形的畸变,则计算出的波特率就会有较大的误差,影响通信的成功率。

同时,以上两种自适应方法都是基于系统工作在一个稳定的时钟源上,但是目前很多MCU(英文全称:Micro Control Unit,中文全称:微控制单元)为了节省成本,都相继采用无晶振设计,通过内部的HRC(时钟源)作为系统的时钟源,内部HRC会随着温度有大约±5%的频率变化,而这个变化会影响波特率的正确性。

因此,如何在内部时钟源不稳定的情况下,确保串口通信的实时性和抗干扰性是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种串口通信波特率自适应方法、系统及设备和一种计算机可读存储介质,在内部时钟源不稳定的情况下,确保串口通信的实时性和抗干扰性。

为实现上述目的,本发明实施例提供了一种串口通信波特率自适应方法,包括:

S101:判断所述串口的通信模块是否处于自适应状态;若是,则进入S102;若否,则进入S103;

S102:通过预设字节计算所述通信模块的波特率;

S103:判断所述通信模块以所述波特率通信是否正确;若是,则进入S104;若否,则进入S102;

S104:通过所述预设字节测量所述串口内部的当前HRC值;

S105:判断当前HRC值与上一时刻的HRC值的差值是否小于预设值;若是,则将当前HRC值作为上一时刻的HRC值。

其中,判断所述串口的通信模块是否处于自适应状态包括:

判断所述串口是否进行复位操作,判断所述通信模块以当前波特率通信是否错误;

若均是,则所述串口的通信模块处于自适应状态。

其中,所述S102包括:

通过所述0x7D字节计算所述通信模块的通信波形两个下降沿之间的第一采集点数。

其中,所述S105之前,还包括:

判断是否存在上一时刻的HRC值,若是,则执行所述S105的步骤。

其中,所述S104包括:

通过0x7D字节计算所述通信波形的通信波形8bit下降沿的第二采集点数。

其中,若存在所述上一时刻的HRC值,则所述S105包括:

判断当前时刻的第二采集点数与上一时刻的第二采集点数的差值是否小于当前时刻的第二采集点数的5%;若是,则将当前时刻的第二采集点数作为上一时刻的第二采集点数。

其中,若不存在上一时刻的HRC值,则通过0x7D字节计算所述通信波形的通信波形8bit下降沿的第二采集点数之后,还包括:

计算所述第一采集点数与所述第二采集点数的比例关系;

判断所述比例关系是否为4:1;

若是,将所述第二采集点数作为上一时刻的第二采集点数。

为实现上述目的,本发明实施例提供了一种串口通信波特率自适应系统,包括:

第一判断模块,用于判断所述串口的通信模块是否处于自适应状态;若是,则启动计算模块的工作流程;若否,则启动第二判断模块的工作流程;

所述计算模块,用于通过预设字节计算所述通信模块的波特率;

所述第二判断模块,用于判断所述通信模块以所述波特率通信是否正确;若是,则启动测量模块的工作流程;若否,则启动计算模块的工作流程;

所述测量模块,用于通过所述预设字节测量所述串口内部的当前HRC值;

调整模块,用于判断当前HRC值与上一时刻的HRC值的差值是否小于预设值;若是,则将当前HRC值作为上一时刻的HRC值。

为实现上述目的,本发明实施例提供了一种串口通信波特率自适应设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述串口通信波特率自适应方法的步骤。

为实现上述目的,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述串口通信波特率自适应方法。

通过以上方案可知,本发明实施例提供的一种串口通信波特率自适应方法包括:S101:判断所述串口的通信模块是否处于自适应状态;若是,则进入S102;若否,则进入S103;S102:通过预设字节计算所述通信模块的波特率;S103:判断所述通信模块以所述波特率通信是否正确;若是,则进入S104;若否,则进入S102;S104:通过所述预设字节测量所述串口内部的当前HRC值;S105:判断当前HRC值与上一时刻的HRC值的差值是否小于预设值;若是,则将当前HRC值作为上一时刻的HRC值。

本发明实施例提供的串口通信波特率自适应方法,采用了波特率微调技术,适用于不是采用稳定的时钟源作为系统时钟的场合,通过精确的测量HRC的变化,来对波特率进行微调。由此可见,本发明实施例提供的串口通信波特率自适应方法在内部时钟源不稳定的情况下,确保串口通信的实时性和抗干扰性。本发明还公开了一种串口通信波特率自适应系统及设备和一种计算机可读存储介质,同样能实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种串口通信波特率自适应方法的流程图;

图2为本发明实施例公开的另一种串口通信波特率自适应方法的流程图;

图3为本发明实施例公开的波特率与HRC值的计算示意图;

图4为本发明实施例公开的一种串口通信波特率自适应系统的结构图;

图5为本发明实施例公开的一种串口通信波特率自适应设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种串口通信波特率自适应方法,在内部时钟源不稳定的情况下,确保串口通信的实时性和抗干扰性。

参见图1,本发明实施例公开的一种串口通信波特率自适应方法的流程图,如图1所示,包括:

S101:判断所述串口的通信模块是否处于自适应状态;若是,则进入S102;若否,则进入S103;

在具体实施中,当串口进行复位操作或通信模块以当前波特率通信发生错误时,通信模块处于自适应状态。当然,本领域技术人员也可以根据实情况,当其他事件触发时,通信模块处于自适应状态,在此不作具体限定。当串口的通信模块处于自适应状态时,进入S102,否则进入S103。

S102:通过预设字节计算所述通信模块的波特率;

在具体实施中,可以通过通信规约的第一个特殊字节0x7D来计算波特率,计算出通信模块的当前波特率后存储该波特率,串口在接下来就会以这个波特率进行通信,直至发生通信错误即通信模块处于自适应状态,清除当前波特率和当前HRC值,重新进入S102。

需要说明的是,本实施例不对预设字节进行具体限定,该预设字节可以是上述0x7D字节,当然也可以是具有类似功能的其他字节,本领域技术人员可以根据实际情况灵活选择。

S103:判断所述通信模块以所述波特率通信是否正确;若是,则进入S104;若否,则进入S102;

S104:通过所述预设字节测量所述串口内部的当前HRC值;

在具体实施中,在通信正确的前提下,通过上述预设字节测量串口内部的当前HRC值。

S105:判断当前HRC值与上一时刻的HRC值的差值是否小于预设值;若是,则将当前HRC值作为上一时刻的HRC值。

在具体实施中,对比当前HRC值和上一时刻的HRC值,如果二者相差小于预设值,则认为串口内部的HRC的频率随着温度或者别的条件变化发生了时变,需要对波特率进行微调;如果大于预设值,则认为是EMC或者别的干扰造成了HRC值测量错误,将该数据丢弃。需要说明的是,本实施例不对该预设值进行限定,优选为当前HRC值的5%,当然本领域技术人员可以根据实际情况灵活设置。

本发明实施例提供的串口通信波特率自适应方法,采用了波特率微调技术,适用于不是采用稳定的时钟源作为系统时钟的场合,通过精确的测量HRC的变化,来对波特率进行微调。由此可见,本发明实施例提供的串口通信波特率自适应方法在内部时钟源不稳定的情况下,确保串口通信的实时性和抗干扰性。

本发明实施例公开了一种串口通信波特率自适应方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

参见图2,本发明实施例提供的另一种串口通信波特率自适应方法的流程图,如图2所示,包括:

S201:判断所述串口是否进行复位操作,判断所述通信模块以当前波特率通信是否错误;若均是,则进入S202;若否,则进入S203;

S202:通过所述0x7D字节计算所述通信模块的通信波形两个下降沿之间的第一采集点数;

在具体实施中,为了确保在各种环境下都要通信正常,通常会在外围添加很多滤波电路,这些电路会随着工作环境的变化,对通信波形造成不同情况的畸变,如图3所示,如果以T1作为波特率的计算波形,则会产生较大的误差,由于相同的沿畸变的情况基本相同,以T2作为波特率计算波形会比较准确。因此,特殊字符0x7D,能够在起始位和第一bit就产生两次下降沿,既能确保波特率测量的准确性,也能确保通信的实时性。

波特率计算公式如下:

其中,fHRC为实际的内部时钟源HRC的频率,该参数未知;NT2为两个下降沿之间的采样点数,即第一采集点数。从公式可以看出,如果波特率不变的情况下,该值的大小实际上是受fHRC的影响。

则实际应用中波特率公式:

通过测试两个下降沿的点数,这个点数除以2就是系统在当前时钟频率下,每隔多少个时钟数对信号进行采样,这样即使在当前fHRC未知的情况下,也能实现正确的通信。波特率变化,则采样间隔也会变化,从而达到波特率自适应的效果。

S203:判断所述通信模块以所述波特率通信是否正确;若是,则进入S204;若否,则进入S202;

S204:通过0x7D字节计算所述通信波形的通信波形8bit下降沿的第二采集点数;

在具体实施中,串口通信电路是在数据波形的中间点三次采样,按照三中取二的原则来获取数据。因此,即使波形收到干扰产生了一些小毛刺,对通信也不会造成影响。但是,在波特率自适应机制时,该毛刺则有可能造成波特率计算的错误。

但是,如果芯片是以内部的HRC作为时钟源,当外部温度变化时,fHRC会有±5%左右的变化。通过上述实际应用中波特率公式可知,如果fHRC发生了变化,则NT2也会发生偏差,但是系统不会经常进行波特率自适应,NT2的值不会随着fHRC的变化而同步变化,因此就需要有一个可靠的方法对NT2进行微调,经过补偿的波特率计算公式如下:

其中,NT3是实时对8bit的下降沿的采集点数,即第二采集点数,该值相对于在波特率自适应是测量到的NT2精度更高;nT2为通过NT3计算出来新的波特率值。

S251:判断是否存在上一时刻的HRC值,若是,则进入S252;若否,则进入S253;

S252:判断当前时刻的第二采集点数与上一时刻的第二采集点数的差值是否小于当前时刻的第二采集点数的5%;若是,则将当前时刻的第二采集点数作为上一时刻的第二采集点数;

S253:计算所述第一采集点数与所述第二采集点数的比例关系;判断所述比例关系是否为4:1;若是,将所述第二采集点数作为上一时刻的第二采集点数。

当存在上一时刻时,对比当前时刻NT3与上一时刻的NT3,如果二者相差小于±5%。则认为是fHRC变化引起的测量值变化,使用上述补偿的波特率计算公式进行调整,否则,则认为是干扰,不做调整。

当第一次记录NT3值时,通过对比NT2和NT3之间的比例关系,如果比例关系为1:4,则认为该数据是正确数据,否则,则认为是干扰数据,不做记录。

通过上述调整方式,既能实时补偿因为内部HRC随温度变化,也能避免在恶劣的EMC情况下,对波特率的错误补偿。

下面对本发明实施例提供的一种串口通信波特率自适应系统进行介绍,下文描述的一种串口通信波特率自适应系统与上文描述的一种串口通信波特率自适应方法可以相互参照。

参见图4,本发明实施例提供的一种串口通信波特率自适应系统的结构图,如图4所示,包括:

第一判断模块401,用于判断所述串口的通信模块是否处于自适应状态;若是,则启动计算模块402的工作流程;若否,则启动第二判断模块303的工作流程;

所述计算模块402,用于通过预设字节计算所述通信模块的波特率;

所述第二判断模块403,用于判断所述通信模块以所述波特率通信是否正确;若是,则启动测量模块的工作流程;若否,则启动计算模块的工作流程;

所述测量模块404,用于通过所述预设字节测量所述串口内部的当前HRC值;

调整模块405,用于判断当前HRC值与上一时刻的HRC值的差值是否小于预设值;若是,则将当前HRC值作为上一时刻的HRC值。

本发明实施例提供的串口通信波特率自适应系统,采用了波特率微调技术,适用于不是采用稳定的时钟源作为系统时钟的场合,通过精确的测量HRC的变化,来对波特率进行微调。由此可见,本发明实施例提供的串口通信波特率自适应方法在内部时钟源不稳定的情况下,确保串口通信的实时性和抗干扰性。

在上述实施例的基础上,作为优选实施方式,所述第一判断模块401具体为判断所述串口是否进行复位操作,判断所述通信模块以当前波特率通信是否错误;若均是,则启动计算模块402的工作流程;否则启动第二判断模块403的工作流程的模块。

在上述实施例的基础上,作为优选实施方式,所述计算模块402具体为通过所述0x7D字节计算所述通信模块的通信波形两个下降沿之间的第一采集点数的模块。

在上述实施例的基础上,作为优选实施方式,还包括:

第三判断模块,用于判断是否存在上一时刻的HRC值,若是,则启动所述调整模块的工作流程。

在上述实施例的基础上,作为优选实施方式,所述测量模块404具体为通过0x7D字节计算所述通信波形的通信波形8bit下降沿的第二采集点数的模块。

在上述实施例的基础上,作为优选实施方式,若存在所述上一时刻的HRC值,则所述调整模块405具体为判断当前时刻的第二采集点数与上一时刻的第二采集点数的差值是否小于当前时刻的第二采集点数的5%;若是,则将当前时刻的第二采集点数作为上一时刻的第二采集点数的模块。

在上述实施例的基础上,作为优选实施方式,若不存在上一时刻的HRC值,则还包括:

比例模块,用于计算所述第一采集点数与所述第二采集点数的比例关系;判断所述比例关系是否为4:1;若是,将所述第二采集点数作为上一时刻的第二采集点数。

本申请还提供了一种串口通信波特率自适应设备,参见图5,本发明实施例提供的一种串口通信波特率自适应设备的结构图,如图5所示,包括:

存储器501,用于存储计算机程序;

处理器502,用于执行所述就是计算机程序时可以实现上述实施例所提供的步骤。当然所述串口通信波特率自适应设备还可以包括各种网络接口,电源等组件。

本发明实施例提供的串口通信波特率自适应设备,采用了波特率微调技术,适用于不是采用稳定的时钟源作为系统时钟的场合,通过精确的测量HRC的变化,来对波特率进行微调。由此可见,本发明实施例提供的串口通信波特率自适应方法在内部时钟源不稳定的情况下,确保串口通信的实时性和抗干扰性。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1