一种实时时钟的处理系统及方法与流程

文档序号:11514481阅读:250来源:国知局
一种实时时钟的处理系统及方法与流程

本发明涉及单片机技术领域,尤其涉及一种实时时钟的处理系统及方法。



背景技术:

时钟电路就是产生像时钟一样准确运动的振荡电路。任何工作都按时间顺序,用于产生这个时钟的电路就是时钟电路。实时时钟(realtimeclock,rtc)作为系统同步或时间标志已被广泛应用于各种电子产品。在微控制单元(microcontrollerunit,mcu)系统中经常需要用到rtc,用于满足在一定工作条件下,实现精确计时的需求,同时,使用电池供电的设备,还需要尽可能降低系统的功耗。

rtc的计时时钟有两种来源,一种是外部32k时钟作为时钟源输入,另一种是采用内部rc振荡器产生rtc,分别应用于不同的场景。通常,外部时钟可以实现较高的精度,但需要专用的时钟,增加了系统和芯片的复杂度,并降低了可靠性。而采用通用的内部rc振荡器虽简化了系统,便于实现低功耗控制,但其精度较差,无法实现对内部rc振荡器的自动硬件校正。



技术实现要素:

本发明的目的在于克服现有技术的不足,本发明提供了一种实时时钟的处理系统及方法,可以对内部rc振荡器进行自动硬件校正,提供低功耗的高精度实时时钟,降低了硬件成本。

为了解决上述问题,本发明提出了一种实时时钟的处理系统,所述处理系统包括:

外部时钟产生模块,用于产生外部时钟,作为校准的参考源时钟;

rc振荡器,用于产生实时时钟;

外部时钟计数器,用于根据外部时钟产生模块产生的外部时钟进行计数;

内部时钟计数器,用于根据rc振荡器产生的实时时钟进行计数;

时钟比较器,用于当外部时钟计数器停止计数时,将所得外部时钟计数值与目标值寄存器存储的期望值进行比较,获得比较结果;

内部校准寄存器,用于根据时钟比较器获得的比较结果对内部时钟计数器进行校正;

目标值寄存器,用于存储实时时钟的期望值。

优选地,所述处理系统还包括:rc校准寄存器,用于控制rc振荡器的时钟输出档位,并根据时钟比较器获得的比较结果进行更新。

优选地,所述处理系统还包括:休眠控制寄存器,用于停止或启动外部时钟产生模块产生外部时钟。

优选地,所述时钟比较器还用于将所得外部时钟计数值与目标值寄存器存储的期望值进行比较,计算实际时间间隔和期望值之间的偏差,并将该偏差发送给内部校准寄存器和rc校准寄存器。

优选地,所述内部校准寄存器还用于根据时钟比较器获得的实际时间间隔和期望值之间的偏差对内部时钟计数器进行校正。

优选地,所述rc校准寄存器还用于根据时钟比较器获得的实际时间间隔和期望值之间的偏差进行更新。

相应地,本发明还提供一种实时时钟的处理方法,所述方法包括:

产生外部时钟,作为校准的参考源时钟;

根据产生的外部时钟进行计数;

当停止计数时,将所得外部时钟计数值与期望值进行比较,获得比较结果;

根据比较结果对内部时钟计数器进行校正。

优选地,所述将所得外部时钟计数值与期望值进行比较,获得比较结果的步骤,包括:

将所得外部时钟计数值与目标值寄存器存储的期望值进行比较;

计算实际时间间隔和期望值之间的偏差。

优选地,所述根据比较结果对内部时钟计数器进行校正的步骤,包括:

根据实际时间间隔和期望值之间的偏差对内部时钟计数器进行校正。

优选地,所述方法还包括:根据比较结果对rc校准寄存器进行更新。

在本发明实施例中,通过mcu系统中的外部高频率高精度时钟(非专用32k时钟)对内部rc振荡器进行自动硬件校正,提供低功耗的高精度实时时钟,降低了硬件成本,提高了实时时钟的精度,降低了系统的功耗。

附图说明

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

图1是本发明实施例的实时时钟的处理系统的结构组成示意图;

图2是本发明实施例的实时时钟的处理方法的流程示意图。

具体实施方式

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

图1是本发明实施例的实时时钟的处理系统的结构组成示意图,如图1所示,该处理系统包括:

外部时钟产生模块1,用于产生外部时钟,作为校准的参考源时钟;

rc振荡器2,用于产生实时时钟;

外部时钟计数器3,用于根据外部时钟产生模块1产生的外部时钟进行计数;

内部时钟计数器4,用于根据rc振荡器2产生的实时时钟进行计数;

时钟比较器5,用于当外部时钟计数器3停止计数时,将所得外部时钟计数值与目标值寄存器7存储的期望值进行比较,获得比较结果;

内部校准寄存器6,用于根据时钟比较器5获得的比较结果对内部时钟计数器4进行校正;

目标值寄存器7,用于存储实时时钟的期望值。

其中,外部时钟计数器3分别与外部时钟产生模块1、内部时钟计数器4、时钟比较器5相连接;时钟比较器5另一端与目标值寄存器7相连接;内部校准寄存器6分别与时钟比较器5、内部时钟计数器4相连接;内部时钟计数器4另一端与rc振荡器2相连接。

如图1所示,该处理系统还包括:rc校准寄存器8,用于控制rc振荡器2的时钟输出档位,并根据时钟比较器5获得的比较结果进行更新。

还包括:休眠控制寄存器9,用于停止或启动外部时钟产生模块1产生外部时钟。当不需要校准的时候,将外部时钟关闭,可以降低系统功耗。

具体实施中,rc振荡器2产生持续的32khz的实时时钟,作为实时时钟的工作时钟,rc振荡器可以选择不同的时钟输出档位,提供不同频率的时钟输出,设中心频率为32768hz,在工作条件(温度、电压等)变化导致输出频率变化时,可以通过调整时钟输出档位,将rc振荡器的输出频率校准到32768hz附近,校准的范围在25%以内,校准的精度达到500ppm。

进一步地,外部时钟计数器3的启动和停止由内部时钟计数器4决定。

内部时钟计数器4根据rc振荡器2产生的实时时钟进行计数时,在内部校准寄存器6的控制下,周期性发出脉冲信号(周期为tori),根据脉冲信号控制外部时钟计数器3的启动和停止。

目标值寄存器7用于存储实时时钟的期望值,由mcu设置,根据已知外部时钟的频率f,设置期望值为texp*f。

具体地,内部校准寄存器6用于调整内部时钟计数器4的计数上限,由于rc振荡器的精度较低,经过rc校准寄存器8校准后的实际输出频率仍偏离32768hz,通过改变内部时钟计数器4的计数上限,可以根据时钟比较器5获得的比较结果对内部时钟计数器4进行校正,使内部时钟计数器4能够更加精准地输出固定周期的脉冲,校准的精度能够达到30ppm,校准的范围可以达到1000ppm。

在本发明实施例中,时钟比较器5还用于将所得外部时钟计数值与目标值寄存器7存储的期望值进行比较,计算实际时间间隔和期望值之间的偏差,并将该偏差发送给内部校准寄存器6和rc校准寄存器8。

内部校准寄存器6还用于根据时钟比较器5获得的实际时间间隔和期望值之间的偏差对内部时钟计数器4进行校正。

rc校准寄存器8还用于根据时钟比较器5获得的实际时间间隔和期望值之间的偏差进行更新。

在本发明实施例中,校准的模式有两种:

一种是持续校准,这种情况下可以持续监控rc振荡器的输出频率,达到最高的校准精度,但是功耗较高。

另一种是定时校准,在实际的工作过程中,如果外部工作环境变化并不剧烈,rc振荡器的输出频率的变化也会很缓慢,每隔一个固定的时间启动校准一次,也能得到足够的精度,但功耗可以显著的降低。

两种模式下,进入校准过程后的工作流程都一样,过程包括:

内部时钟计数器4发出启动信号,开始第一轮校准(粗调);

外部时钟计数器3开始计数;

内部时钟计数器4计数到内部校准寄存器6对应的计数上限之后,内部时钟计数器4发出停止信号;

将外部时钟计数器3的计数值与目标值寄存器7进行对比;

根据对比的结果计算出实际时间间隔和期望值之间的偏差,并根据这个偏差更新rc校准寄存器8,完成第一轮校准。可以将误差校准到500ppm以内。

内部时钟计数器4发出第二轮校准的启动信号(细调);

外部时钟计数器3计数;

内部时钟计数器4计数到内部校准寄存器6对应的计数上限后,内部时钟计数器4发出停止信号;

将外部时钟计数器3的计数值与目标值寄存器7进行对比,通过计算实际时间间隔和期望值之间的偏差更新内部校准寄存器6,并记录下这个偏差;

再重复一遍细调的过程,比较两次的偏差,选取偏差较小的结果作为最终校准的结果。

最终,通过这两轮的校准,实现30ppm以下的高精度实时时钟。

相应地,本发明实施例还提供一种实时时钟的处理方法,如图2所示,该方法包括:

s1,产生外部时钟,作为校准的参考源时钟;

s2,根据产生的外部时钟进行计数;

s3,当停止计数时,将所得外部时钟计数值与期望值进行比较,获得比较结果;

s4,根据比较结果对内部时钟计数器进行校正。

进一步地,s3包括:

将所得外部时钟计数值与目标值寄存器存储的期望值进行比较;

计算实际时间间隔和期望值之间的偏差。

根据实际时间间隔和期望值之间的偏差对内部时钟计数器进行校正、对rc校准寄存器进行更新。

该方法还包括:停止或启动外部时钟的产生。当不需要校准的时候,将外部时钟关闭,可以降低系统功耗。

具体实施中,rc振荡器产生持续的32khz的实时时钟,作为实时时钟的工作时钟,rc振荡器可以选择不同的时钟输出档位,提供不同频率的时钟输出,设中心频率为32768hz,在工作条件(温度、电压等)变化导致输出频率变化时,可以通过调整时钟输出档位,将rc振荡器的输出频率校准到32768hz附近,校准的范围在25%以内,校准的精度达到500ppm。

在s2中,外部时钟计数器的启动和停止由内部时钟计数器决定。

内部时钟计数器根据rc振荡器产生的实时时钟进行计数时,在内部校准寄存器的控制下,周期性发出脉冲信号(周期为tori),根据脉冲信号控制外部时钟计数器的启动和停止。

目标值寄存器存储实时时钟的期望值由mcu设置,根据已知外部时钟的频率f,设置期望值为texp*f。

具体地,内部校准寄存器调整内部时钟计数器的计数上限,由于rc振荡器的精度较低,经过rc校准寄存器校准后的实际输出频率仍偏离32768hz,通过改变内部时钟计数器的计数上限,可以根据时钟比较器获得的比较结果对内部时钟计数器进行校正,使内部时钟计数器能够更加精准地输出固定周期的脉冲,校准的精度能够达到30ppm,校准的范围可以达到1000ppm。

在本发明实施例中,时钟比较器将所得外部时钟计数值与目标值寄存器存储的期望值进行比较,计算实际时间间隔和期望值之间的偏差,并将该偏差发送给内部校准寄存器和rc校准寄存器。

内部校准寄存器根据时钟比较器获得的实际时间间隔和期望值之间的偏差对内部时钟计数器进行校正。

rc校准寄存器根据时钟比较器获得的实际时间间隔和期望值之间的偏差进行更新。

在本发明实施例中,校准的模式有两种:

一种是持续校准,这种情况下可以持续监控rc振荡器的输出频率,达到最高的校准精度,但是功耗较高。

另一种是定时校准,在实际的工作过程中,如果外部工作环境变化并不剧烈,rc振荡器的输出频率的变化也会很缓慢,每隔一个固定的时间启动校准一次,也能得到足够的精度,但功耗可以显著的降低。

两种模式下,进入校准过程后的工作流程都一样,过程包括:

内部时钟计数器发出启动信号,开始第一轮校准(粗调);

外部时钟计数器开始计数;

内部时钟计数器计数到内部校准寄存器对应的计数上限之后,内部时钟计数器发出停止信号;

将外部时钟计数器的计数值与目标值寄存器进行对比;

根据对比的结果计算出实际时间间隔和期望值之间的偏差,并根据这个偏差更新rc校准寄存器,完成第一轮校准。可以将误差校准到500ppm以内。

内部时钟计数器发出第二轮校准的启动信号(细调);

外部时钟计数器计数;

内部时钟计数器计数到内部校准寄存器对应的计数上限后,内部时钟计数器发出停止信号;

将外部时钟计数器的计数值与目标值寄存器进行对比,通过计算实际时间间隔和期望值之间的偏差更新内部校准寄存器,并记录下这个偏差;

再重复一遍细调的过程,比较两次的偏差,选取偏差较小的结果作为最终校准的结果。

最终,通过这两轮的校准,实现30ppm以下的高精度实时时钟。

在本发明实施例中,通过mcu系统中的外部高频率高精度时钟(非专用32k时钟)对内部rc振荡器进行自动硬件校正,提供低功耗的高精度实时时钟,降低了硬件成本,提高了实时时钟的精度,降低了系统的功耗。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。

另外,以上对本发明实施例所提供的实时时钟的处理系统及方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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