2021-09-02 基于HAL库的野火STM32F103ZE核心板RTC校准

在使用野火STM32F103ZE核心板进行调试时,发现RTC存在较大误差。默认GPS时间为标准时间,使用RTC秒中断每“秒”获取一次GPS时间,并将GPS时间和RTC时间同时输出,在RTC未校准情况下,运行24h后,结果如下:
2021-09-02 基于HAL库的野火STM32F103ZE核心板RTC校准_第1张图片
可见,未校准的RTC运行了24h之后,比GPS时间快了约7s。计算RTC误差为:
7 s 24 h × 3600 s / h × 1 0 6 ≈ 81 p p m {\cfrac{7s}{24h×3600s/h}}\times{10^{6}}\approx{81ppm} 24h×3600s/h7s×10681ppm
与官方给出的标称值还是存在较大的出入,因此,在对RTC精度要求相对严格的应用场景中,有必要对RTC进行校准。

官方文档AN2604给出的计算校准量步骤:

  1. 使能低速外部振荡器(LSE)作为RTC时钟源,然后使能RTC时钟;
  2. 使能时钟64倍分频输出,这样就可以在ANTI_TEMP引脚上进行晶振频率的测量,这是通过将BKP_RTCCR中CCO位置位来实现;
  3. 计算晶振频率的PPM,通过查表找出最相近的校准值即可。

一、使能LSE为RTC时钟源
在STM32CubeMX的Clock Configuration选项卡中配置LSE作为RTC时钟源。
2021-09-02 基于HAL库的野火STM32F103ZE核心板RTC校准_第2张图片
二、测量TEMPER引脚输出波形频率
首先在RTC配置界面中,将RTC OUT选项选为“RTC Output on the Tamper pin”。
2021-09-02 基于HAL库的野火STM32F103ZE核心板RTC校准_第3张图片
然后将输出参数设置为“RTC clock with a frequency divided by 64 on the TAMPER pin”。
RTC输出参数配置
生成代码,烧写运行后,通过示波器观察TEMP引脚(PC13)输出的波形。
2021-09-02 基于HAL库的野火STM32F103ZE核心板RTC校准_第4张图片
三、计算ppm,查表得到校准值
由示波器可看出TEMPER引脚输出波形的频率为512.04H

你可能感兴趣的:(stm32)