什么是RTC
RTC (Real Time Clock):實(shí)時(shí)時(shí)鐘
RTC是個(gè)獨(dú)立的定時(shí)器。RTC模塊擁有一個(gè)連續(xù)計(jì)數(shù)的計(jì)數(shù)器,在相應(yīng)的軟件配置下,可以提供時(shí)鐘日歷的功能。修改計(jì)數(shù)器的值可以重新設(shè)置當(dāng)前時(shí)間和日期 RTC還包含用于管理低功耗模式的自動(dòng)喚醒單元。
在斷電情況下 RTC仍可以獨(dú)立運(yùn)行 只要芯片的備用電源一直供電,RTC上的時(shí)間會(huì)一直走。
RTC實(shí)質(zhì)是一個(gè)掉電后還繼續(xù)運(yùn)行的定時(shí)器,從定時(shí)器的角度來(lái)看,相對(duì)于通用定時(shí)器TIM外設(shè),它的功能十分簡(jiǎn)單,只有計(jì)時(shí)功能(也可以觸發(fā)中斷)。但其高級(jí)指出也就在于掉電之后還可以正常運(yùn)行。
兩個(gè) 32 位寄存器包含二進(jìn)碼十進(jìn)數(shù)格式 (BCD) 的秒、分鐘、小時(shí)( 12 或 24 小時(shí)制)、星期幾、日期、月份和年份。此外,還可提供二進(jìn)制格式的亞秒值。系統(tǒng)可以自動(dòng)將月份的天數(shù)補(bǔ)償為 28、29(閏年)、30 和 31 天。
上電復(fù)位后,所有RTC寄存器都會(huì)受到保護(hù),以防止可能的非正常寫(xiě)訪問(wèn)。
無(wú)論器件狀態(tài)如何(運(yùn)行模式、低功耗模式或處于復(fù)位狀態(tài)),只要電源電壓保持在工作范圍內(nèi),RTC使不會(huì)停止工作。
RCT特征:
● 可編程的預(yù)分頻系數(shù):分頻系數(shù)高為220。
● 32位的可編程計(jì)數(shù)器,可用于較長(zhǎng)時(shí)間段的測(cè)量。
● 2個(gè)分離的時(shí)鐘:用于APB1接口的PCLK1和RTC時(shí)鐘(RTC時(shí)鐘的頻率必須小于PCLK1時(shí)鐘 頻率的四分之一以上)。
● 可以選擇以下三種RTC的時(shí)鐘源:
● HSE時(shí)鐘除以128;
● LSE振蕩器時(shí)鐘;
● LSI振蕩器時(shí)鐘
● 2個(gè)獨(dú)立的復(fù)位類(lèi)型:
● APB1接口由系統(tǒng)復(fù)位;
● RTC核心(預(yù)分頻器、鬧鐘、計(jì)數(shù)器和分頻器)只能由后備域復(fù)位
● 3個(gè)專(zhuān)門(mén)的可屏蔽中斷:
● 1.鬧鐘中斷,用來(lái)產(chǎn)生一個(gè)軟件可編程的鬧鐘中斷。
● 2.秒中斷,用來(lái)產(chǎn)生一個(gè)可編程的周期性中斷信號(hào)(長(zhǎng)可達(dá)1秒)。
● 3.溢出中斷,指示內(nèi)部可編程計(jì)數(shù)器溢出并回轉(zhuǎn)為0的狀態(tài)。
RTC時(shí)鐘源:
三種不同的時(shí)鐘源可被用來(lái)驅(qū)動(dòng)系統(tǒng)時(shí)鐘(SYSCLK):
● HSI振蕩器時(shí)鐘
● HSE振蕩器時(shí)鐘
● PLL時(shí)鐘
這些設(shè)備有以下2種二級(jí)時(shí)鐘源:
● 40kHz低速內(nèi)部RC,可以用于驅(qū)動(dòng)獨(dú)立看門(mén)狗和通過(guò)程序選擇驅(qū)動(dòng)RTC。 RTC用于從停機(jī)/待機(jī)模式下自動(dòng)喚醒系統(tǒng)。
● 32.768kHz低速外部晶體也可用來(lái)通過(guò)程序選擇驅(qū)動(dòng)RTC(RTCCLK)。
RTC原理框圖

RTC時(shí)鐘的框圖還是比較簡(jiǎn)單的,這里我們把他分成 兩個(gè)部分:
APB1 接口:用來(lái)和 APB1 總線(xiàn)相連。 此單元還包含一組 16 位寄存器,可通過(guò) APB1 總線(xiàn)對(duì)其進(jìn)行讀寫(xiě)操作。APB1 接口由 APB1 總 線(xiàn)時(shí)鐘驅(qū)動(dòng),用來(lái)與 APB1 總線(xiàn)連接。
通過(guò)APB1接口可以訪問(wèn)RTC的相關(guān)寄存器(預(yù)分頻值,計(jì)數(shù)器值,鬧鐘值)。
RTC 核心接口:由一組可編程計(jì)數(shù)器組成,分成 兩個(gè)主要模塊 。

第一個(gè)模塊是 RTC 的 預(yù)分頻模塊,它可編程產(chǎn)生 1 秒的 RTC 時(shí)間基準(zhǔn) TR_CLK。RTC 的預(yù)分頻模塊包含了一個(gè) 20 位的可編程分頻器(RTC 預(yù)分頻器)。如果在 RTC_CR 寄存器中設(shè)置了相應(yīng)的允許位,則在每個(gè) TR_CLK 周期中 RTC 產(chǎn)生一個(gè)中斷(秒中斷)。

第二個(gè)模塊是一個(gè) 32 位的可編程計(jì)數(shù)器 (RTC_CNT),可被初始化為當(dāng)前的系統(tǒng)時(shí)間,一個(gè) 32 位的時(shí)鐘計(jì)數(shù)器,按秒鐘計(jì)算,可以記 錄 4294967296 秒,約合 136 年左右,作為一般應(yīng)用,這已經(jīng)是足夠了的。
RTC具體流程:
RTCCLK經(jīng)過(guò)RTC_DIV預(yù)分頻,RTC_PRL設(shè)置預(yù)分頻系數(shù),然后得到TR_CLK時(shí)鐘信號(hào),我們一般設(shè)置其周期為1s,RTC_CNT計(jì)數(shù)器計(jì)數(shù),假如1970設(shè)置為時(shí)間起點(diǎn)為0s,通過(guò)當(dāng)前時(shí)間的秒數(shù)計(jì)算得到當(dāng)前的時(shí)間。RTC_ALR是設(shè)置鬧鐘時(shí)間,RTC_CNT計(jì)數(shù)到RTC_ALR就會(huì)產(chǎn)生計(jì)數(shù)中斷,
RTC_Second為秒中斷,用于刷新時(shí)間,
RTC_Overflow是溢出中斷。
RTC Alarm 控制開(kāi)關(guān)機(jī)
RTC時(shí)鐘選擇
使用HSE分頻時(shí)鐘或者LSI的時(shí)候,在主電源VDD掉電的情況下,這兩個(gè)時(shí)鐘來(lái)源都會(huì)受到影響,因此沒(méi)法保證RTC正常工作.所以RTC一般都時(shí)鐘低速外部時(shí)鐘LSE,頻率為實(shí)時(shí)時(shí)鐘模塊中常用的32.768KHz,因?yàn)?2768 = 2^15,分頻容易實(shí)現(xiàn),所以被廣泛應(yīng)用到RTC模塊.(在主電源VDD有效的情況下(待機(jī)),RTC還可以配置鬧鐘事件使STM32退出待機(jī)模式).
RTC復(fù)位過(guò)程
除了RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器外,所有的系統(tǒng)寄存器都由系統(tǒng)復(fù)位或電源復(fù)位進(jìn)行異步復(fù)位。
RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器僅能通過(guò)備份域復(fù)位信號(hào)復(fù)位。
系統(tǒng)復(fù)位后,禁止訪問(wèn)后備寄存器和RCT,防止對(duì)后衛(wèi)區(qū)域(BKP)的意外寫(xiě)操作
讀RTC寄存器
RTC內(nèi)核完全獨(dú)立于APB1接口,軟件通過(guò)APB1接口對(duì)RTC相關(guān)寄存器訪問(wèn)。但是相關(guān)寄存器只在RTC APB1時(shí)鐘進(jìn)行重新同步的RTC時(shí)鐘的上升沿被更新。所以軟件必須先等待寄存器同步標(biāo)志位(RTC_CRL的RSF位)被硬件置1才讀。
配置RTC寄存器
必須設(shè)置RTC_CRL寄存器中的CNF位,使RTC進(jìn)入配置模式后,才能寫(xiě)入RTC_PRL、
RTC_CNT、RTC_ALR寄存器。
另外,對(duì)RTC任何寄存器的寫(xiě)操作,都必須在前一次寫(xiě)操作結(jié)束后進(jìn)行。可以通過(guò)查詢(xún)
RTC_CR寄存器中的RTOFF狀態(tài)位,判斷RTC寄存器是否處于更新中。僅當(dāng)RTOFF狀態(tài)位是’1’
時(shí),才可以寫(xiě)入RTC寄存器。
審核編輯:符乾江
-
嵌入式
+關(guān)注
關(guān)注
5198文章
20449瀏覽量
334048 -
RTC
+關(guān)注
關(guān)注
2文章
653瀏覽量
71811
發(fā)布評(píng)論請(qǐng)先 登錄
STM32 RTC實(shí)時(shí)時(shí)鐘(一)
STM32RTC實(shí)時(shí)時(shí)鐘實(shí)驗(yàn)講解,從入門(mén)到放棄 精選資料分享
RTC時(shí)鐘原理是什么
STM8單片機(jī)rtc時(shí)鐘代碼分享
STM32單片機(jī)RTC時(shí)鐘的使用方法及步驟
淺談RTC實(shí)時(shí)時(shí)鐘特征與原理
4位RTC時(shí)鐘開(kāi)源分享
STM32CubeMX-實(shí)時(shí)時(shí)鐘(RTC)
RTC時(shí)鐘與觸摸功能詳解(上)
RTC時(shí)鐘與觸摸功能詳解(下)
一文看懂RTC實(shí)時(shí)時(shí)鐘
RTC時(shí)鐘芯片+電池的應(yīng)用案例(一)
“耐高溫!”RTC時(shí)鐘芯片+電池的應(yīng)用案例(二)
RTC時(shí)鐘講解(一)
評(píng)論