絕大多數(shù)STM32系列里的RTC都具有亞秒【或稱子秒】計(jì)數(shù)單元。為了了解亞秒特性及功能,不妨先看RTC的功能框圖。本文中的有關(guān)截圖若無特別說明均來自STM32L4系列參考手冊。
RTC的時(shí)鐘源【RTCCLK】可以是LSE、LSI或者HSE/32,由RTCCLK最終變成日歷的秒脈沖驅(qū)動信號經(jīng)過了2次分頻。先經(jīng)過上圖中A處的異步分頻單元,默認(rèn)分頻系數(shù)是128,形成ck_apre時(shí)鐘,默認(rèn)情況下該時(shí)鐘頻率為256Hz;然后該時(shí)鐘脈沖來到圖中B處的同步分頻單元,默認(rèn)分頻系數(shù)為256,最終形成1Hz的秒脈沖【ck_spre】到日歷單元。關(guān)于兩分頻單元分頻系數(shù)的配置,通過對RTC_PRER寄存器的相關(guān)位編程實(shí)現(xiàn)。
其中異步分頻系數(shù)配置位【PREDIV_A】有7位,同步分頻系數(shù)【PREDIV_S】有15位。另外,同步分頻單元還包括采用向下計(jì)數(shù)方式的亞秒計(jì)數(shù)器,它基于異步分頻后的時(shí)鐘ck_apre進(jìn)行計(jì)數(shù),溢出時(shí)的重裝值等于PREDIV_S。一般來講,它的一個(gè)計(jì)數(shù)周期就是1s,其計(jì)數(shù)分辨率或精度為【1/(PREDIV_S+1)】秒。與之配套的亞秒寄存器,實(shí)時(shí)記錄亞秒計(jì)數(shù)器的計(jì)數(shù)值,有效數(shù)據(jù)位乃16位,比PREDIV_S多1位,多出的1位另有它用,此處不表。
顯然,當(dāng)有了這個(gè)亞秒計(jì)數(shù)器后,我們就可以獲得少于1秒的時(shí)間,或說秒的小數(shù)部分---亞秒,其精度由同步分頻系數(shù)PREDIV_S決定,某時(shí)刻的亞秒數(shù)通過亞秒寄存器獲取,對應(yīng)的亞秒時(shí)間可以通過上圖中第2個(gè)紅色方框內(nèi)的算式求得【提醒:亞秒計(jì)數(shù)器采用向下計(jì)數(shù)方式】。
關(guān)于RTC的亞秒概念及基本特性就介紹到這里。稍微小結(jié)下:
1、亞秒是對少于1秒的時(shí)間稱謂,范圍在0到1秒,并非固定的值;
2、亞秒精度【分辨率】可調(diào),由PREDIV_S參數(shù)決定,即【1/(PREDIV_S+1)】秒;
3、亞秒寄存器【RTC_SSR】實(shí)時(shí)記錄亞秒計(jì)數(shù)器的值,具體由SS[15:0]體現(xiàn);
4、亞秒時(shí)間通過算式(PREDIV_S-SS)/(PREDIV_S+1)求得;
我們知道RTC除了提供基本的日歷功能外,還有很好的低功耗特性,常用于低功耗的喚醒。有些低功耗應(yīng)用場合,雖然系統(tǒng)需要周期性的喚醒,但對喚醒周期的一致性要求往往并不嚴(yán)格、很多時(shí)候的周期值往往遠(yuǎn)達(dá)不到秒級,比方在10個(gè)毫秒上下、幾十個(gè)毫秒左右、100毫秒量級不等。像這種場合,我們可以考慮使用RTC的亞秒特性和ALARM功能實(shí)現(xiàn)周期性喚醒。
假設(shè)某STM32用戶有這樣的需求,他的系統(tǒng)涉及低功耗,需要周期性地做休眠與喚醒的切換。他希望系統(tǒng)進(jìn)入休眠后每隔50±20ms的時(shí)間范圍內(nèi)被喚醒,喚醒后做些基本的檢測處理后又進(jìn)入休眠。要實(shí)現(xiàn)這個(gè)需求,對于很多帶LPTIM的STM32系列也很方便實(shí)現(xiàn)。
-
STM32
+關(guān)注
關(guān)注
2270文章
10900瀏覽量
356045 -
RTC
+關(guān)注
關(guān)注
2文章
538瀏覽量
66543
發(fā)布評論請先 登錄
相關(guān)推薦
評論