RTC不能使用喚醒pin,因此相關寄存器位不適用(如RTC_CR[WPS]、RTC_CR[WPE]、RTC_IER [WPON])。
此外,該裝置沒有集成電容,因此無法通過軟件配置可調諧電容器(包括在晶體振盪器中)。
該設備沒有內部32.768 kHz晶體振盪器。本章對32.768 kHz時鍾的所有引用均為RTC_CLK。有關可用時鍾源,請參見表27-9中的RTC時鍾計時。
屏幕剪輯的捕獲時間: 2019/3/9 10:19
RTC中的中斷在重置時啟用,如RTC_IER寄存器中所述。一旦在NVIC中啟用中斷,就可能發生中斷。
在啟用RTC之前,應向RTC提供軟件重置。
RTC不能在STOP和VLPS中生成多個觸發器(通過TRIGMUX)。例如,在累加器模式下觸發LPIT將不會工作,因為需要多個觸發器。對於其他電源模式,可以正常生成多個觸發器。
特性
RTC模塊的功能包括:
•32位秒計數器,具有翻轉保護和32位報警功能
•16位預調器,具有補償功能,可糾正0.12 ppm至3906 ppm之間的誤差
•選擇使用1khz LPO增加預調器(每時鍾邊緣增加32個預調器)
•寄存器寫保護
•鎖寄存器需要POR或軟件復位,以啟用寫訪問
•可配置1、2、4、8、16、32、64或128赫茲方波輸出,可選中斷
操作模式
RTC在所有低功耗模式下都能正常工作,並且可以產生中斷來退出任何低功耗模式。
屏幕剪輯的捕獲時間: 2019/3/9 10:38
寄存器定義
所有寄存器都必須使用32位寫訪問,所有寄存器訪問都會導致三種等待狀態。
非管理模式軟件對任何寄存器的寫訪問,當控制寄存器中的管理訪問位清除時,將以總線錯誤終止。
非管理模式軟件的讀取訪問正常完成。
寫入受鎖寄存器保護的寄存器不會生成總線錯誤,但是寫入將不會完成。
屏幕剪輯的捕獲時間: 2019/3/9 10:43
電源、時鍾和復位
RTC總是上電,在所有低功率模式下保持可用。
RTC的時間計數器默認時鍾是32.768 kHz。
或者,時間計數器可以由一個LPO 1khz時鍾計時,預調器將為每個LPO時鍾增加32。
上電復位信號初始化所有RTC寄存器到它們的默認狀態。軟件復位位也可以初始化所有的RTC寄存器。
振盪器控制
32.768kHZ的晶體振盪器在上電復位是禁用的,必須通過軟件啟用。
啟用晶體振盪器后,設置SR[TCE]或使用RTC外部的振盪器時鍾前等待振盪器啟動時間。
該晶體振盪器包括可調諧電容器,可通過軟件配置。除非振盪器被禁用,否則不要改變電容。
軟件復位
將1寫入CR[SWR]就相當於把RTC模塊重新上電復位。
CR[SWR]不受軟件復位的影響,必須由軟件清除。
supervisor access
當the control bit 置0時,只有supervisor mode軟件才能寫入RTC寄存器,non-supervisor mode軟件將產生總線錯誤。無論是管理員模式還是非管理員模式的軟件都可以讀取RTC寄存器。
Time counter
時間計數器由每秒鍾遞增一次的32位秒計數器和每32.768 kHz時鍾周期遞增一次的16位預分頻寄存器組成。還可以選擇使用一個1 kHz的LPO對預調度器進行計時,該LPO在每個時鍾周期內將預調度器增加32。
在計時計數器(秒或預調器)遞增時讀取計時計數器可能會由於讀取數據總線的同步而返回無效數據。如果軟件需要在預調器或秒計數器可以遞增時讀取它們,建議執行兩次讀取訪問,並且軟件驗證兩次讀取返回的數據是否相同。
只有當SR[TCE]置0,才可以寫秒寄存器和時間預分頻器。在寫入秒寄存器之前,始終要先寫入預計算寄存器,因為秒寄存器在預計算寄存器的第14位下降沿上遞增。
如果設置了SR[TCE]置1、SR[TIF]置0、SR[TOF]置0和32.768 kHz(或1 kHz)時鍾源,則時間預調寄存器增量。啟用振盪器后,等待振盪器啟動時間,然后再設置SR[TCE],使振盪器時鍾輸出的時間穩定下來。
如果時間秒寄存器溢出,那么SR[TOF]將被置1,時間預分配器寄存器將停止遞增。通過初始化時間秒寄存器來清除SR[TOF]。當SR[TOF]為1時,時間秒寄存器和時間預估寄存器讀取為零。SR[TIF]在POR和軟件重置上設置,並通過初始化時間秒寄存器來清除。每當設置SR[TIF]時,時間秒寄存器和時間預調寄存器讀取為零。
SR[TIF]在上電復位和軟件復位會被置1,通過初始化時間秒寄存器來清0。當SR[TIF]為1,時間秒寄存器和時間預調寄存器讀取為零。
補償
補償邏輯提供了一個准確和廣泛的補償范圍,可以糾正高達3906 ppm和低至0.12 ppm的錯誤。補償因子必須由外部計算到RTC,並由軟件提供給補償寄存器。RTC本身並不計算所需的補償量,通過1hz時鍾輸出到外部引腳以支持外部校准邏輯。
晶體補償可以通過使用固件和晶體特性來確定補償量。溫度補償可以由固件支持,固件定期通過ADC測量外部溫度,並根據指定晶體頻率隨溫度變化的查找表更新補償寄存器。
補償邏輯改變了預分配器寄存器溢出和增加時間秒計數器所需的32.768 kHz時鍾周期數。時間補償值用於調整-127到+128之間的時鍾周期數。
當預編程序寄存器等於0x3FFF時,從預編程序寄存器中添加或減去循環,然后遞增。補償區間用於調整使用時間補償值的頻率,即從每秒一次調整到每256秒一次。
如果上一個補償間隔已經過期,則對時間補償寄存器的更新將直到下一次時間秒寄存器增量時才生效。
當補償間隔設置為每秒一次以外的時間間隔時,補償應用於第一個秒間隔,其余秒間隔不接受補償。
通過將時間補償寄存器配置為零,可以禁用補償。
當預調器配置為使用1 kHz LPO遞增時,有效補償值除以32,只能調整-4到+3之間的時鍾周期數。
Time alarm
時間報警寄存器(TAR)、SR[TAF]和IER[TAIE]允許RTC在預定義的時間生成中斷。32位TAR每次遞增都會與32位時間秒寄存器(TSR)進行比較。SR[TAF]將在TAR = TSR和TSR增量時置1。
通過寫TAR清除SR[TAF]。這通常是下一個報警值,盡管寫一個小於TSR的值,比如0,將阻止SR[TAF]再次設置。否則不能禁用SR[TAF],盡管它生成的中斷由IER[TAIE]啟用或禁用。
更新模式
控制寄存器(CR[UM])中的更新模式字段配置對時間計數器Enable (SR[TCE])字段的軟件寫訪問。當CR(嗯)是明確的,可以編寫SR (TCE)只有當LR (SRL)。當CR(嗯),SR (TCE)也可以寫當SR (TCE)是明確的或當SR (TIF)或SR (TOF)。這使得時間秒,預定標器寄存器初始化時時間是無效的,而防止時間秒,預定標器注冊動態改變。當
設置LR[SRL], CR[UM]對SR[TCE]沒有影響。
寄存器鎖
鎖寄存器(LR)可以用來阻止對某些寄存器的寫訪問,直到下一次POR或軟件重置。鎖定控制寄存器(CR)將禁用軟件重置。鎖定LR將阻止將來對LR的更新。
對鎖定寄存器的寫訪問將被忽略,並且不會生成總線錯誤。
中斷
RTC中斷在狀態標志和相應的中斷啟用位同時置1時被啟用。它總是在POR和軟件重置上被啟用。通過啟用特定於芯片的RTC時鍾門控制位,可以在芯片級啟用RTC中斷。RTC中斷可以用來喚醒芯片從任何低功耗模式。
RTC秒中斷是一個邊緣敏感的中斷,它有一個專用的中斷向量,每秒生成一次,不需要軟件開銷(沒有相應的狀態標志需要清除)。它在RTC中通過時間秒中斷啟用位啟用,在芯片級通過設置芯片特定的RTC時鍾門控制位啟用。秒中斷的頻率默認為1hz,但是可以將其配置為每2、4、8、16、32、64或128 Hz觸發一次。
Time Prescaler Register
當時間計數器啟用時,只讀取TPR,並且每32.768 kHz時鍾周期遞增一次。
當設置SR[TOF](Time Overflow Flag)或SR[TIF](Time Invalid Flag)時,時間計數器讀取為零。當禁用時間計數器時,可以讀取或寫入TPR。當TPR的第14位(32767)從邏輯1轉換到邏輯0時,TSR[TSR]遞增。
由一組可編程計數器組成,分成兩個模塊。第一個模塊是RTC的預分頻模塊,它可編程產生最長為1秒的RTC時間基准TR_CLK。RTC的預分頻模塊包含了一個20位的可編程分頻器(RTC)TR_CLK 周期中RTC產生一個中斷(秒中斷)。第二個模塊是一個32位的可編程計數器,可被初始化為當前的系統時間。系統時間按TR_CLK周期累加並與存儲在RTC_ALR寄存器中的可編程時間相比較,如果RTC_CR控制寄存器中設置了相應允許位,比較匹配時,將產生一個鬧鍾中斷。