STM32F4系列RTC模塊中文翻譯_第1頁
STM32F4系列RTC模塊中文翻譯_第2頁
STM32F4系列RTC模塊中文翻譯_第3頁
STM32F4系列RTC模塊中文翻譯_第4頁
STM32F4系列RTC模塊中文翻譯_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 鄭州輕工業(yè)學院 楊坤興 STM32F4 實時時鐘RTC 源文檔RM0090 DOC ID 018909 Rev122實時時鐘(RTC)22.1簡介實時時鐘是一個獨立的BCD定時/計數(shù)器??梢蕴峁┮粋€時鐘日歷、兩個可編程的鬧鐘中斷以及一個有中斷能力的周期性可編程的喚醒標志,RTC同時包括一個自動喚醒單元來管理低功耗模式。RTC有兩個32位寄存器,其中包括以BCD碼表示的秒、分、時(12或24小時制)、日(Day of week)、日期(day of mouth)以及年。亞秒(sub-seconds)值也可以用BCD碼表示。自動執(zhí)行28、29(閏年)、30、31天的補償以及夏令時的補償。附加的3

2、2位寄存器包含可編程的鬧鈴亞秒、秒、分、小時、日(day of week)可日期(day of mouth).數(shù)字校準器可以補償任何晶振帶來的偏差。上電復(fù)位后所有的RTC寄存器都被保護,以防止可能的誤寫訪問。不管設(shè)備處于什么狀態(tài)(運行模式(Run mode),低功耗模式(Low power mode)或者正在復(fù)位(under reset),只要供電在工作范圍內(nèi),RTC就不會停止。22.2RTC的主要特性RTC單元的主要特性如下:擁有亞秒、秒、分、小時、星期、日期,月和年的日歷。軟件編程的夏令補償。兩個有中斷功能的可編程鬧鐘。鬧鐘可以通過任何日歷的組合來觸發(fā)。自動喚醒單元產(chǎn)生一個周期標志來觸發(fā)一

3、個自動喚醒中斷。參考時鐘選擇:可以選擇一個更精確的源秒時候來確保日歷的精確度。使用亞秒切換特性通過一個外部時鐘來達到精確的同步??善帘沃袛?事件:- 鬧鐘A- 鬧鐘B- 喚醒中斷- 時間戳- 侵入檢測數(shù)字校驗電路(周期計數(shù)校正)- 5 ppm的精度- 0.95ppm的精度,獲得一個幾秒種的校準窗口可保存事件的時間戳功能(一個事件)侵入事件- 兩個可配置濾波器和侵入上拉的侵入事件。 20個后備寄存器(80個字節(jié)).當一個選擇的侵入檢測事件發(fā)生時后備寄存器被復(fù)位。 RTC復(fù)用功能輸出(RTC_AFO)- AFO_CALIB:512Hz或者1Hz時鐘輸出(時鐘源選擇外部低頻LSE32768Hz),輸

4、出被路由至設(shè)備的RTC_AF1引腳。- AFO_ALARM:鬧鐘A和鬧鐘B或喚醒(只可以選擇一個),被路由至設(shè)備 RTC_AF1引腳。RTC復(fù)用功能輸入(RTC_AFI)- AFI_TAMPER1:temper事件選擇,路由至設(shè)備的RTC_AF1或RTC_AF2引腳。- AFI_TAMPER2:temper2事件選擇,路由至設(shè)備的RTC_TEMPER2引腳。- AFI_TIMSTAMP:時間戳事件選擇,路由至設(shè)備RTC_AF1或RTC_AF2引腳。RTC 結(jié)構(gòu)圖22.3 RTC功能描述 22.3.1 時鐘和分頻器 時鐘控制器在LSE時鐘、LSI晶振時鐘以及HSE時鐘之間選擇RTC時鐘源。 可編

5、程的分頻器產(chǎn)生一個1Hz的時鐘來驅(qū)動日歷。為了降低功耗,分頻器被分成了兩個可編程分頻器。 - 一個通過RTC_PRER寄存器的PREDIV_A位配置的7位異步分頻器。 - 一個通過RTC_PRER寄存器的PREDIV_S位配置的15位同步分頻器。注意:當兩個分頻器都用到的時候,推薦配置異步分頻器為比較大的值來降低功耗。 異步分頻器設(shè)置為128,同步分頻器設(shè)置位256,就可以通過使用32.768kHz的LSE來獲得1Hz(ck_spre)的內(nèi)部時鐘頻率。分頻系數(shù)最小為1最大為222.這就相當于最小的輸入頻率大約為1MHz。Fck_spre可以通過下面的公式得到:ck_spre時鐘既可以用作更新日

6、歷也可以用作16位喚醒自動重裝計時器的時基,16位自動重裝定時器也可以使用4位可編程異步分頻器分頻的RTCCLK時鐘。22.3.2 實時時鐘和日歷RTC日歷時間和日期寄存器可以通過與PCLK1(APB1時鐘)同步的影子寄存器來訪問。為了不等待同步時間,他們也可以被直接訪問。 RTC_SSR 亞秒(subseconds) RTC_TR 星期的天(time) RTC_DR 日期(date)每兩個RTCCLK周期,當前日歷值就會被復(fù)制到影子寄存器中,并且RTC_ISR寄存器中的RSF位會被置位。復(fù)制行為在停機或待機模式下不執(zhí)行。當退出這些模式時,影子寄存器會在兩個RTCCLK周期后被更新。當讀日歷的

7、寄存器時會訪問影子寄存器,如果設(shè)置了RTC_CR寄存器中的BYPSHAD控制位時,就能夠直接讀日歷寄存器。默認此位是清零的,所以訪問時通過影子寄存器來完成的。當在BYPSHAD = 0時訪問RTC_SSR、RTC_TR或者RTC_DR寄存器時,APB時鐘的頻率要至少是RTC時鐘的7倍。影子寄存器通過系統(tǒng)復(fù)位來復(fù)位。22.3.3 可編程鬧鐘RTC單元提供兩個可編程的鬧鐘,鬧鐘A和鬧鐘B??删幊痰聂[鐘功能通過設(shè)置RTC_CR寄存器中的ALRAE和ALRBE位來使能。當日歷的亞秒、秒、分、小時、日期和天與可編程寄存器RTC_ALRMASSR/RTC_ALRMAR和RTC_ALRMBSSR/RTC_A

8、LRMBR相應(yīng)的值相等時會置位ALRAF和ALRBF標志。每一個日歷區(qū)域可以通過寄存器RTC_ALRMAR和RTC_ALRMBR中的MSKx位以及RTC_ALRMASSR和RTC_ALRMBSSR中的MASKSSx位來單獨的選中。鬧鐘中斷可以通過設(shè)置RTC_CR寄存器中的ALRAIE和ALRBIE位來使能。鬧鐘A和鬧鐘B(如果通過RTC_CR寄存器中的OSEL位使能)可以被路由至AFO_ALARM輸出。AFO_ALARM可以通過寄存器RTC_CR寄存器中的POL位來選擇輸出極性。警告:如果秒域被選中(RTC_APRMAR或者RTC_APRMBR中的MSK0位復(fù)位),通過寄存器RTC)PRER寄

9、存器設(shè)置的同步分頻器分頻值必須至少為3,以確保正確的行為。22.3.4 周期自動喚醒周期喚醒標志通過一個16位可編程自動重裝減計數(shù)器來產(chǎn)生。喚醒時間范圍可以擴展到17位。喚醒功能通過設(shè)置RTC_CR寄存器中的WUTE位來使能。喚醒定時器的時鐘輸入可以是: 經(jīng)過2、4、8或16分頻的RTC時鐘。 當RTCCLK是LSE(32768)時,允許配置喚醒中斷周期從122us到32s,分辨率 可以低到61us。 ck_spre(通常是1Hz的內(nèi)部時鐘) 當ck_spre的頻率是1Hz,就可以獲得1s到大約36個小時的喚醒事件,分辨率是 1秒。這么大的可編程的范圍可以分為2部分: - 當WUCKSEL2:

10、1 = 10時,范圍是1s到18小時 - 當WUCKSEL2:1 = 11時,范圍是18小時到36小時。在這里,16位計數(shù)器的 值會被再加上216。當初始化序列完成之后,定時器開始減計數(shù)。當喚醒功能使能 時候,在低功耗模式下減計數(shù)依然在進行。當計數(shù)到0時,RTC_CR寄存器中的 WUTF位將會被置位,喚醒計數(shù)器會自動裝載重裝載值(RTC_WUTR寄存器值)。WUTF標志必須軟件清除。當通過設(shè)置RTC_CR2寄存器中的WUTE位使能周期喚醒中斷后,中斷可以使設(shè)備退出低功耗模式。假如復(fù)用輸出已經(jīng)通過設(shè)置RTC_CR寄存器的OSEL位使能,則周期喚醒標志可以被路由至AFO_ALARM輸出。AFO_A

11、LARM的極性可以通過RTC_CR寄存器的POL位來設(shè)置。系統(tǒng)復(fù)位,以及低功耗模式對喚醒定時器沒有影響。22.3.5 RTC初始化和配置RTC寄存器的訪問RTC寄存器都是32位寄存器。除了在BYPSHAD = 0時執(zhí)行日歷影子寄存器的讀操作之外APB總線訪問RTC寄存器會引入兩個等待狀態(tài)。RTC寄存器寫保護上電復(fù)位之后,所有的RTC寄存器都是寫保護的,通過向?qū)懕Wo寄存器(RTC_WPR)寫一個關(guān)鍵字可以使能對RTC寄存器的寫訪問。下面的步驟是解鎖除RTC_ISR13:8,RTC_TAFCR和RTC_BKPxR之外的所有RTC寄存器所必須的。1. 寫0xCA到RTC_WPR寄存器2. 寫0x53

12、到RTC_WPR寄存器寫一個錯誤的關(guān)鍵字將會是寫保護重新起作用。系統(tǒng)復(fù)位對此保護機制不起作用。日歷初始化和配置為了初始化時間和日期的值,包括時間格式和分頻器配置,需要執(zhí)行以下步驟:1. 置位RTC_ISR寄存器中的INIT位以進入初始化模式,在這個模式下日歷計數(shù)器 會停止并且其值可被更新。2. 查詢RTC_ISR寄存器的INITF位。如果INITF被設(shè)置為1則已經(jīng)進入了初始化 階段。大概會花費2個RTCCLK時鐘周期(由于時鐘同步)。3. 為了給計數(shù)器產(chǎn)生1Hz的時鐘,先配置同步分頻器因子,然后在配置異步分頻器因 子。即使連個分頻器只有一個要改變,也必須對TC_PRER寄存器執(zhí)行兩個獨立的 寫

13、操作。4. 向影子寄存器寫入初始化時間和日期值(RTC_TR和RTC_DR),還要設(shè)置RTC_CR 寄存器中FMT位來配置時間格式(12或24小時制)。5. 清除INIT位來退出初始化模式。日歷計數(shù)值會自動裝載,計數(shù)器則會在四個 RTCCLK時鐘周期后重新計數(shù)。當初始化步驟完成之后,日歷將會開始計數(shù)。注意:1. 系統(tǒng)復(fù)位之后,應(yīng)用可以讀RTC_ISR寄存器中INITS標志來檢查日歷是否已經(jīng)被 初始化。如果標志為0,則日歷從年在上電復(fù)位后被設(shè)置為初始化值之后沒有再被 初始化。2. 要在初始化后讀日歷的值,軟件必須首先檢測RTC_ISR寄存器中的RSF標志是不 是已經(jīng)設(shè)置。夏令時時間夏令時間是通過

14、RTC_CR寄存器的SUB1H,ADD1H和BKP位來管理的。通過使用SUB1H或者ADD1H可以不通過初始化過程來將日歷減少一個小時或者增加一個小時。另外,可以使用BKP位來存儲減少或增加的操作。鬧鐘的編程要編程或更新鬧鈴必須執(zhí)行以下類似的過程:1. 清除寄存器RTC_CR中的ALRAE或著ALRBE位來禁止鬧鈴A或者鬧鈴B。2. 輪詢ALRAWF或者ALRBWF直到標志置位,確保已經(jīng)允許對鬧鈴寄存器的訪問。 大概要耗時兩個RTCCLK時鐘周期(由于時鐘同步)。3. 編程鬧鐘A或者鬧鐘B寄存器(RTC_ALRMASSR / RTC_ALRMAR 或者 RTC_ALRMBSSR / RTC_A

15、LRMBR)。4. 置位寄存器RTC_CR中的ALRAE或者ALRBE位來重新使能鬧鐘A或者鬧鐘B。注意:由于時鐘同步的需要,對寄存器RTC_CR的每一次改變都會在2個RTCCLK時鐘 后起作用。22.3.6 讀日歷當BYPSHAD = 0時要正確的讀取RTC日歷寄存器(RTC_SSR, RTC_TR and RTC_DR)的值,APB1的時鐘頻率(fPCLK1)必須等于或者7倍于RTC時鐘頻率(fRTCCLK)。這確保在同步機制下執(zhí)行一個可靠的操作。如果APB1的時鐘頻率低于7倍的RTC時鐘頻率,軟件必須讀取日歷時間和日期寄存器兩次。如果第二次讀出的數(shù)據(jù)與第一次相同,就確保了讀取數(shù)據(jù)的正確,

16、否則就必須讀第三次。在任何情況下,APB1的時鐘頻率都不能比RTC時鐘頻率低。在每次日歷寄存器復(fù)制到RTC_TR和RTC_DR影子寄存器后,RTC_ISR中的RSF位將置位。復(fù)制操作每兩個RTCCLK周期執(zhí)行一次。為了保證三個值的一致性,讀RTC_SSR或者RTC_TR中的一個時將把日歷值鎖定在高次日歷影子寄存器,直到RTC_DR被讀取。為了防止軟件在小于2個RTCCLK周期對日歷進行讀訪問。在第一次日歷讀操作之后必須軟件清除RSF位,然后必須等待直到RSF位再置位之后再去讀RTC_SSR,RTC_TR和RTC_DR寄存器。注意:1. 在系統(tǒng)復(fù)位之后,軟件必須等到RSF置位后才能讀RTC_SS

17、R,RTC_TR和RTC_DR 寄存器。系統(tǒng)復(fù)位甚至復(fù)位影子寄存器位初始值。2. 初始化之后,軟件必須等到RSF置位才能讀RTC_SSR,RTC_TR和RTC_DR寄存器.3. 時鐘同步之后,軟件必須等到RSF置位才能讀RTC_SSR,RTC_TR和RTC_DR寄存 器.當BYPSHAD = 1時讀日歷寄存器可以通過日歷計數(shù)器直接得到值,這樣就不需要等待RSF位置位了。這在退出低功耗模式時特別有用,因為影子寄存器在這些模式下并不更新。當BYPSHAD位置1時,如果一個RTCCLK邊沿發(fā)生在兩個讀寄存器操作之間,則不同的寄存器將可能不會和其他寄存器一致。另外,當在讀操作的時候一個RTCCLK時鐘

18、的邊沿發(fā)生可能會導(dǎo)致一個寄存器的值不正確。軟件必須讀兩遍所有的寄存器,然后比較兩次的值是否相同,以確保數(shù)據(jù)一致且正確?;蛘哕浖部梢灾槐容^最小意義(least-significant,應(yīng)該是DR和SSR)的兩個日歷寄存器的值。注意:當BYPSHAD = 1時,讀日歷寄存器的指令需要多一個APB周期來完成。22.3.7 重設(shè)置RTC日歷寄存器的影子寄存器(RTC_SSR, RTC_TR和 RTC_DR)和RTC狀態(tài)寄存器可以通過所有可用的系統(tǒng)復(fù)位源來使其復(fù)位至默認值。相反,以下寄存器只能通過上電復(fù)位來復(fù)位至默認值而系統(tǒng)復(fù)位沒有影響:RTC當前日歷寄存器,RTC控制寄存器(RTC_CR),預(yù)分頻寄

19、存器(RTC_PRER),RTC校準寄存器(RTC_CALIBR或者RTC_CALR),RTC移位寄存器(RTC_SHIFTR),RTC時間戳寄存器(RTC_TSSSR,RTC_TSTR和RTC_TSDR),RTC侵入和復(fù)用功能配置寄存器(RTC_TAFCR),RTC后備寄存器(RTC_BKPxR),喚醒定時寄存器(RTC_WUTR),鬧鐘A和鬧鐘B寄存器(RTC_ALRMASSR / RTC_ALRMAR and RTC_ALRMBSSR / RTC_ALRMBR)。另外,系統(tǒng)復(fù)位時如果復(fù)位源和上電復(fù)位不一樣,那么RTC將保持運行。當上電復(fù)位發(fā)生時,RTC停止并且所有的RTC寄存器被復(fù)位至他

20、們的默認值。22.3.8 RTC同步RTC可以同步到一個頻率低精度高的時鐘上。讀取亞秒域之后可以計算得到小頻率時鐘保持的時間和RTC時鐘之間的精度偏差。RTC可以通過把時鐘平移一秒的小數(shù)倍來消除這個偏差。RTC_SSR包含同步預(yù)分頻器計數(shù)器的值。這就允許計算RTC保持的準確時間的分辨率低至1/(PREVID_S + 1)秒,所以分頻率可以隨著同步預(yù)分頻器值(PREVID_S14:0)的增加而得到改善。最大的分辨率的值可以設(shè)置為0x7FFF。然而,為了保持分頻后的頻率為1Hz,增加同步分頻系數(shù)就意味著要減少異步分頻系數(shù)的值,這種情況下,異步預(yù)分頻器的輸出頻率增加會增加RTC的動態(tài)功耗。RTC可以

21、使用RTC移位控制寄存器(RTC_SHIFTR)來做出細微的調(diào)整。寫RTC_SHIFTR寄存器的值可以平移(延遲或者超前)時鐘最高可到1S,分辨率為1 / (PREVID_S + 1)秒。平移操作包括增加SUBFS14:0的值到同步預(yù)分頻器SS15:0:這樣會延遲時鐘。如果同時ADD1S位設(shè)置,結(jié)果將是增加1S同時減少1秒的小數(shù)倍,所以這樣會超前時鐘。警告:在初始化移位操作之前,必須檢查SS15:0位以確保不會溢出。一旦寫RTC_SHIFTR寄存器初始化移位操作之后,硬件會設(shè)置SHPF標志來指示一個移位操作被掛起。一旦移位操作完成,此標志會通過硬件清除。警告:這個同步特性和參考時鐘檢測特性是不

22、兼容的,當REFCKON = 1的時候固件不能寫RTC_SHIFTR寄存器。22.3.9 RTC參考時鐘檢測參考時鐘(50Hz或者60Hz)應(yīng)該要比32.768KHz的LSE的精度要高。當參考時鐘檢測使能(RTC_CR寄存器的REFCLON = 1)后,將會被用于補償不精確的日歷更新時鐘(1Hz)。每一個1Hz時鐘的邊沿都要和最近的參考時鐘的邊沿進行比較。在多數(shù)情況下,兩個時鐘邊沿是要正確的對齊的,當1Hz時鐘由于LSE的不精確而出現(xiàn)偏離時,RTC平移1Hz時鐘一點以使后來的1Hz時鐘是對齊的。因為有這種機制,日歷可以變得和參考時鐘一樣精確。如果參考時鐘掛了,則日歷就僅僅基于LSE進行更新。然

23、后RTC用以ck_spre的邊沿為中心的檢測窗口等待參考時鐘。當參考時鐘檢測使能后,PREDIV_A和PREVID_S必須設(shè)置為默認值: PREDIV_A = 0x007F PREVID_S = 0x00FF注意: 在等待模式下參考時鐘是不可用的。警告:參考時鐘檢測不能和粗調(diào)數(shù)字校準器結(jié)合使用:當REFCKON = 1的時候RTC_CALIBR必須保持在0x0000 0000。22.3.10 RTC粗調(diào)數(shù)字校準器RTC有兩個數(shù)字校準模式:粗調(diào)和細調(diào)。兩種模式不能用在一起,必須在兩者之間選擇一個。粗調(diào)數(shù)字校準可以用于通過增加(正調(diào)節(jié))或屏蔽(負調(diào)節(jié))異步分頻器的時鐘周期。正負調(diào)節(jié)可以通過設(shè)置RT

24、C_CALIBR寄存器中的DCS位為0或1來選擇。當正調(diào)節(jié)使能時(DCS = 0),每分鐘(大約15360個ck_apre周期)將會增加2個ck_apre周期,持續(xù)2 * DC分鐘。這會使日歷更快的更新,調(diào)節(jié)的結(jié)果是使RTC時鐘頻率增加一點。當負調(diào)節(jié)使能時(DCS = 1),每分鐘(大約15360個ck_apre周期)將會減少1個ck_apre周期,持續(xù)2 * DC分鐘。這會使日歷更新減慢,調(diào)節(jié)的結(jié)果是使RTC時鐘頻率減少一些。DC是通過寄存器RTC_CALIBR的DC4:0位來設(shè)置的。這些數(shù)字的范圍是0到31,相當于時間間隔(2 * DC)范圍為0到62.粗調(diào)校準器只可以在初始化中配置,當I

25、NIT位清除的時候開始工作。整個調(diào)節(jié)周期持續(xù)64分鐘,其中最開始的2 * DC分鐘的時鐘周期會按之前描述的方式修改。負校準可以以大約2ppm的精度來執(zhí)行,正校準以大約4ppm的精度來執(zhí)行。最大的校準范圍是-63ppm到126ppm。校準可以依LSE或者HSE時鐘來執(zhí)行。警告: 如果PREDIV_A 6,則數(shù)字校準可能不會正確工作。RTCCLK = 32768Hz并且PREDIV_A + 1 = 128的情況下面的描述都是基于假定ck_apre來源于LSE的32768Hz標準頻率并且分頻至512Hz同時PREDIV_A設(shè)置位127(默認值)。ck_spre時鐘只在校準的64分鐘的前2 * DC分

26、鐘中被修改。例如,當DC為1時,只有前兩分鐘被修改。這就意味著每一個64分鐘的周期的前2*DC分鐘,每一分鐘可能縮短256個RTCCLK或者增加128個RTCCLK。每一個ck_apre周期表示128個RTCCLK周期。因此每調(diào)節(jié)一步則會在每125829120個RTCCLK周期(64min X 60s/min X 32768S-1)增加512或者減少256個晶振周期。就等于每調(diào)節(jié)一步+4.069ppm或者-2.035ppm。因此,調(diào)整精度是+10.5或者-5.27秒每月,整個校準范圍從+5.45到-2.72分鐘每月。22.3.11 RTC細調(diào)數(shù)字校準RTC頻率可以在-487.1ppm到+488

27、.5ppm的范圍內(nèi)以0.954ppm的分辨率進行校準。頻率的修正是利用一系列小的調(diào)節(jié)(增加和/或減少單個的RTCCLK脈沖)實現(xiàn)的。細調(diào)校驗執(zhí)行220個RTCCLK脈沖或者在輸入頻率為32768Hz時執(zhí)行32秒。細調(diào)校驗寄存器(RTC_CALR)指定32秒中被屏蔽的RTCCLK時鐘周期的個數(shù):設(shè)置CALM0位為1將會正確的引起32秒中的1個脈沖被屏蔽。設(shè)置CALM1為1增加2個脈沖被屏蔽。設(shè)置CALM2為1增加4個脈沖被屏蔽。一直到CALM8設(shè)置成1使得256個周期被屏蔽。當CALM位允許RTC頻率以合適的分辨率減少487.1ppm,CALP可以用于增加488.5ppm。設(shè)置CALP位為1則會

28、在每211個RTCCLK周期增加一個額外的RTCCLK周期,這就意味著每32秒周期會增加512個時鐘。聯(lián)合使用CALM和CALP位,在32秒周期內(nèi)可以偏移(增加或減少)從-511到512個RTCCLK周期,轉(zhuǎn)換成校準范圍就是以0.954ppm的精度調(diào)整范圍為:-487.1ppm到+488.5ppm。計算有效頻率FCAL和輸入頻率FRTCCLK之間的關(guān)系的公式如下: 當REFDIV_A 3時的校準當異步預(yù)分頻器值(RTC_PRER的PREDIV_A位)小于3的時候,CALP位不能設(shè)置為1。如果設(shè)置PREDIV_A位小于3時CALP位已經(jīng)為1的時候,CALP位將會被忽略。在PREDIV_A小于3的

29、時候執(zhí)行校準時,同步預(yù)分頻器值應(yīng)該減小以每秒加速8個RTCCLK時鐘周期,相當于每32秒增加256個時鐘周期。所以,只使用CALM位可以有效的增加255到256個時鐘脈沖。當使用標準32768Hz晶振,PREDIV_A等于1時(分頻因子為2),PREDIV_S應(yīng)該設(shè)置為16379而不是16383。另外一件令人感興趣的事是當PREDIV_A等于0時,PREDIV_S應(yīng)該設(shè)置為32759而不是32767.如果PREDIV_S按照這種方式減小,則輸入時鐘與校準的有效時鐘入下公式所示:FCAL = FRTCCLK x 1 + (256 - CALM) / (220 + CALM - 256) 在這種情

30、況下,如果RTCCLK是精確的32768.00Hz的話,CALM7:0的正確設(shè)定是0x100(CALM范圍的正中間)。驗證RTC校準RTC的精確度通過測量RTCCLK的精確頻率值以及計算正確的CALM值和CALP值得到。一個可選的1Hz輸出使應(yīng)用可以測量和驗證RTC精確度。測量RTC的精確頻率超過有限的時間間隔將會導(dǎo)致一個測量周期產(chǎn)生一個最高到2個RTCCLK時鐘周期的測量誤差,具體取決于數(shù)字校準周期是如何和測量周期進行對齊的。然而,如果測量周期和校準周期一樣長的話則可以消除測量誤差。這種情況下,唯一的誤差來源于數(shù)字校準的精度。默認情況下,校準周期是32秒。 使用這種模式在確保測量在0.477

31、ppm內(nèi)超過32秒的測量1Hz輸出的精度。RTC_CALR寄存器中的CALW16位可以設(shè)置為1以強制一個16秒的校驗周期。 這種情況下,可以測量16秒內(nèi)的RTC精度,最大誤差是0.954ppm(0.5RTCCLK周期)。 然而,因為校準精度的下降,長時期的RTC精度也減少到0.954ppm:當CALW16設(shè) 置為1的時候CALM0位被固定。RTC_CALR寄存器中的CALM8位設(shè)置為1以強制一個8秒的校準周期。 這種情況下,可以測量8秒內(nèi)的RTC精度,最大誤差是1.907ppm(0.5RTCCLK周期)。 然而,因為校準精度的下降,長時期的RTC精度也減少到1.907ppm:當CALW8設(shè) 置

32、為1的時候CALM1:0位被固定??焖僦匦r灝擱TC_ISR寄存器的INITF = 0時,校準寄存器(RTC_CALR)可以快速的更新。步驟如下:1. 輪詢RTC_ISR的RECALPF位,重校驗掛起位。2. 如果為0則寫新值到RTC_CALR,RECALPF位自動置1。3. 在對RTC_CALR寄存器寫操作完成后3個ck_apre周期內(nèi),新的校驗值會起作用。22.3.12 時間戳功能設(shè)置RTC_CR寄存器的TSE位使能時間戳。當TIMESTAMP復(fù)用功能映射的引腳上有選定的時間戳事件發(fā)生時,當前的日歷值會被保存在時間戳寄存器(RTC_TSSSR,RTC_TSTR,RTC_TSDR)中。當一個

33、時間戳事件發(fā)生時,寄存器RTC_ISR寄存器中的時間戳標志置位。通過設(shè)置RTC_CR寄存器中TSIE位可以使能時間戳中斷。如果在時間戳標志已經(jīng)置位的情況下選擇新的時間戳事件,時間戳溢出標志(TSOVF)將會置位,時間戳寄存器(RTC_TSTR和RTC_TSDR)包含之前的事件。注意:1. 由于同步過程,TSF標志在時間戳事件發(fā)生后2個ck_apre周期置位。2. 設(shè)置TSOVF時沒有延遲。這就意味著當兩個時間戳事件發(fā)生得很近時,TSOVF可 以在TSF依然是0的時候設(shè)置為1.所以,推薦在TSF置位之后再去查詢TSOVF位。如果一個時間戳事件發(fā)生在TSF位將要清零的時候,則TSF位和TSOVF位

34、會同時設(shè)置。為了避免同時屏蔽一個時間戳事件的發(fā)生,應(yīng)用必須在TSF位讀取為1之后再去設(shè)置TSF為0.一個侵入事件可以產(chǎn)生一個時間戳記錄。時間戳復(fù)用功能根據(jù)寄存器RTC_TAFCR中的TSINSEL位的值時間戳可以映射到RTC_AF1或者RTC_AF2上。當RTC_AF1用于侵入濾波模式時,RTC_AF2是不允許映射到時間戳事件的。22.3.13 侵入檢測包含兩個侵入檢測輸入,可以配置為邊沿檢測或者帶濾波的電平檢測。RTC備份寄存器備份寄存器包括20個32位寄存器,可以存儲80個用戶應(yīng)用程序字節(jié)。這些寄存器在VDD電源斷電以及VBAT電源上電的時候啟用。在系統(tǒng)復(fù)位、上電復(fù)位或者設(shè)備從待機模式喚醒

35、的時候不會復(fù)位備份寄存器。備份寄存器在一個侵入檢測事件發(fā)生的時候發(fā)生復(fù)位。侵入檢測初始化每一個侵入檢測輸入和寄存器RTC_ISR2中的一個TAMP1F/TAMP2F標志相關(guān)聯(lián)。每一個侵入檢測輸入可以通過正確地設(shè)置RTC_TAFCR寄存器中的TAMP1E/TAMP2E位來使能。一個侵入檢測時間復(fù)位所有的備份寄存器(RTC_BKPxR)。通過設(shè)置寄存器RTC_TAFCR中的TAMPIE位可以使能侵入檢測事件發(fā)生時的中斷。侵入事件的時間戳TAMPTS設(shè)置為1的時候,任何侵入事件都會產(chǎn)生一個時間戳。所以,無論TSF位還是TSOVF位的置位都和普通的時間戳事件一樣。受影響的侵入事件標志寄存器(TAMP1

36、F,TAMP2F)會在TSF或者TSOVF置位的同時置位。侵入輸出的邊沿檢測如果TAMPFLT位為00,根據(jù)位TAMPxTRG位的設(shè)置在TANPER引腳上檢測到上升沿或者下降沿時產(chǎn)生一個侵入檢測事件。當邊沿檢測選中的時候,內(nèi)部的TAMPER輸入的上拉寄存器是失效的。警告:為了避免丟失侵入檢測事件,將用于邊沿檢測事件與TAMPxE進行與運算來檢測侵入檢測事件,這樣即使侵入事件發(fā)生在TAMPERx使能之前也同樣是一個有效的侵入事件。 當TAMPxTRG = 0時:如果TAMPERx復(fù)用功能在侵入檢測使能之前已經(jīng)為高,則在TAMPERx使能后將會立即產(chǎn)生一個侵入檢測事件,盡管TAMPxE設(shè)置之后再T

37、AMPERx引腳上并沒有出現(xiàn)上升沿。 當TAMPxTRG = 1時:如果TAMPERx復(fù)用功能在侵入檢測使能之前已經(jīng)為低,則在TAMPERx使能后將會立即產(chǎn)生一個侵入檢測事件,盡管TAMPxE設(shè)置之后再TAMPERx引腳上并沒有出現(xiàn)下降沿。在一個侵入事件檢測到并被清除后,在重新編程備份寄存器之前TAMPERx復(fù)用功能應(yīng)該禁止并且重新使能。這是為了預(yù)防在TAMPERx的值依然表示一個侵入檢測的時候?qū)憘浞菁拇嫫鳌_@相當于一個在TAMPERx復(fù)用功能上的電平電測。注意:侵入檢測在VDD掉電之后依然可用。為了避免產(chǎn)生對備份寄存器不希望的復(fù)位,TAMPER復(fù)用功能映射的引腳應(yīng)該上拉或下拉到合適的電平。帶

38、濾波器的電平檢測侵入輸入在TAMPFLT為非0值得時候執(zhí)行帶濾波器的電平檢測。如果連續(xù)2、4或者8次采樣都檢測到以TAMPxTRG位設(shè)置的電平則會產(chǎn)生一個侵入檢測事件。TAMPER輸入在被采樣之前是通過內(nèi)部的上拉電阻預(yù)充電的,除非設(shè)置TAMPPUDIS位為1。充電周期由TAMPFREQ來決定,允許在侵入輸入放一個大電容。使用TAMPFREQ來決定對電平檢測的采樣頻率以平衡侵入檢測執(zhí)行之間以及功耗。TAMPER復(fù)用功能選擇TAMPER1可以依據(jù)寄存器RTC_TAFCR中的TAMP1INSEL位的值來選擇映射到RTC_AF1(PC13)或者RTC_AF2(PI8)。為了避免產(chǎn)生不希望的TAMPF,當修改TAMP1INSEL的值時TAMPE位必須清除。TAMPER2復(fù)用功能映射到RTC_TAMPER2引腳。22.3.14 校正時鐘輸出當RTC_CR寄存器中的COE位置1的時候,會提供給RTC_CALIB設(shè)備輸出一個參考時鐘。如果RTC_CR中的COSEL位復(fù)位并且PREDIV_A = 0x7F,則RTCCALIB的頻率是fRTCCLK/64

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論