我正在寻找一个成本x性能的方法,以校准微控制器RTC时钟基准(通常32.678kHz)。
我需要一种方法来找出参考时钟漂移,并通知它的微控制器,以便它可以计算和平稳的校正值。
我发现了阿特梅尔描述的这些有趣的方法。项目2.2.2使用1Hz参考信号间接测量似乎是迄今为止最合适的。不过,我仍然对其他方法持开放态度。
先谢谢大家。
发布于 2022-09-14 20:54:54
有几种选择:
一种低成本(但速度慢)的方法是两次连接一个单片机输入到一个GPIO输出的单板计算机(SBC),运行Linux并通过NTP同步它的时钟。在SBC上运行一个小程序,它切换GPIO输出,等待10**6秒(~ 11.574天),然后再次切换输出。您的MCU读取每个切换时间(以秒为单位)的RTC,并计算持续时间(d)之间的开始和停止。
校正偏移量(off,单位: ppm)然后:
off = (d / 10**6 - 1) * 10**6成本: SBC的成本,如树莓皮。
一个更快,但也便宜的选择是连接一个DCF77接收器(或类似的短波时间同步服务接收器,视您的区域而定),并使用它来计算您的MCU的RTC时钟锁定针(即k.a)的滴答数。SQW引脚( RTCOUT)在几分钟内完成。您可以更快地配置时钟频率,您需要观察的时间跨度越短(以获得精确的校准偏移)。
例如,当时钟锁定为2**15赫兹时,20到50分钟的测量周期就足够了(以消除时间信号中的误差、中断抖动等)。
然后,您可以通过以下方法计算校准偏移量(off,单位ppm):
off = (measured / expected - 1) * 10**6
where
measured = counted ticks on the clockout pin
expected = #DCF77_minutes * 60 * freq
freq = e.g. 2**15 Hz成本: DCF77接收器(或类似的)可以获得不到10欧元(到2022年),你甚至可以清空一个旧闹钟的DCF77模块。
注:如果您的时钟锁定频率为2**15 Hz,则您的MCU需要支持32位宽的计时器寄存器--或两个16个定时器寄存器的链接(例如,另一个计时器计数第一个计时器的溢出量,从而包含最重要的一半计时器)。
https://stackoverflow.com/questions/31525125
复制相似问题