CN109918337B - 一种应用于单片机系统的时间自动校准方法 - Google Patents
一种应用于单片机系统的时间自动校准方法 Download PDFInfo
- Publication number
- CN109918337B CN109918337B CN201910129696.0A CN201910129696A CN109918337B CN 109918337 B CN109918337 B CN 109918337B CN 201910129696 A CN201910129696 A CN 201910129696A CN 109918337 B CN109918337 B CN 109918337B
- Authority
- CN
- China
- Prior art keywords
- time
- mcu
- current
- value
- lbolt
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明属于单片机应用技术领域,公开了一种应用于单片机系统的时间自动校准方法,包括如下步骤:S1、根据本地辅正值,启动自动校准流程;S2、进行自学习获取MCU时钟偏差,并获取辅正参数;S3、根据辅正参数获取当前MCU时间。本发明解决了现有技术存在的成本投入大、准确度低以及功耗开销和网络开销大的问题。
Description
技术领域
本发明属于单片机应用技术领域,具体涉及一种应用于单片机系统的时间自动校准方法。
背景技术
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
现有技术中基于单片机系统的电子门锁用于获取时间或者记录时间(包括万年历)主要是依靠外部的RTC芯片来维系,部分还是带纽扣电池的RTC芯片,但是这样往往带来的成本的增加,而如果不使用外部RTC芯片来统计时间,采用STM32芯片本身的时钟来计算时间,存在时间统计的累计偏差大的问题,并且因为STM32芯片本身使用的时钟并不是十分精准,而且每个芯片还存在差异性,比如每1000ms真实时间,有的芯片会快100ms,有的芯片会慢60ms不等,这就使得统计的时间偏差会越来越大。
同时,现有技术中联网的门锁会通过网络去同步时间,但是因为上述的原因导致时间偏差越来越大,为了满足时间差在相对较小的范围,而不得不经常与网络同步时间,这虽然解决了时间同步的问题,但是却提高了功耗成本和网络成本。
发明内容
为了解决现有技术存在的上述问题,本发明目的在于提供一种应用于单片机系统的时间自动校准方法,用于解决现有技术存在的成本投入大、准确度低以及功耗成本和网络成本大的问题。
本发明所采用的技术方案为:
一种应用于单片机系统的时间自动校准方法,包括如下步骤:
S1:根据本地辅正值,启动自动校准流程;
S2:进行自学习获取MCU时钟偏差,并获取辅正参数;
S3:根据辅正参数获取当前MCU时间。
进一步地,步骤S1包括如下步骤:
S1-1:开启轮询任务,当到达检查周期Period时间时执行轮询任务;
S1-2:查询本地辅正值,判断辅正值是否有效,若是则将当前Period设置为1天,获取网络时间,并返回步骤S1-1,否则进入步骤S1-3;
S1-3:判断当前尝试获取辅正值的次数是否少于10次,若是则进入步骤S1-4,否则退出当前获取辅正值的行为,将当前Period设置为1天,获取网络时间,并返回步骤S1-1;
S1-4:将当前Period设置为10分钟,启动自动校准流程,并进入步骤S2。
进一步地,步骤S2包括如下步骤:
S2-1:进行采样,判断是否为第一次采样,若是则记录当前真实时间和当前MCU总运行时间,采样次数加一,等待Period时间后重复步骤S2-1,执行下一次采样,否则进入步骤S2-2;
S2-2:判断当前采样次数是否小于6次,若是则记录当前真实时间差和当前MCU时间差,采样次数加一,等待Period时间后返回步骤S2-1,执行下一次采样,否则进入步骤S2-3;
S2-3:分别过滤掉真实时间差和MCU时间差中的最大值和最小值,并分别获取过滤后的真实时间差总和以及MCU时间差总和;
S2-4:判断真实时间差总和是否大于MCU时间差总和,若是则输出MCU时间比真实时间慢,校正方向为正向,获取与记录校正值,并将当前校正方向与当前校正值作为辅正参数,进入步骤S2-7,否则进入步骤S2-5;
S2-5:判断真实时间差总和是否小于MCU时间差总和,若是则输出MCU时间比真实时间快,校正方向为负向,获取与记录校正值,并将当前校正方向与当前校正值作为辅正参数,进入步骤S2-7,否则进入步骤S2-6;
S2-6:输出MCU时间跟真实时间是一致,无需辅正参数,结束校准,并重置采样次数;
S2-7:将辅正参数保存至本地,并重置采样次数,进入步骤S3。
进一步地,步骤S2-1中,记录真实时间,并将其转化为相对于系统预设初始时间设置的相对秒数,并记录当前MCU总运行时间秒数,真实时间的相对秒数与当前MCU总运行时间秒数格式保持一致。
进一步地,步骤S2-3中,获取过滤后的真实时间差总和以及MCU时间差总和的公式为:
式中,MCUSum为MCU时间差总和;RTSum为真实时间差总和;RTDiff 1、RTDiff 2、RTDiff 3分别为过滤掉最大值和最小值的第1、2、3个真实时间差;MCUDiff 1、MCUDiff 2、MCUDiff 3分别为过滤掉最大值和最小值的第1、2、3个MCU时间差。
进一步地,步骤S2-4中,获取校正方向为正向的校正值的公式为:
Value=MCUSum/(RTSum-MCUSum)
式中Value为校正值;MCUSum为MCU时间差总和;RTSum为真实时间差总和;
步骤S2-5中,获取校正方向为负向的校正值的公式为:
Value=MCUSum/(MCUSum-RTSum)
式中,Value为校正值;MCUSum为MCU时间差总和;RTSum为真实时间差总和。
进一步地,步骤S3包括如下步骤:
S3-1:获取辅正参数,判断辅正参数是否有效,若是则根据校正值获取辅正值,并进入步骤S3-2,否则直接输出当前原始MCU时间,并结束校准;
S3-2:根据校正方向、辅正值以及MCU时间参数,获取并输出当前MCU时间;
S3-3:更新MCU时间参数。
进一步地,步骤S3-1中,获取辅正值的公式为:
Deviation=(lbolt_rtc-lbolt_StorRtc)/Value
式中,Deviation为辅正值;Value为校正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间。
进一步地,步骤S3-2中,获取并输出当前MCU时间,包括:
若校正方向是正向,其计算公式为:
gStorTimei+1=gStorTimei+lbolt_rtc-lbolt_StorRtc+Deviation
式中,gStorTimei+1为当前MCU时间;gStorTimei为上一次校准输出的MCU时间;Deviation为辅正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;i为迭代指示量;
若校正方向是负向,其计算公式为:
gStorTimei+1=gStorTimei+lbolt_rtc-lbolt_StorRtc-Deviation
式中,gStorTimei+1为当前MCU时间;gStorTimei为上一次校准输出的MCU时间;Deviation为辅正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;i为迭代指示量。
进一步地,步骤S3-2和S3-3中,MCU时间参数包括当前原始MCU时间和上一次校准的原始MCU时间;
更新MCU时间参数的公式为:
lbolt_StorRtc=lbolt_rtc
式中,lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间。
本发明的有益效果为:
1)本发明基于单片机芯片内部的时钟,使用辅正值获取到当前MCU时间,提高了时间的准确度;
2)本发明无需外部设备,节约了成本投入;
3)本发明能适配不同单片机芯片的特殊情况做自学习校准,无需人工干预,适应性强;
4)本发明除了在获取校准值的时间段内有相对多的网络请求操作,平时可以基本无需耗费网络资源,节省功耗资源和网络资源,减少了对应的开销。
附图说明
图1是应用于单片机系统的时间自动校准方法流程图;
图2是根据本地辅正值启动自动校准流程的方法流程图;
图3是进行自学习获取MCU时钟偏差的方法流程图;
图4是根据辅正参数获取当前MCU时间方法流程图。
具体实施方式
下面结合附图及具体实施例对本发明做进一步阐释。
实施例1:
如图1所示,本实施例提供一种应用于单片机系统的时间自动校准方法,包括如下步骤:
S1:根据本地辅正值,启动自动校准流程,如图2所示,包括如下步骤:
S1-1:开启轮询任务,当到达检查周期Period时间时执行轮询任务;
S1-2:查询本地辅正值,判断辅正值是否有效,若是则将当前Period设置为1天,并返回步骤S1-1,否则进入步骤S1-3;
S1-3:判断当前尝试获取辅正值的次数是否少于10次,若是则进入步骤S1-4,否则退出当前获取辅正值的行为,将当前Period设置为1天,获取网络时间,并返回步骤S1-1;
S1-4:将当前Period设置为10分钟,启动自动校准流程,并进入步骤S2;
S2:进行自学习获取MCU时钟偏差,并获取辅正参数,如图3所示,包括如下步骤:
真实时间的来源是来源于网络下发,此处可以认为忽略掉网络延迟,因为只是计算差值,而MCU时间则是来源于单片机芯片内部时钟,从单片机芯片上电开始归零,然后每1ms会触发一次时钟中断,通过换算可以得出相对时间;
S2-1:进行采样,判断是否为第一次采样,若是则记录当前真实时间,并将其转化为相对于系统预设初始时间设置的相对秒数RTSecond,并记录当前MCU总运行时间秒数MCUSecond,真实时间的相对秒数与当前MCU总运行时间秒数格式保持一致,采样次数加一,等待Period时间(10分钟)后重复步骤S2-1,执行下一次采样,否则进入步骤S2-2;
所述系统预设初始时间为1900年1月1日0时0分0秒;
S2-2:判断当前采样次数是否小于6次,若是则记录当前真实时间差(当前时间转换成秒数后减去前一次采样的时间)和当前MCU时间差(当前时间转换成秒数后减去前一次采样的时间),采样次数加一,等待Period时间后返回步骤S2-1,执行下一次采样,否则进入步骤S2-3;
S2-3:整个过程总共采样6次时间,计算出2组,每组5个相对时间差,分别过滤掉真实时间差和MCU时间差中的最大值和最小值,产生2组,每组3个相对时间差,并分别获取过滤后的真实时间差总和以及MCU时间差总和;
获取过滤后的真实时间差总和以及MCU时间差总和的公式为:
式中,MCUSum为MCU时间差总和;RTSum为真实时间差总和;RTDiff 1、RTDiff 2、RTDiff 3分别为过滤掉最大值和最小值的第1、2、3个真实时间差;MCUDiff 1、MCUDiff 2、MCUDiff 3分别为过滤掉最大值和最小值的第1、2、3个MCU时间差;
S2-4:判断真实时间差总和是否大于MCU时间差总和,若是则输出MCU时间比真实时间慢,校正方向为正向,获取与记录校正值,并将当前校正方向与当前校正值作为辅正参数,进入步骤S2-7,否则进入步骤S2-5;
获取校正方向为正向的校正值的公式为:
Value=MCUSum/(RTSum-MCUSum)
式中Value为校正值;MCUSum为MCU时间差总和;RTSum为真实时间差总和;
S2-5:判断真实时间差总和是否小于MCU时间差总和,若是则输出MCU时间比真实时间快,校正方向为负向,获取与记录校正值,并将当前校正方向与当前校正值作为辅正参数,进入步骤S2-7,否则进入步骤S2-6;
步骤S2-5中,获取校正方向为负向的校正值的公式为:
Value=MCUSum/(MCUSum-RTSum)
式中,Value为校正值;MCUSum为MCU时间差总和;RTSum为真实时间差总和;
S2-6:输出MCU时间跟真实时间是一致,无需辅正参数,结束校准,并重置采样次数;
S2-7:将辅正参数保存至本地,并重置采样次数,进入步骤S3;
S3:根据辅正参数获取当前MCU时间,如图4所示,包括如下步骤:
总体思路是先获取当前原始MCU时间lbolt_rtc,然后与上一次输出的MCU时间lbolt_StorRtc做相减,然后利用校正值Value计算出与真实时间究竟偏差了多少秒,即为辅正值Deviation,再结合校正方向,就可以知道这个偏移值是快了还是慢了然会响应地做加法或者减法后就能获取到相对较为准确的时间差值lbolt_rtc-lbolt_StorRtc-Deviation,然后使用时间差值加上上一次记录的输出值gStorTimei就能得出当前MCU真实时间gStorTimei+1;
S3-1:获取辅正参数,判断辅正参数是否有效,若是则根据校正值获取辅正值,并进入步骤S3-2,否则当前MCU还没有完成校正获取流程或者不需要辅正,直接输出当前原始MCU时间,并结束校准;
获取辅正值的公式为:
Deviation=(lbolt_rtc-lbolt_StorRtc)/Value
式中,Deviation为辅正值;Value为校正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;
S3-2:根据校正方向、辅正值以及MCU时间参数,获取当前MCU时间,并将其使用万年历算法转换成年月日时分秒格式的时间进行输出;
获取并输出当前MCU时间,包括:
若校正方向是正向,表明MCU时间比真实时间要慢,所以在获取时间的时候需要往时间差中加上辅正值Deviation,其计算公式为:
gStorTimei+1=gStorTimei+lbolt_rtc-lbolt_StorRtc+Deviation
式中,gStorTimei+1为当前MCU时间;gStorTimei为上一次校准输出的MCU时间;Deviation为辅正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;i为迭代指示量;
若校正方向是负向,表明MCU时间比真实时间要快,所以在获取时间的时候需要往时间差中减去辅正值Deviation,其计算公式为:
gStorTimei+1=gStorTimei+lbolt_rtc-lbolt_StorRtc-Deviation
式中,gStorTimei+1为当前MCU时间;gStorTimei为上一次校准输出的MCU时间;Deviation为辅正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;i为迭代指示量;
S3-3:更新MCU时间参数,MCU时间参数包括当前原始MCU时间和上一次校准的原始MCU时间,保存当前原始MCU时间为上一次MCU原始时间用于下一次查询的一个变量依据;
更新MCU时间参数的公式为:
lbolt_StorRtc=lbolt_rtc
式中,lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间。
实施例2:
如图1所示,本实施例提供一种应用于单片机系统的时间自动校准方法,包括如下步骤:
S1:根据本地辅正值,启动自动校准流程,如图2所示,包括如下步骤:
S1-1:开启轮询任务,当到达检查周期Period时间时执行轮询任务;
S1-2:查询本地辅正值,判断辅正值是否有效,若是则将当前Period设置为1天,获取网络时间,并返回步骤S1-1,否则进入步骤S1-3;
S1-3:判断当前尝试获取辅正值的次数是否少于10次,若是则进入步骤S1-4,否则退出当前获取辅正值的行为,将当前Period设置为1天,获取网络时间,并返回步骤S1-1;
S1-4:将当前Period设置为10分钟,启动自动校准流程,并进入步骤S2;
S2:进行自学习获取MCU时钟偏差,并获取辅正参数,如图3所示,包括如下步骤:
真实时间的来源是来源于网络下发,此处可以认为忽略掉网络延迟,因为只是计算差值,而MCU时间则是来源于单片机芯片内部时钟,从单片机芯片上电开始归零,然后每1ms会触发一次时钟中断,通过换算可以得出相对时间;
S2-1:进行采样,判断是否为第一次采样,若是则记录当前真实时间以及当前MCU总运行时间,采样次数加一,等待Period时间(10分钟)后重复步骤S2-1,执行下一次采样,否则进入步骤S2-2;
S2-2:判断当前采样次数是否小于6次,若是则记录当前真实时间差(当前时间转换成秒数后减去前一次采样的时间)和当前MCU时间差(当前时间转换成秒数后减去前一次采样的时间),采样次数加一,等待Period时间后返回步骤S2-1,执行下一次采样,否则进入步骤S2-3;
S2-3:整个过程总共采样6次时间,计算出2组,每组5个相对时间差,分别过滤掉真实时间差和MCU时间差中的最大值和最小值,产生2组,每组3个相对时间差,并分别获取过滤后的真实时间差总和以及MCU时间差总和;
获取过滤后的真实时间差总和以及MCU时间差总和的公式为:
式中,MCUSum为MCU时间差总和;RTSum为真实时间差总和;RTDiff 1、RTDiff 2、RTDiff 3分别为过滤掉最大值和最小值的第1、2、3个真实时间差;MCUDiff 1、MCUDiff 2、MCUDiff 3分别为过滤掉最大值和最小值的第1、2、3个MCU时间差;
S2-4:判断真实时间差总和是否大于MCU时间差总和,若是则输出MCU时间比真实时间慢,校正方向为正向,获取与记录校正值,并将当前校正方向与当前校正值作为辅正参数,进入步骤S2-7,否则进入步骤S2-5;
获取校正方向为正向的校正值的公式为:
Value=MCUSum/(RTSum-MCUSum)
式中Value为校正值;MCUSum为MCU时间差总和;RTSum为真实时间差总和;
S2-5:判断真实时间差总和是否小于MCU时间差总和,若是则输出MCU时间比真实时间快,校正方向为负向,获取与记录校正值,并将当前校正方向与当前校正值作为辅正参数,进入步骤S2-7,否则进入步骤S2-6;
步骤S2-5中,获取校正方向为负向的校正值的公式为:
Value=MCUSum/(MCUSum-RTSum)
式中,Value为校正值;MCUSum为MCU时间差总和;RTSum为真实时间差总和;
S2-6:输出MCU时间跟真实时间是一致,无需辅正参数,结束校准,并重置采样次数;
S2-7:将辅正参数保存至本地,并重置采样次数,进入步骤S3;
S3:根据辅正参数获取当前MCU时间,如图4所示,包括如下步骤:
总体思路是先获取当前原始MCU时间lbolt_rtc,然后与上一次输出的MCU时间lbolt_StorRtc做相减,然后利用校正值Value计算出与真实时间究竟偏差了多少秒,即为辅正值Deviation,再结合校正方向,就可以知道这个偏移值是快了还是慢了然会响应地做加法或者减法后就能获取到相对较为准确的时间差值lbolt_rtc-lbolt_StorRtc-Deviation,然后使用时间差值加上上一次记录的输出值gStorTimei就能得出当前MCU真实时间gStorTimei+1;
S3-1:获取辅正参数,判断辅正参数是否有效,若是则根据校正值获取辅正值,并进入步骤S3-2,否则当前MCU还没有完成校正获取流程或者不需要辅正,直接输出当前原始MCU时间,并结束校准;
获取辅正值的公式为:
Deviation=(lbolt_rtc-lbolt_StorRtc)/Value
式中,Deviation为辅正值;Value为校正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;
S3-2:根据校正方向、辅正值以及MCU时间参数,获取并输出当前MCU时间;
获取并输出当前MCU时间,包括:
若校正方向是正向,表明MCU时间比真实时间要慢,所以在获取时间的时候需要往时间差中加上辅正值Deviation,其计算公式为:
gStorTimei+1=gStorTimei+lbolt_rtc-lbolt_StorRtc+Deviation
式中,gStorTimei+1为当前MCU时间;gStorTimei为上一次校准输出的MCU时间;Deviation为辅正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;i为迭代指示量;
若校正方向是负向,表明MCU时间比真实时间要快,所以在获取时间的时候需要往时间差中减去辅正值Deviation,其计算公式为:
gStorTimei+1=gStorTimei+lbolt_rtc-lbolt_StorRtc-Deviation
式中,gStorTimei+1为当前MCU时间;gStorTimei为上一次校准输出的MCU时间;Deviation为辅正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;i为迭代指示量;
S3-3:更新MCU时间参数,MCU时间参数包括当前原始MCU时间和上一次校准的原始MCU时间,保存当前原始MCU时间为上一次MCU原始时间用于下一次查询的一个变量依据;
更新MCU时间参数的公式为:
lbolt_StorRtc=lbolt_rtc
式中,lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间。
本发明目的在于提供一种成本投入小、准确度高以及功耗开销和网络开销小的应用于单片机系统的时间自动校准方法,解决了现有技术存在的成本投入大、准确度低以及功耗开销和网络开销大的问题。
本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。
Claims (6)
1.一种应用于单片机系统的时间自动校准方法,其特征在于:包括如下步骤:
S1:根据本地辅正值,启动自动校准流程;
S2:进行自学习获取MCU时钟偏差,并获取辅正参数;
S3:根据辅正参数获取当前MCU时间;
所述步骤S2包括如下步骤:
S2-1:进行采样,判断是否为第一次采样,若是则记录当前真实时间和当前MCU总运行时间,采样次数加一,等待Period时间后重复步骤S2-1,执行下一次采样,否则进入步骤S2-2;
S2-2:判断当前采样次数是否小于6次,若是则记录当前真实时间差和当前MCU时间差,采样次数加一,等待Period时间后返回步骤S2-1,执行下一次采样,否则进入步骤S2-3;
S2-3:分别过滤掉真实时间差和MCU时间差中的最大值和最小值,并分别获取过滤后的真实时间差总和以及MCU时间差总和;
S2-4:判断真实时间差总和是否大于MCU时间差总和,若是则输出MCU时间比真实时间慢,校正方向为正向,获取与记录校正值,并将当前校正方向与当前校正值作为辅正参数,进入步骤S2-7,否则进入步骤S2-5;
S2-5:判断真实时间差总和是否小于MCU时间差总和,若是则输出MCU时间比真实时间快,校正方向为负向,获取与记录校正值,并将当前校正方向与当前校正值作为辅正参数,进入步骤S2-7,否则进入步骤S2-6;
S2-6:输出MCU时间跟真实时间是一致,无需辅正参数,结束校准,并重置采样次数;
S2-7:将辅正参数保存至本地,并重置采样次数,进入步骤S3;
所述步骤S3包括如下步骤:
S3-1:获取辅正参数,判断辅正参数是否有效,若是则根据校正值获取辅正值,并进入步骤S3-2,否则直接输出当前原始MCU时间,并结束校准;
S3-2:根据校正方向、辅正值以及MCU时间参数,获取并输出当前MCU时间;
S3-3:更新MCU时间参数,
所述步骤S3-1中,获取辅正值的公式为:
Deviation=(lbolt_rtc-lbolt_StorRtc)/Value
式中,Deviation为辅正值;Value为校正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间。
所述步骤S3-2中,获取并输出当前MCU时间,包括:
若校正方向是正向,其计算公式为:
gStorTimei+1=gStorTimei+lbolt_rtc-lbolt_StorRtc+Deviation
若校正方向是负向,其计算公式为:
gStorTimei+1=gStorTimei+lbolt_rtc-lbolt_StorRtc-Deviation
式中,gStorTimei+1为当前MCU时间;gStorTimei为上一次校准输出的MCU时间;Deviation为辅正值;lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间;i为迭代指示量。
2.根据权利要求1所述的应用于单片机系统的时间自动校准方法,其特征在于:所述步骤S1包括如下步骤:
S1-1:开启轮询任务,当到达检查周期Period时间时执行轮询任务;
S1-2:查询本地辅正值,判断辅正值是否有效,若是则将当前Period设置为1天,获取网络时间,并返回步骤S1-1,否则进入步骤S1-3;
S1-3:判断当前尝试获取辅正值的次数是否少于10次,若是则进入步骤S1-4,否则退出当前获取辅正值的行为,将当前Period设置为1天,获取网络时间,并返回步骤S1-1;
S1-4:将当前Period设置为10分钟,启动自动校准流程,并进入步骤S2。
3.根据权利要求1所述的应用于单片机系统的时间自动校准方法,其特征在于:所述步骤S2-1中,记录真实时间,并将其转化为相对于系统预设初始时间设置的相对秒数,并记录当前MCU总运行时间秒数,所述真实时间的相对秒数与当前MCU总运行时间秒数格式保持一致。
5.根据权利要求1所述的应用于单片机系统的时间自动校准方法,其特征在于:所述步骤S2-4中,获取校正方向为正向的校正值的公式为:
Value=MCUSum/(RTSum-MCUSum)
所述步骤S2-5中,获取校正方向为负向的校正值的公式为:
Value=MCUSum/(MCUSum-RTSum)
式中,Value为校正值;MCUSum为MCU时间差总和;RTSum为真实时间差总和。
6.根据权利要求1所述的应用于单片机系统的时间自动校准方法,其特征在于:所述步骤S3-2和S3-3中,MCU时间参数包括当前原始MCU时间和上一次校准的原始MCU时间;
更新MCU时间参数的公式为:
lbolt_StorRtc=lbolt_rtc
式中,lbolt_rtc为当前原始MCU时间;lbolt_StorRtc为上一次校准的原始MCU时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910129696.0A CN109918337B (zh) | 2019-02-21 | 2019-02-21 | 一种应用于单片机系统的时间自动校准方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910129696.0A CN109918337B (zh) | 2019-02-21 | 2019-02-21 | 一种应用于单片机系统的时间自动校准方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109918337A CN109918337A (zh) | 2019-06-21 |
CN109918337B true CN109918337B (zh) | 2023-02-03 |
Family
ID=66961930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910129696.0A Active CN109918337B (zh) | 2019-02-21 | 2019-02-21 | 一种应用于单片机系统的时间自动校准方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109918337B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801008A (zh) * | 2004-12-30 | 2006-07-12 | 昆达电脑科技(昆山)有限公司 | 电子装置时间自动校正方法 |
US20080244301A1 (en) * | 2007-03-27 | 2008-10-02 | Mediatek Inc. | Real-time clock correction methods and apparatus |
US7652545B2 (en) * | 2007-12-07 | 2010-01-26 | Mediatek Inc. | System and method of calibrating real time clock utilizing average calibration |
CN102929735B (zh) * | 2012-10-19 | 2015-11-25 | 北京星网锐捷网络技术有限公司 | 一种时钟校正的方法和设备 |
CN102938220B (zh) * | 2012-11-28 | 2014-09-10 | 天津七一二通信广播有限公司 | 一种船舶自动识别终端设备校准自身时钟的方法 |
JP6958296B2 (ja) * | 2017-06-07 | 2021-11-02 | セイコーエプソン株式会社 | 計時装置、電子機器及び移動体 |
-
2019
- 2019-02-21 CN CN201910129696.0A patent/CN109918337B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109918337A (zh) | 2019-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104297716B (zh) | 一种智能电表rtc校准方法 | |
CN106154816B (zh) | 一种自动装置高精度守时方法 | |
CN102929735B (zh) | 一种时钟校正的方法和设备 | |
CN112595980B (zh) | 电池储能系统寿命的预测方法、装置及设备 | |
CN103176400A (zh) | 智能电表时钟校准方法 | |
CN103389644B (zh) | 一种定时系统及定时方法 | |
CN100538561C (zh) | 分数除法器系统及方法 | |
CN103226376B (zh) | 一种高精度实时时钟芯片 | |
CN101876693A (zh) | 一种基于电能计量芯片的终端校准系统 | |
CN103713552A (zh) | 基于秒脉冲的自适应动态同步采样控制装置及其方法 | |
CN103901942B (zh) | 用于终端的时钟精度的校准方法和装置 | |
CN102902879A (zh) | 一种基于fpga硬件dft递推的同步相量计算方法 | |
CN103941622A (zh) | 基于fpga的高精度秒脉冲倍频出采样脉冲的方法 | |
CN202217149U (zh) | 高精度电力时间同步装置 | |
US9003063B2 (en) | Systems, methods, and apparatus for estimating power time of use | |
CN111064536A (zh) | 基于时钟同步的配电网监测装置及方法 | |
CN110139236B (zh) | 一种基于无线传感器网络的同步采集方法 | |
CN109918337B (zh) | 一种应用于单片机系统的时间自动校准方法 | |
CN201796138U (zh) | 一种基于电能计量芯片的终端校准系统 | |
CN103472713A (zh) | 一种时钟的时间校正系统 | |
CN103698598A (zh) | 电表及其低误差脉冲输出方法 | |
CN102928805A (zh) | 多表位数字化电能表校验仪 | |
CN101727098A (zh) | 生产周期目标测量方法及系统 | |
CN202305666U (zh) | 一种直流电能表 | |
CN103023433A (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 |