一种实现低功耗串口模块动态分频方法与流程

文档序号:19064957发布日期:2019-11-06 02:14阅读:447来源:国知局
一种实现低功耗串口模块动态分频方法与流程

本发明涉及电子技术领域,尤其涉及一种实现低功耗串口模块动态分频方法。



背景技术:

随着便携性电子产品的发展,超低功耗mcu在电子产品中起到的作用正在变得越来越大。当前主流的超低功耗mcu中,低功耗串口(lpuart)模块已经成为了一个不可缺少的模块。lpuart可以在mcu系统中,只有频率为10khz~40khz的时钟工作的情况下,提供波特率最高为9600的串口协议通信。lpuart还可以使得处于低功耗模式下的mcu被lpuart的通信唤醒。当前主流的lpuart的设计方案中,往往选用频率为波特率9600的整数倍的时钟作为lpuart模块的工作时钟,以达到精确支持9600波特率串口通信的目的。

现有技术由于仅仅使用波特率9600的整数倍频率的时钟作为lpuart的工作时钟,导致mcu系统在时钟源选择上受到了限制。并且,频率为32.768khz的时钟作为一个标准的时钟源,因为其频率并非为9600的整数倍(32768/9600=3.413333),在现有lpuart的设计方法中,无法为lpuart提供工作时钟,无法满足lpuart对通信的要求。



技术实现要素:

本发明实施例的目的是提供一种实现低功耗串口模块动态分频方法,能够交替使用lpuart工作时钟的三分频和四分频,使得lpuart无论工作在28.8khz~38.4khz之间的任何频率下,均能较好的支持波特率为9600的串口协议通信。

为实现上述目的,本发明实施例提供了一种实现低功耗串口模块动态分频方法,包括以下步骤:

获取计数器完成计数处理生成的第一数值,并将所述第一数值作为第一输入值;

获取预先配置好的调节寄存器生成的第二数值,并将所述第二数值作为第二输入值;

根据当前uart接口的比特数据位于uart帧中的位置,比较所述第一输入值和所述第二输入值,并挑选出最终数值发送至所述计数器,以动态调节所述计数器的最大计数值;

当所述计数器在计数达到所述最终数值时,产生脉冲信号控制相应的寄存器执行相应的任务。

进一步的,所述当所述计数器在计数达到所述最终数值时,产生脉冲信号控制相应的寄存器执行相应的任务,具体为:

当低功耗串口模块在发送数据时,所述计数器达到最大计数值后,产生第一脉冲信号,控制发送移位寄存器将要发送的数据移位到uart端口的tx数据端;

当低功耗串口模块在接收数据时,所述计数器达到最大计数值后,产生第二脉冲信号,控制接收移位寄存器将uart端口的rx数据端信号进行移位,以切换接收数据。

进一步的,所述第二数值为通过cpu或dma进行配置的调节寄存器生成的数值,以通过所述第二数值控制所述计数器的最大计数值为3或者4。

进一步的,当所述计数器达到最大计数值后,自动将数值重置归零。

进一步的,所述第一数值为所述计数器对其获取的uart帧进行计数处理所得。

进一步的,所述计数器使用的工作时钟为计数时钟。

进一步的,所述计数时钟用于,对uart帧中每个比特的长度进行计数。

实施本发明实施例,具有如下有益效果:

本发明提供一种实现低功耗串口模块动态分频方法,包括获取计数器完成计数处理生成的第一数值,并将第一数值作为第一输入值;获取预先配置好的调节寄存器生成的第二数值,并将第二数值作为第二输入值;根据当前uart接口的比特数据位于uart帧中的位置,比较第一输入值和第二输入值,并挑选出最终数值发送至计数器,以动态调节所述计数器的最大计数值;当计数器在计数达到最终数值时,产生脉冲信号控制相应的寄存器执行相应的任务,能够动态调节计数器的最大计数值,交替使用lpuart工作时钟的三分频和四分频,使得lpuart无论工作在28.8khz~38.4khz之间的任何频率下,均能较好的支持波特率为9600的串口协议通信。

附图说明

图1是本发明提供的实现低功耗串口模块动态分频方法的一种实施例的流程示意图;

图2是本发明提供的实现低功耗串口模块动态分频方法的一种实施例的电路结构示意图。

具体实施方式

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

请参见图1,图1是本发明提供的实现低功耗串口模块动态分频方法的一种实施例的流程示意图。如图1所示,该认证方法包括步骤s1至步骤s4,各步骤具体如下:

s1,获取计数器完成计数处理生成的第一数值,并将所述第一数值作为第一输入值。

在本发明实施例中,所述第一数值为所述计数器对其获取的uart帧进行计数处理所得。

所述计数器使用的工作时钟为计数时钟,所述计数时钟用于对uart帧中每个比特的长度进行计数。

s2,获取预先配置好的调节寄存器生成的第二数值,并将所述第二数值作为第二输入值。

在本发明实施例中,所述第二数值为通过cpu或dma进行配置的调节寄存器生成的数值,以通过所述第二数值控制所述计数器的最大计数值为3或者4。

s3,根据当前uart接口的比特数据位于uart帧中的位置,比较所述第一输入值和所述第二输入值,并挑选出最终数值发送至所述计数器,以动态调节所述计数器的最大计数值。

s4,当所述计数器在计数达到所述最终数值时,产生脉冲信号控制相应的寄存器执行相应的任务。

在本实施例中,步骤s4具体为:当低功耗串口模块在发送数据时,所述计数器达到最大计数值后,产生第一脉冲信号,控制发送移位寄存器将要发送的数据移位到uart端口的tx数据端;

当低功耗串口模块在接收数据时,所述计数器达到最大计数值后,产生第二脉冲信号,控制接收移位寄存器将uart端口的rx数据端信号进行移位,以切换接收数据。

需要说明的是,当所述计数器达到最大计数值后,自动将数值重置归零。

请参见图2,图2是本发明提供的实现低功耗串口模块动态分频方法的一种实施例的电路结构示意图,图2诠释了本发明方法的工作原理:

在本发明中包括有一个计数器,如图2中cnt,此计数器用来计数uart接口传输的每个比特位数的宽度,计数时钟使用的为lpuart的工作时钟(lpuart_clk)。当cnt计数器计数的值满后,即uart_bit_done信号为1后,cnt的值清0后重新开始计数。

进一步的,根据uart接口每个比特数据在uart帧中所处的位置不同,选择cnt的满值为3或者为4,动态的调节cnt计数值满的上限。

在本发明的lpuart发送数据时,根据cnt计数满的状态,即uart_bit_done信号为1,控制lpuart中的发送移位寄存器(txshiftreg)将将要发送的数据移到uart端口的tx数据端(uart_tx)。

在本发明的lpuart接收数据时,根据cnt计数满的状态,即uart_bit_done信号为1,控制lpuart中的接收移位寄存器(rxshiftreg)将uart端口的rx数据端信号(uart_rx)移位到寄存器中。

本发明与现有技术的区别在于,现有技术是使用固定分频的方式,即cnt计数的满值为固定的值(通常cnt计数的满值为2、3、4居多),在这种的设计下,对lpuart模块的工作时钟lpuart_clk的频率是有必须为波特率9600的整数被的要求,而使用本发明的方法,通过动态调节cnt的满值,可以使得介于9600波特率3-4倍的时钟频率都可以作为lpuart的工作时钟,极大的减小了lpuart对时钟频率的要求。

需要说明的是,lpuart模块中的cnt计数满值是可以使用软件通过cpu或者dma进行配置的,即此系统中包含一个可以通过软件配置的调节寄存器,如图2中lpuartconfigreg所示。该寄存器可以通过软件配置,其值用来选择当前cnt计数的uart帧的比特位是选择3为cnt的满值还是使用4为cnt的满值,能够快速方便的交替使用lpuart工作时钟的三分频和四分频,使得lpuart无论工作在28.8khz~38.4khz之间的任何频率下,均能较好的支持波特率为9600的串口协议通信。

由上可见,本发明实施例提供的一种实现低功耗串口模块动态分频方法,包括获取计数器完成计数处理生成的第一数值,并将第一数值作为第一输入值;获取预先配置好的调节寄存器生成的第二数值,并将第二数值作为第二输入值;根据当前uart接口的比特数据位于uart帧中的位置,比较第一输入值和第二输入值,并挑选出最终数值发送至计数器,以动态调节所述计数器的最大计数值;当计数器在计数达到最终数值时,产生脉冲信号控制相应的寄存器执行相应的任务,采用本发明提供的实施例,具有如下有益效果:

(1)根据uart每个比特所处的在uart帧的位置不同,动态调节cnt的满值,使得介于9600波特率3-4倍的时钟频率都可以作为lpuart的工作时钟,极大的减小了lpuart对时钟频率的要求。

(2)通过软件对调节寄存器进行配置,实现当前cnt计数的uart帧的比特位是选择3为cnt的满值还是使用4为cnt的满值,能够快速方便的交替使用lpuart工作时钟的三分频和四分频,使得lpuart无论工作在28.8khz~38.4khz之间的任何频率下,均能较好的支持波特率为9600的串口协议通信。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

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