CN110262210B - 基于计数器的晶振守时方法 - Google Patents

基于计数器的晶振守时方法 Download PDF

Info

Publication number
CN110262210B
CN110262210B CN201910570754.3A CN201910570754A CN110262210B CN 110262210 B CN110262210 B CN 110262210B CN 201910570754 A CN201910570754 A CN 201910570754A CN 110262210 B CN110262210 B CN 110262210B
Authority
CN
China
Prior art keywords
crystal oscillator
pin
time
counter
frequency
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
Application number
CN201910570754.3A
Other languages
English (en)
Other versions
CN110262210A (zh
Inventor
刘忠华
许强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIDOU TIANHUI (BEIJING) TECHNOLOGY CO LTD
Original Assignee
BEIDOU TIANHUI (BEIJING) TECHNOLOGY CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEIDOU TIANHUI (BEIJING) TECHNOLOGY CO LTD filed Critical BEIDOU TIANHUI (BEIJING) TECHNOLOGY CO LTD
Priority to CN201910570754.3A priority Critical patent/CN110262210B/zh
Publication of CN110262210A publication Critical patent/CN110262210A/zh
Application granted granted Critical
Publication of CN110262210B publication Critical patent/CN110262210B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G04HOROLOGY
    • G04GELECTRONIC TIME-PIECES
    • G04G5/00Setting, i.e. correcting or changing, the time-indication
    • GPHYSICS
    • G04HOROLOGY
    • G04RRADIO-CONTROLLED TIME-PIECES
    • G04R20/00Setting the time according to the time information carried or implied by the radio signal
    • G04R20/02Setting the time according to the time information carried or implied by the radio signal the radio signal being sent by a satellite, e.g. GPS

Abstract

本发明涉及一种基于计数器的晶振守时方法及控制电路,利用MCU微控制单元的高精度计数器对温补晶振输入的方波脉冲进行计数;以卫星信号接收机输入的秒脉冲信号作为频率基准对晶振的输出频率进行测量;频率偏差以脉冲计数器的计数值减去晶振的额定频率得到的整数值表示;将初始得到的频率偏差输入卡尔曼滤波器将环境的随机误差滤除后再输入到动态加权平均学习算法中建立温度和频率偏差值的动态模型。本发明基于计数器的晶振守时方法,针对低精度的温补晶振可以显著的校准晶振的频率输出提高守时精度;对恒温晶振的驯服有显著效果;简化了硬件晶振驯服电路,缩小了硬件体积节约了硬件实现成本。

Description

基于计数器的晶振守时方法
技术领域
本发明属于信号处理技术领域,具体的说,是涉及一种基于计数器的晶振守时方法。
背景技术
温补晶振(TCXO)和恒温晶振(OCXO)是很常用的时钟源,虽然TCXO和OCXO的精度不同,但是TCXO和OCXO输出频率和相位都会随着时间和温度的变化而产生漂移。如果将晶振应用在授时和守时设备中,则必须对晶振采取必要的措施进行驯服校准。
传统的晶振驯服方法是以GPS接收机或者其他高精度频率源作为频率基准,利用锁相环电路或者数字锁相环对晶振进行驯服和校准。这种方法需要庞杂的电路支持,如果使用数字锁相环的话还需要价格高昂的FPGA。另外,采取锁相环电路还需要晶振有相应的电路支持,对于小型的温补晶振没有压控引脚,则不能采取锁相环的方法进行驯服。
当前的晶振守时技术都是高精度的守时技术,要求晶振带有压控功能,再利用FPGA搭建的数字锁相环以卫星信号为基准对晶振进行驯服。当卫星信号消失后,晶振可以输出稳定的频率和很低的相位噪声。
对于以上传统的晶振守时技术有以下不足:
(1)带压控的晶振为了实现压控功能内部电路较为复杂,所以体积普遍都比较大,如果再配合外部的锁相环电路产品的硬件电路复杂而且体积也很大。只适合一些高精度的守时设备应用,对于要求产品体积小的设备则无法使用。
(2)带压控功能的晶振普遍售价都很昂贵,再加上外围的锁相环电路的实现,成本将会进一步的提高。
(3)对于没有压控功能的晶振没有一种技术方法对晶振实现高精度守时的功能。本发明填补了这一技术空白。
(4)对于一些可以接收卫星信号的时间显示类产品,对于传统带压控的晶振守时技术实现成本太高。而且,该类产品对相位噪声要求不高,同时该类产品的体积普遍都比较小,大晶振不能满足要求。
发明内容
针对上述现有技术中的不足,本发明提供一种简化了驯服电路,降低系统实现成本的基于计数器的晶振守时方法。
本发明所采取的技术方案是:
一种基于计数器的晶振守时方法,
利用MCU(Microcontroller Unit)微控制单元的高精度计数器对温补晶振输入的方波脉冲进行计数;以卫星信号接收机输入的秒脉冲信号作为频率基准对晶振的输出频率进行测量;频率偏差以脉冲计数器的计数值减去晶振的额定频率得到的整数值表示;将初始得到的频率偏差输入卡尔曼滤波器将环境的随机误差滤除后再输入到动态加权平均学习算法中建立温度和频率偏差值的动态模型。
动态模型会随着测量数据量的增长逐渐完善,当系统失去卫星信号源时,系统会根据之前建立的动态模型调节晶振输出的频率并对外输出秒脉冲信号。
一种基于计数器的晶振守时方法,包括如下步骤:
步骤1,开始;
步骤2,串口报文读取;
步骤3,温度采集;
步骤4,判断是否有信号输入,有信号输入执行步骤5;一直没有信号输入执行步骤12;从有信号输入进入无信号输入,执行步骤10
步骤5,采集晶振偏差;
步骤6,卡尔曼滤波;
步骤7,学习算法对晶振偏差值处理;
步骤8,保存处理结果;
步骤9,调节晶振;执行步骤12;
步骤10,获取对应温度下晶振偏差调节值;
步骤11,调节晶振;
步骤12,输出1PPS信号;
步骤13,串口输出时间报文;
步骤14,结束一次处理。
一种基于计数器的晶振守时方法,包括如下步骤:
系统复位(看门狗);串口数据的读写;晶振偏移值的测量以及测量数据的处理;对外1PPS的输出以及守时状态下调节值的获取;对晶振进行补偿操作;温度传感器数据的读取以及将必要参数保存到存储器中。
所述系统复位是检测系统是否出现死机,如果死机则重启系统。
所述串口数据读写步骤如下:
线程每1毫秒循环执行一次,当串口有报文时读取并解析串口报文;
如果报文显示有卫星报文输入时卫星信号标志位将被置位否则清除卫星信号标志位;
之后再判断时间输出标志位是否置位,如果是则通过串口输出系统时间报文。到此结束一次循环。时间输出标志位会在晶振1PPS信号到达时被置位。
所述晶振偏移值的测量以及测量数据的处理步骤如下:
线程每次卫星1PPS上升沿到达时执行一次;实现晶振频率偏差测量、对晶振频率偏差测量值进行卡尔曼滤波和将测量数据交给局部加权线性拟合算法处理;
当有卫星1PPS到达时,晶振偏移测量以及测量数处理线程执行;
首先判断卫星标志位是否置位,如果是则依次执行晶振偏差值计算、卡尔曼滤波、局部加权线性拟合算法对测量数据的处理以及置位调节标志位和存储标志位,实现晶振偏差值的调节和必要调节参数的存储。
所述对外1PPS的输出以及守时状态下调节值的获取步骤如下:
线程每次晶振1PPS上升沿到达时会执行一次;
当晶振1PPS上升沿到达时该线程会判断当前系统是否是守时状态,如果是该线程会获取当前温度下晶振偏差的调节值并置位调节标志位让晶振调节线程对晶振进行调节;同时,在晶振1PPS到达时会更新系统时间并置位时间输出标志位使串口读写线程输出系统时间报文。
所述对晶振进行补偿操作步骤如下:
线程会循环检测调节标志位,如果调节标志位置位则找合适的时机对晶振输出的1PPS的相位进行调节,并清除调节标志位;
所述温度传感器数据的读取以及将必要参数保存到存储器中,线程主要实现温度传感器数据的读取以及将局部加权线性拟合算法的参数和部分系统参数保存到存储器中,实现断电后参数存储功能。该线程循环执行,每两百毫秒执行一次。
这六个线程独立运行,通过标志位实现线程之间的同步以及配合完成不同的任务。
一种基于计数器的晶振守时方法的控制电路,包括:晶振和具备32位高精度定时计数器并支持外部信号源输入的MCU(Microcontroller Unit)微控制单元及电源电路和外围电路。
MCU(Microcontroller Unit)微控制单元为芯片U7,型号为STM32F412RET6。
外围电路包括晶振输出Y1、信号驱动芯片U6、温度传感器U4。
晶振输出电路为晶振Y1,型号为T53-F319-16.384MHz,晶振Y1通过5脚输出16.384MHz频率信号,经过信号驱动芯片U6增强16.384MHz频率信号;
由芯片U6的3脚输出到MCU芯片U7的14脚,具有32位计数定时器功能的引脚。
晶振Y1(T53-F319-16.384MHz)的4脚连接GND;
晶振Y1(T53-F319-16.384MHz)的8脚连接供电VCC3.3TC;
晶振Y1(T53-F319-16.384MHz)的8脚连接电容C8的1脚;
晶振Y1(T53-F319-16.384MHz)的8脚连接电容C9的1脚;
晶振Y1(T53-F319-16.384MHz)的5脚连接电阻R13的1脚;
电阻R13的2脚连接芯片U6(74LVC1T45)的4脚;
电容C8的2脚连接GND;
电容C9的2脚连接GND;
芯片U6(74LVC1T45)的1脚、6脚连接供电VCC3.3;
芯片U6(74LVC1T45)的2脚、5脚连接GND;
测温电路;
芯片U4(DS18B20)的1脚连接GND;
芯片U4(DS18B20)的2脚连接电阻R11的1脚;
芯片U4(DS18B20)的2脚连接U7(STM32F412RET6)的2脚;
芯片U4(DS18B20)的3脚连接供电VCC3.3;
芯片U4(DS18B20)的3脚连接电阻R11的2脚。
本发明相对现有技术的有益效果:
本发明基于计数器的晶振守时方法,提出了一种全新的晶振驯服技术,主要针对低精度的温补晶振可以显著的校准晶振的频率输出提高守时精度。另外,本发明同样对恒温经的驯服有显著效果。
本发明基于计数器的晶振守时方法,简化了硬件晶振驯服电路,缩小了硬件体积节约了硬件实现成本。
本发明基于计数器的晶振守时方法,采用数字化的方法对晶振频率进行补偿并输出准确的1PPS信号。
本发明基于计数器的晶振守时方法,融合了多种数字滤波算法,并采用机器学习算法对晶振频率偏移和温度以及老化率建立数学模型。
本发明主要应用在对不带压控功能的温补晶振。通过学习温补晶振的温度特性和老化特性对晶振输出的频率进行调节已达到高精度守时的作用。
本发明相较于传统的调节方法极大的简化了硬件电路的实现,同时也可以使用封装更小的温补晶振实现。使整个模块的面积缩小到35*42毫米甚至更小。
附图说明
图1是本发明基于计数器的晶振守时方法的串口数据读写流程示意图;
图2是本发明基于计数器的晶振守时方法的晶振偏移值的测量以及测量数据的处理流程示意图;
图3是本发明基于计数器的晶振守时方法的对外1PPS的输出以及守时状态下调节值的获取流程示意图;
图4是本发明基于计数器的晶振守时方法的对晶振进行补偿操作流程示意图;
图5是本发明基于计数器的晶振守时方法的温度传感器数据的读取以及将必要参数保存到存储器中流程示意图;
图6是本发明基于计数器的晶振守时方法的系统流程示意图;
图7是本发明基于计数器的晶振守时方法的控制电路的系统组成图;
图8是本发明基于计数器的晶振守时方法的控制电路的元件组成连接示意图。
具体实施方式
以下参照附图及实施例对本发明进行详细的说明:
附图1-8可知,一种基于计数器的晶振守时方法,
利用MCU(Microcontroller Unit)微控制单元的高精度计数器对温补晶振输入的方波脉冲进行计数;以卫星信号接收机输入的秒脉冲信号作为频率基准对晶振的输出频率进行测量;频率偏差以脉冲计数器的计数值减去晶振的额定频率得到的整数值表示;将初始得到的频率偏差输入卡尔曼滤波器将环境的随机误差滤除后再输入到动态加权平均学习算法中建立温度和频率偏差值的动态模型。
动态模型会随着测量数据量的增长逐渐完善,当系统失去卫星信号源时,系统会根据之前建立的动态模型调节晶振输出的频率并对外输出秒脉冲信号。
一种基于计数器的晶振守时方法,包括如下步骤:
步骤1,开始;
步骤2,串口报文读取;
步骤3,温度采集;
步骤4,判断是否有信号输入,有信号输入执行步骤5;一直没有信号输入执行步骤12;从有信号输入进入无信号输入,执行步骤10
步骤5,采集晶振偏差;
步骤6,卡尔曼滤波;
步骤7,学习算法对晶振偏差值处理;
步骤8,保存处理结果;
步骤9,调节晶振;执行步骤12;
步骤10,获取对应温度下晶振偏差调节值;
步骤11,调节晶振;
步骤12,输出1PPS信号;
步骤13,串口输出时间报文;
步骤14,结束一次处理。
一种基于计数器的晶振守时方法,包括如下步骤:
系统复位(看门狗);串口数据的读写;晶振偏移值的测量以及测量数据的处理;对外1PPS的输出以及守时状态下调节值的获取;对晶振进行补偿操作;温度传感器数据的读取以及将必要参数保存到存储器中。
所述系统复位是检测系统是否出现死机,如果死机则重启系统。
所述串口数据读写步骤如下:
线程每1毫秒循环执行一次,当串口有报文时读取并解析串口报文;
如果报文显示有卫星报文输入时卫星信号标志位将被置位否则清除卫星信号标志位;
之后再判断时间输出标志位是否置位,如果是则通过串口输出系统时间报文。到此结束一次循环。时间输出标志位会在晶振1PPS信号到达时被置位。
所述晶振偏移值的测量以及测量数据的处理步骤如下:
线程每次卫星1PPS上升沿到达时执行一次;实现晶振频率偏差测量、对晶振频率偏差测量值进行卡尔曼滤波和将测量数据交给局部加权线性拟合算法处理;
当有卫星1PPS到达时,晶振偏移测量以及测量数处理线程执行;
首先判断卫星标志位是否置位,如果是则依次执行晶振偏差值计算、卡尔曼滤波、局部加权线性拟合算法对测量数据的处理以及置位调节标志位和存储标志位,实现晶振偏差值的调节和必要调节参数的存储。
所述对外1PPS的输出以及守时状态下调节值的获取步骤如下:
线程每次晶振1PPS上升沿到达时会执行一次;
当晶振1PPS上升沿到达时该线程会判断当前系统是否是守时状态,如果是该线程会获取当前温度下晶振偏差的调节值并置位调节标志位让晶振调节线程对晶振进行调节;同时,在晶振1PPS到达时会更新系统时间并置位时间输出标志位使串口读写线程输出系统时间报文。
所述对晶振进行补偿操作步骤如下:
线程会循环检测调节标志位,如果调节标志位置位则找合适的时机对晶振输出的1PPS的相位进行调节,并清除调节标志位;
所述温度传感器数据的读取以及将必要参数保存到存储器中,线程主要实现温度传感器数据的读取以及将局部加权线性拟合算法的参数和部分系统参数保存到存储器中,实现断电后参数存储功能。该线程循环执行,每两百毫秒执行一次。
这六个线程独立运行,通过标志位实现线程之间的同步以及配合完成不同的任务。
一种基于计数器的晶振守时方法的控制电路,包括:晶振和具备32位高精度定时计数器并支持外部信号源输入的MCU(Microcontroller Unit)微控制单元及电源电路和外围电路。
MCU(Microcontroller Unit)微控制单元为芯片U7,型号为STM32F412RET6。
外围电路包括晶振输出Y1、信号驱动芯片U6、温度传感器U4。
晶振输出电路为晶振Y1,型号为T53-F319-16.384MHz,晶振Y1通过5脚输出16.384MHz频率信号,经过信号驱动芯片U6增强16.384MHz频率信号;
由芯片U6的3脚输出到MCU芯片U7的14脚,具有32位计数定时器功能的引脚。
晶振Y1(T53-F319-16.384MHz)的4脚连接GND;
晶振Y1(T53-F319-16.384MHz)的8脚连接供电VCC3.3TC;
晶振Y1(T53-F319-16.384MHz)的8脚连接电容C8的1脚;
晶振Y1(T53-F319-16.384MHz)的8脚连接电容C9的1脚;
晶振Y1(T53-F319-16.384MHz)的5脚连接电阻R13的1脚;
电阻R13的2脚连接芯片U6(74LVC1T45)的4脚;
电容C8的2脚连接GND;
电容C9的2脚连接GND;
芯片U6(74LVC1T45)的1脚、6脚连接供电VCC3.3;
芯片U6(74LVC1T45)的2脚、5脚连接GND;
测温电路;
芯片U4(DS18B20)的1脚连接GND;
芯片U4(DS18B20)的2脚连接电阻R11的1脚;
芯片U4(DS18B20)的2脚连接U7(STM32F412RET6)的2脚;
芯片U4(DS18B20)的3脚连接供电VCC3.3;
芯片U4(DS18B20)的3脚连接电阻R11的2脚。
本发明基于计数器的晶振守时方法,提出了一种全新的晶振驯服技术,主要针对低精度的温补晶振可以显著的校准晶振的频率输出提高守时精度。另外,本发明同样对恒温经的驯服有显著效果。
本发明基于计数器的晶振守时方法,简化了硬件晶振驯服电路,缩小了硬件体积节约了硬件实现成本。
本发明基于计数器的晶振守时方法,采用数字化的方法对晶振频率进行补偿并输出准确的1PPS信号。
本发明基于计数器的晶振守时方法,融合了多种数字滤波算法,并采用机器学习算法对晶振频率偏移和温度以及老化率建立数学模型。
本发明主要应用在对不带压控功能的温补晶振。通过学习温补晶振的温度特性和老化特性对晶振输出的频率进行调节已达到高精度守时的作用。
本发明相较于传统的调节方法极大的简化了硬件电路的实现,同时也可以使用封装更小的温补晶振实现。使整个模块的面积缩小到35*42毫米甚至更小。
有益效果具体说明:
(1)在成本方面,最便宜的带压控的恒温晶振价格应该是500元人民币这还不包括外部的锁相环电路的实现,而本发明实现成本应该在100元人民币左右。
(2)在精度方面,本发明的守时精度可以达到1天2毫秒的守时精度,与条件前晶振的守时能力相比守时能力提高了两个数量级。
(3)这种晶振调节实现高精度守时的技术首次被使用,填补了低端无压控晶振补偿技术的空白。
(4)本发明面向时间显示类设备的应用提供了高精度的晶振守时解决方案,在实现同等守时精度的情况下,使用本发明技术大大降低了产品研发成本和缩小了守时设备占用的空间。
(5)与同类守时产品相比,本发明的守时精度提高了2个数量级。
测量单元的工作原理:
本发明采用的MCU(Microcontroller Unit)微控制单元具备32位的定时计数器并支持外部信号源输入。
对于市场上常用的温补晶振以及恒温晶振的频率该定时都可以进行测量。
本发明使用的是频率为16384000Hz的温补晶振,利用GPS接收机输出的秒脉冲信号作为参考测量一秒内晶振输出的脉冲数量N,然后将脉冲数量N与晶振的额定屏频率做差得到晶振的频率偏移值。
为了滤除随机噪声对测量精度的影响,需要建立晶振频率偏移与温度之间的数学模型,利用卡尔曼滤波器对测量值做滤波处理。
根据晶振厂家提供的资料,在某一特定温度下晶振的频率偏移在短时间内变化极小。由于本方案的测量间隔小于一分钟,在温度固定不变的前提下本方案认为理想情况下两次测量的晶振频率偏移值应该相等。因此,卡尔曼滤波模型建立如下:
X(k|k-1)=X(k-1|k-1)................................(1)
P(k|k-1)=P(k-1|k-1)+Q.................(2)
X(k|k)=X(k|k-1)+Kg(k)(Z(k)-X(k|k-1))...(3)
Figure BDA0002110802570000121
P(k|k)=(1-Kg(k))P(k|k-1)............(5)
参数说明:
X(k|k):当前测量时刻滤波器输出值;
X(k|k-1):上一时刻滤波器输出值;
X(k-1|k-1):相对于上一时刻的上一时刻滤波器输出值;
P:系统测量的协方差,括号中测量时刻的意义与X相同;
Kg(k):卡尔曼增益;
Z(k):当前时刻测量值;
Q和R:表示过程和测量的噪声的协方差(本方案假设它们都为高斯白噪声);
经过测试,该模型可以滤除随机误差对测量值起到平滑的作用,有效的减弱了环境对测量数据的影响提高了测量精度。
卡尔曼滤波算法实现如下:
Figure BDA0002110802570000131
对测量数据建模:
由于晶振的频率偏移受温度因素的影响极大,对每一颗晶振建立频率偏移与温度的数学模型对提高系统的守时精度有很大的作用。
本发明采用的是局部加权线性拟合算法对测量数据建立温度对频率偏差值影响的数学模型。调节输出模块只需要获取当前温度值便可以根据该数学模型获取当前时刻的频率补偿值。本发明在牺牲少量的模型精度的前提下针对本应用环境对传统的局部加权线性拟合算法进行了特定的改进以适应嵌入式系统运行环境,最大程度的降低了算法的时间和空间的复杂度以适应低端嵌入式设备的需求。
传统的局部加权线性拟合算法需要对所有的采集样本进行存储,每一次获取预测值都需要重新计算模型。这需要大量的存储空间和内存消耗,因此算法的时间复杂度和空间复杂度都不能满足嵌入式设备的需求。
传统的局部加权线性拟合算法的回归系数的求解方法如下(6)式,其中W是一个矩阵,
θ=(XTWX)-1XTWy..........................(6)
代表对于每一个数据点的权重。W的确定一般采用核的方法实现,其中最常用的核是高斯核,高斯核的确定方法为:
Figure BDA0002110802570000141
分析(6)式和(7)式,时间复杂度主要体现在每次所有样本数都需要参与计算,随着样本数据量的增加,每次更新模型并预测需要CPU付出的计算量越来越大而且占用的内存空间也越来越大。由于本发明的软件运行在低端MCU处理器上,无法提供相应的内存空间和CPU计算速度。深入分析(6)式和(7)式,并结合局部加权线性拟合算法的原理,并考虑到本发明的应用环境。本方案对传统的局部加权线性拟合算法做了如下修改:
(1)局部加权线性拟合算法本质上就是对输入的样本在自变量的局部区域进行普通的线性拟合。因此本发明将固定按照1℃的间隔进行了分段处理,这样每一度的区间内就一个“局部”(例如:[1.0,2.0)摄氏度就是一个局部)。
(2)根据测量模块卡尔曼滤波模型的假设,在同一温度下两次测量值相等。本发明的模型在每一个“局部”内认为晶振的频率偏差值为定值。因此模型预测值在“局部”内为“局部”内样本的高斯加权平均值。
(3)由于本发明的同样用高斯核来确定数据点的权重,这里将该定值设置为输入样本的高斯加权平均值。
(4)权重值的计算方式由(7)式改为如下递归的方式计算:
Sum(k)=Sum(k-1)+x(k)............................(8)
Figure BDA0002110802570000151
Sumσ(k)=Sumσ(k-1)+(x(k)-μ(k))2..................(10)
Figure BDA0002110802570000152
Figure BDA0002110802570000153
参数说明:
x(k):当前时刻样本值;
Sum(k-1):上一测量时刻样本值的和;
Sum(k):当前时刻样本值的和;
N:样本数量;
μ(k):当前样本的平均值;
Sumσ(k-1):上一测量时刻样本方差和;
Sumσ(k):当前时刻样本方差和;
σ(k):当前时刻样本方差;
P(k):当前采样的权值;
通过以上四方面的修改该算法的时间复杂度的得到显著的简化,同时系统只需要存储样本值和、样本数量样本方差和三个数据即可获得当前样本的权重,空间复杂度也得到了显著的降低。这样改进后的局部加权线性拟合算法就满足了本发明的运行环境。
以上四方面的改进将算法的时间和空间复杂度降低的同时也降低了算法的拟合精度。另外随着学习样本数量的增加,预测值会逐渐的趋于稳定不变。为了补偿算法改进的带来的精度折损,同时补偿晶振老化对晶振频率偏差的影响,本发明又加入了误差补偿算法。
误差补偿算法首先要解决的问题就是误差的测量。
本方案认为晶振频率偏差的测量值就是当前偏差的真值,这样误差值就是预测值与真值的差。公式表示如下:
Δftrv=Δfmea........................................(13)
Δferr=Δffor-Δftrv...................................(14)
误差补偿算法很简单,就是将所有误差的测量值的平均值补偿到局部加权线性拟合算法输出的预测值上。局部加权线性拟合算法和误差补偿算法的实现如下:
Figure BDA0002110802570000161
Figure BDA0002110802570000171
三、频率输出以及调节模块工作原理:
本发明输出的频率为1Hz的秒脉冲信号(1PPS)。
秒脉冲信号通过微处理(MCU)的定时器产生。
设置定时器为向上计数模式并设置定时器溢出值为温补晶振的额定频率,当定时器的计数值溢出时会产生中断信号。
在定时器的中断处理函数中产生一个脉冲信号作为系统输出的秒脉冲信号。
以上产生秒脉冲信号的机制为调节秒脉冲的上升沿带来了极大的便利。由于何时产生秒脉冲信号完全取决于定时器的计数器中的数值,系统程序可以给计数器加一个数值以提前产生一个秒脉冲或者系统程序也可以给计数器减去一个值以延迟产生一个秒脉冲。
调节模块就是根据测量模块的测量数据和学习算法建立的模型产生的预测数据决定每个测量周期内为定时器的计数器加一个或者减一个数值以达到秒脉冲的上升沿与卫星信号的上升沿对齐的目的。
四、偏差值符号的判定
针对本发明的调节模块,系统需要判定晶振的频率偏差值的符号。在调节模块固定将计数器值减去偏差值的前提下,符号判定的方式如下:
1.定时器中断先于卫星秒脉冲到达,晶振的当前频率大于额定频率。要定时器中断与卫星秒脉冲对齐,需要使定时器中断延后到达,此时偏差值符号为正。
2.定时器中断晚于卫星秒脉冲到达,晶振的当前频率小于额定频率。要定时器中断与卫星秒脉冲对齐,需要使定时器中断提前到达,此时偏差值符号为负。
在本发明实现中,在测量模块中当卫星秒脉冲到达时系统开始测量晶振偏差。在计算晶振偏差之前,系统会先判断定时器是否已经产生过中断。如果已经产生过中断则偏差值为正,否则为负。计算晶振偏差的软件实现如下:
Figure BDA0002110802570000191
Figure BDA0002110802570000201
偏差值小数部分的调节:
本发明的调节模块是基于计数器实现的,计数器中的值只能是正整数,那么晶振频率偏差的小数部分如何补偿和调节就是摆在提高守时精度的首要问题。
本发明采用时系展宽的方案,然后将小数误差积累到大于1后添加到调节值中。本发明实现方案中通过将时系展宽到100个测量周期实现了精确到小数点后两位的调节精度。时系展宽算法实现如下:
Figure BDA0002110802570000202
Figure BDA0002110802570000211
本发明相对现有技术的有益效果:
本发明的有益效果:本发明将温补晶振的守时精度提高了几个数量级,可以达到40ms/月的守时能力。
相较于传统的晶振守时技术,在提高守时精度的同时简化了电路连接降低了系统实现成本。本发明填补了低端晶振无压控接口的晶振驯服技术的空白,为守时技术的低端应用提供了可能。
对于低成本守时产品来说是一种低成本、高性能的解决方案。目前此类产品最优的方案为带温度补偿RTC芯片方案。如:maxim公司的DS3231M时时钟(RTC)。其内部集成了高稳定晶振,输出的波形都是经过温度补偿校准的。可以显著提高RTC的初始精度和温度稳定性。即便如此,其精度在-40℃-85℃范围内都约为±5ppm。守时稳定度方法为:Δf/f0=Δt/T(或Δt=Δf/f0×T)
其中Δf/f0为守时稳定度。指守时模式下晶振的频率偏差。这个参数来自于晶振厂家;
Δt为累计时间误差。
T为:保持的时间长度。本文中T=86,400秒(1天);
得到:常规RTC方案的守时精度(5ppm)=5E-6×86,400S=0.432s/天。一个月的误差高达12.9秒。
而本文解决方案的守时精度可达=40ms/月。指标提升了300倍。
以上所述,仅是本发明的较佳实施例而已,并非对本发明的结构作任何形式上的限制。凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均属于本发明的技术方案范围内。

Claims (7)

1.一种基于计数器的晶振守时方法,其特征在于,
利用MCU微控制单元的高精度计数器对温补晶振输入的方波脉冲进行计数;以卫星信号接收机输入的秒脉冲信号作为频率基准对晶振的输出频率进行测量;频率偏差以脉冲计数器的计数值减去晶振的额定频率得到的整数值表示;将初始得到的频率偏差输入卡尔曼滤波器将环境的随机误差滤除后再输入到动态加权平均学习算法中建立温度和频率偏差值的动态模型;
动态模型会随着测量数据量的增长逐渐完善,当系统失去卫星信号源时,系统会根据之前建立的动态模型调节晶振输出的频率并对外输出秒脉冲信号;
包括如下步骤:
步骤1,开始;
步骤2,串口报文读取;
步骤3,温度采集;
步骤4,判断是否有信号输入,有信号输入执行步骤5;一直没有信号输入执行步骤12;从有信号输入进入无信号输入,执行步骤10
步骤5,采集晶振偏差;
步骤6,卡尔曼滤波;
步骤7,学习算法对晶振偏差值处理;
步骤8,保存处理结果;
步骤9,调节晶振;执行步骤12;
步骤10,获取对应温度下晶振偏差调节值;
步骤11,调节晶振;
步骤12,输出1PPS信号;
步骤13,串口输出时间报文;
步骤14,结束一次处理;
系统复位;串口数据的读写;晶振偏移值的测量以及测量数据的处理;对外1PPS的输出以及守时状态下调节值的获取;对晶振进行补偿操作;温度传感器数据的读取以及将必要参数保存到存储器中;
所述系统复位是检测系统是否出现死机,如果死机则重启系统。
2.根据权利要求1所述基于计数器的晶振守时方法,其特征在于:所述串口数据读写步骤如下:
线程每1毫秒循环执行一次,当串口有报文时读取并解析串口报文;
如果报文显示有卫星报文输入时卫星信号标志位将被置位否则清除卫星信号标志位;
之后再判断时间输出标志位是否置位,如果是则通过串口输出系统时间报文;到此结束一次循环。
3.根据权利要求1所述基于计数器的晶振守时方法,其特征在于:所述晶振偏移值的测量以及测量数据的处理步骤如下:
线程每次卫星1PPS上升沿到达时执行一次;实现晶振频率偏差测量、对晶振频率偏差测量值进行卡尔曼滤波和将测量数据交给局部加权线性拟合算法处理;
当有卫星1PPS到达时,晶振偏移测量以及测量数处理线程执行;
首先判断卫星标志位是否置位,如果是则依次执行晶振偏差值计算、卡尔曼滤波、局部加权线性拟合算法对测量数据的处理以及置位调节标志位和存储标志位,实现晶振偏差值的调节和必要调节参数的存储。
4.根据权利要求1所述基于计数器的晶振守时方法,其特征在于:所述对外1PPS的输出以及守时状态下调节值的获取步骤如下:
线程每次晶振1PPS上升沿到达时会执行一次;
当晶振1PPS上升沿到达时该线程会判断当前系统是否是守时状态,如果是该线程会获取当前温度下晶振偏差的调节值并置位调节标志位让晶振调节线程对晶振进行调节;同时,在晶振1PPS到达时会更新系统时间并置位时间输出标志位使串口读写线程输出系统时间报文。
5.根据权利要求1所述基于计数器的晶振守时方法,其特征在于:所述对晶振进行补偿操作步骤如下:
线程会循环检测调节标志位,如果调节标志位置位则找合适的时机对晶振输出的1PPS的相位进行调节,并清除调节标志位;
所述温度传感器数据的读取以及将必要参数保存到存储器中,线程主要实现温度传感器数据的读取以及将局部加权线性拟合算法的参数和部分系统参数保存到存储器中,实现断电后参数存储功能;该线程循环执行,每两百毫秒执行一次。
6.根据权利要求2至5任意一项一种基于计数器的晶振守时方法的控制电路,其特征在于,包括:晶振和具备32位高精度定时计数器并支持外部信号源输入的MCU(Microcontroller Unit)微控制单元及电源电路和外围电路。
7.根据权利要求6所述基于计数器的晶振守时方法的控制电路,其特征在于:
包括晶振电路:
晶振Y1保留1脚作为备用压控引脚;
晶振Y1(T53-F319-16.384MHz)的4脚连接GND;
晶振Y1(T53-F319-16.384MHz)的8脚连接供电VCC3.3TC;
晶振Y1(T53-F319-16.384MHz)的8脚连接电容C8的1脚;
晶振Y1(T53-F319-16.384MHz)的8脚连接电容C9的1脚;
晶振Y1(T53-F319-16.384MHz)的5脚连接电阻R13的1脚;
电阻R13的2脚连接芯片U6(74LVC1T45)的4脚;
芯片U6(74LVC1T45)的1脚、6脚连接供电VCC3.3;
芯片U6(74LVC1T45)的2脚、5脚连接GND;
芯片U6(74LVC1T45)的3脚输出连接到U7(STM32F412RET6)的14脚;
测温电路;
芯片U4(DS18B20)的1脚连接GND;
芯片U4(DS18B20)的2脚连接电阻R11的1脚;
芯片U4(DS18B20)的2脚连接U7(STM32F412RET6)的2脚;
芯片U4(DS18B20)的3脚连接供电VCC3.3;
芯片U4(DS18B20)的3脚连接电阻R11的2脚;
芯片U7(STM32F412RET6)的24脚、25脚、26脚、27脚分别定义为外部状态采集输入、守时状态的输出、外部1PPS输入、晶振1PPS输出;
电容C8的2脚连接GND;
电容C9的2脚连接GND。
CN201910570754.3A 2019-06-28 2019-06-28 基于计数器的晶振守时方法 Active CN110262210B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910570754.3A CN110262210B (zh) 2019-06-28 2019-06-28 基于计数器的晶振守时方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910570754.3A CN110262210B (zh) 2019-06-28 2019-06-28 基于计数器的晶振守时方法

Publications (2)

Publication Number Publication Date
CN110262210A CN110262210A (zh) 2019-09-20
CN110262210B true CN110262210B (zh) 2021-03-26

Family

ID=67922662

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910570754.3A Active CN110262210B (zh) 2019-06-28 2019-06-28 基于计数器的晶振守时方法

Country Status (1)

Country Link
CN (1) CN110262210B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111565084B (zh) * 2020-04-21 2022-08-16 中国人民解放军空军工程大学 一种基于频率估计的卫星授时守时系统及方法
CN113555201B (zh) * 2021-07-22 2022-08-16 烟台东方威思顿电气有限公司 一种高精度开合式电流互感器及其数据采样方法
CN113890662A (zh) * 2021-09-22 2022-01-04 北京计算机技术及应用研究所 一种多模高精度授时守时装置
CN114200815B (zh) * 2021-11-15 2023-03-24 秦佳电气有限公司 一种提高普通定时器计时精度的方法及系统
CN115079558A (zh) * 2022-06-16 2022-09-20 成都迅翼卫通科技有限公司 基于专用同步芯片授时守时方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009222486A (ja) * 2008-03-14 2009-10-01 Kinkei System Corp 時刻装置および可搬型電子機器
CN101604970A (zh) * 2009-07-02 2009-12-16 广州市天马电讯科技有限公司 自拟合数字温度补偿晶体振荡器及其系统与实现方法
CN101799658A (zh) * 2010-02-24 2010-08-11 华中科技大学 一种gps校准的守时钟
CN201607626U (zh) * 2010-01-19 2010-10-13 深圳市星芯趋势科技有限责任公司 高稳定度实时时钟电路
CN201681269U (zh) * 2010-07-27 2010-12-22 广州海洋地质调查局 多路海底地震仪精密计时器
CN103176400A (zh) * 2013-01-14 2013-06-26 杭州海兴电力科技股份有限公司 智能电表时钟校准方法
CN106026919A (zh) * 2016-05-16 2016-10-12 南京理工大学 高精度晶体振荡器的守时补偿方法
CN107144860A (zh) * 2017-04-20 2017-09-08 上海北伽导航科技有限公司 一种频漂和时间确定方法、及gnss接收机

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090195322A1 (en) * 2008-01-31 2009-08-06 Qualcomm Incorporated Crystal oscillator frequency calibration
EP3226419A1 (en) * 2016-03-31 2017-10-04 u-blox AG Adaptive temperature compensation for an oscillator
JP6772700B2 (ja) * 2016-09-15 2020-10-21 カシオ計算機株式会社 測位装置、電子時計、測位制御方法、及びプログラム
CN107844050B (zh) * 2017-11-27 2023-12-22 北斗天汇(北京)科技有限公司 守时系统、守时电路及守时方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009222486A (ja) * 2008-03-14 2009-10-01 Kinkei System Corp 時刻装置および可搬型電子機器
CN101604970A (zh) * 2009-07-02 2009-12-16 广州市天马电讯科技有限公司 自拟合数字温度补偿晶体振荡器及其系统与实现方法
CN201607626U (zh) * 2010-01-19 2010-10-13 深圳市星芯趋势科技有限责任公司 高稳定度实时时钟电路
CN101799658A (zh) * 2010-02-24 2010-08-11 华中科技大学 一种gps校准的守时钟
CN201681269U (zh) * 2010-07-27 2010-12-22 广州海洋地质调查局 多路海底地震仪精密计时器
CN103176400A (zh) * 2013-01-14 2013-06-26 杭州海兴电力科技股份有限公司 智能电表时钟校准方法
CN106026919A (zh) * 2016-05-16 2016-10-12 南京理工大学 高精度晶体振荡器的守时补偿方法
CN107144860A (zh) * 2017-04-20 2017-09-08 上海北伽导航科技有限公司 一种频漂和时间确定方法、及gnss接收机

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
一种基于分频链的时钟校准方法;严迪超等;《中国集成电路》;20110705(第7期);第67-71页 *
可去抖动的时钟脉冲发生器;严迪超等;《西安邮电学院学报》;20110910;第16卷(第5期);第72-75页 *
基于加法器的全数字守时系统研究;方明东;《中国优秀硕士学位论文全文数据库(基础科学辑)》;20100531;A008-10 *

Also Published As

Publication number Publication date
CN110262210A (zh) 2019-09-20

Similar Documents

Publication Publication Date Title
CN110262210B (zh) 基于计数器的晶振守时方法
US9134752B2 (en) Time measurement device, micro-controller and method of measuring time
CN100456858C (zh) 终端中的时间误差补偿装置及方法
EP2369438B1 (en) Calibration method of a real time clock signal
CN103176400B (zh) 智能电表时钟校准方法
CN106505996B (zh) 一种结合可变电容的rtc芯片高精度频偏补偿方法
CN102176112B (zh) Mcu内置rtc实现时钟精确计时的方法
KR20070016434A (ko) 알티씨 장치 및 알티씨 장치의 현재시각 보정 방법
CN202256438U (zh) 智能电能表硬件rtc误差补偿系统
CN104937504B (zh) 石英电子表高精度守时方法
CN102981551B (zh) 一种实时时钟温度补偿系统及方法
CN107765760B (zh) 仪表睡眠模式下rtc模块时钟源动态校准方法及其系统
CN106292839A (zh) 实时时钟补偿电路及校准方法、装置
CN108011631A (zh) 工作时钟生成方法、时钟源及芯片
CN102253638A (zh) 一种复杂环境下自主守时的频率稳定控制与补偿方法
CN111831056A (zh) 一种实时时钟校准模块、方法及一种实时时钟芯片
CN113970698A (zh) 一种校准片外晶振的方法与系统
JP2002217722A (ja) 基準周波数発生装置
CN212364801U (zh) 烟感探测器mcu的rtc校准电路
JPS6015905B2 (ja) 電子式時計
CN108873669B (zh) 一种计算机同步时钟的utc时间计算方法
CN103023433B (zh) 改进型高精度振荡器
CN113934257A (zh) 系统时间计算方法、装置、设备及存储介质
CN112636752A (zh) 一种振荡器装置及振荡器频率校准方法
US5546363A (en) Clock apparatus for forming time information for use in computer system

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