STM32學習筆記——RTC的亞秒值校准


STM32學習筆記——RTC的亞秒值校准

1. 使用GPS作為RTC

​ gps模塊配置出PPS脈沖,單片機使用pps中斷作為RTC校准的標准時鍾。解析GPS模塊輸出的RMC消息中的年月日時分秒的值,在pps中斷發生時候默認是沒秒的開始,也就是此時亞秒值應該為0。這時候和本地的RTC時鍾做對比,進行后續的校准工作。

2. RTC亞秒校准的相關寄存器

image
image
image

3. 校准流程

image

4. 亞秒校准函數記錄

​ 校准亞秒時使用HAL_RTCEx_SetSynchroShift函數。

​ 參數1:RTC_Handler:要校准的RTC

​ 參數2:ShiftAdd1S:如果這個值置為RTC_SHIFTADD1S_SET將會在RTC的RTC_TR中加一秒。置為RTC_SHIFTADD1S_RESET不會更改秒值

​ 參數3:ShiftSubFS:要調整的值占的RTC_SSR 的值。SSR寄存器是一個從256開始倒計時的寄存器。倒計時到0就相當於增加了一秒,這里將要調整的時間的 值計算出對應要調整的SSR的值后最終會增加到SSR寄存器中。如想要調慢0.5s:

image

​ 其中PREDIV_S是在配置RTC時候設置的![image-20220421170105647]image

​ 得出式子:0.5=SUBFS/(255+1) => SUBFS = 128 。這個值最后會增加到SSR寄存器,SSR寄存器就相當於多跑128后才會增加一秒,達到了延時的作用。向前校准時候要就需要先把S值增加一秒在將SSR的寄存器增加(1-增加的秒值)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM