一种应用于单片机系统的时间自动校准方法技术方案

技术编号:21431907 阅读:58 留言:0更新日期:2019-06-22 11:50
本发明专利技术属于单片机应用技术领域,公开了一种应用于单片机系统的时间自动校准方法,包括如下步骤:S1、根据本地辅正值,启动自动校准流程;S2、进行自学习获取MCU时钟偏差,并获取辅正参数;S3、根据辅正参数获取当前MCU时间。本发明专利技术解决了现有技术存在的成本投入大、准确度低以及功耗开销和网络开销大的问题。

【技术实现步骤摘要】
一种应用于单片机系统的时间自动校准方法
本专利技术属于单片机应用
,具体涉及一种应用于单片机系统的时间自动校准方法。
技术介绍
单片机(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为真实时间差总和;RTDiff1、RTDiff2、RTDiff3分别为过滤掉最大值和最小值的第1、2、3个真实时间差;MCUDiff1、MCUDiff2、MCUDiff3分别为过滤掉最大值和最小值的第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.一种应用于单片机系统的时间自动校准方法,其特征在于:包括如下步骤:S1:根据本地辅正值,启动自动校准流程;S2:进行自学习获取MCU时钟偏差,并获取辅正参数;S3:根据辅正参数获取当前MCU时间。

【技术特征摘要】
1.一种应用于单片机系统的时间自动校准方法,其特征在于:包括如下步骤:S1:根据本地辅正值,启动自动校准流程;S2:进行自学习获取MCU时钟偏差,并获取辅正参数;S3:根据辅正参数获取当前MCU时间。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包括如下步骤: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。4.根据权利要求3所述的应用于单片机系统的时间自动校准方法,其特征在于:所述步骤S2-1中,记录真实时间,并将其转化为相对于系统预设初始时间设置的相对秒数,并记录当前MCU总运行时间秒数,所述真实时间的相对秒数与当前MCU总运行时间秒数格式保持一致。5.根据权利要求3所述的应用于单片机系统的时间自动校准方法,其特征在于:所述步骤S2-3中,获取过滤后的真实时间差总和以及MCU时间差总和的公式为:式中,MCUSum为MCU时间差总和;RTSum为真实时间差总和;RTDiff1、RTDiff2、RTDiff3分别为过滤掉最大值和最小值的第1、2、3个真实时间差;MCUDiff1、MCU...

【专利技术属性】
技术研发人员:李玮棠
申请(专利权)人:广州技象科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1