STM32F4系列RTC模塊中文翻譯_第1頁
STM32F4系列RTC模塊中文翻譯_第2頁
STM32F4系列RTC模塊中文翻譯_第3頁
STM32F4系列RTC模塊中文翻譯_第4頁
STM32F4系列RTC模塊中文翻譯_第5頁
免費預覽已結束,剩余6頁可下載查看

付費下載

下載本文檔

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

文檔簡介

1、22實時時鐘(RTC)22.1簡介實時時鐘是一個獨立的BCD定時/計數(shù)器??梢蕴峁┮粋€時鐘日歷、兩個可編程的鬧鐘中斷以及一個有中斷能力的周期性可編程的喚醒標志,RTC同時包括一個自動喚醒單元來管理低功耗模式。RTC有兩個32位寄存器, 其中包括以BCD碼表示的秒、 分、 時(12或24小時制)、 日(Dayofweek)、日期(dayofmouth)以及年。亞秒(sub-seconds)值也可以用BCD碼表示。自動執(zhí)行28、29(閏年)、30、31天的補償以及夏令時的補償。附加的32位寄存器包含可編程的鬧鈴亞秒、秒、分、小時、日(dayofweek)可日期(dayofmouth).數(shù)字校準器可

2、以補償任何晶振帶來的偏差。上電復位后所有的RTC寄存器都被保護,以防止可能的誤寫訪問。不管設備處于什么狀態(tài)(運行模式(Runmode),低功耗模式(Lowpowermode)或者正在復位(underreset),只要供電在工作范圍內(nèi),RTC就不會停止。22.2 RTC的主要特性RTC單元的主要特性如下:-擁有亞秒、秒、分、小時、星期、日期,月和年的日歷。-軟件編程的夏令補償。-兩個有中斷功能的可編程鬧鐘。鬧鐘可以通過任何日歷的組合來觸發(fā)。-自動喚醒單元產(chǎn)生一個周期標志來觸發(fā)一個自動喚醒中斷。-參考時鐘選擇:可以選擇一個更精確的源秒時候來確保日歷的精確度。-使用亞秒切換特性通過一個外部時鐘來達到

3、精確的同步。-可屏蔽中斷/事件:-鬧鐘A-鬧鐘B-喚醒中斷-時間戳-侵入檢測1數(shù)字校驗電路(周期計數(shù)校正)2 5ppm的精度3 0.95ppm的精度,獲得一個幾秒種的校準窗口可保存事件的時間戳功能(一個事件)侵入事件-兩個可配置濾波器和侵入上拉的侵入事件。 20個后備寄存器(80個字節(jié)).當一個選擇的侵入檢測事件發(fā)生時后備寄存器被復位。RTC復用功能輸出(RTC_AFO)-AFO_CALIB:512Hz或者1Hz時鐘輸出(時鐘源選擇外部低頻LSE32768Hz),輸出被路由至設備的RTC_AF1弓I腳。-AFO_ALARM:鬧鐘A和鬧鐘B或喚醒(只可以選擇一個),被路由至設備RTC_AF1弓唧

4、。RTC復用功能輸入(RTC_AFI)1 AFI_TAMPER1:temper事件選擇,路由至設備的RTC_AF1或RTC_AF2引腳。2 AFI_TAMPER2:temper2事件選擇,路由至設備的RTC_TEMPER2弓I腳。3 AFI_TIMSTAMP:時間戳事件選擇,路由至設備RTC_AF1或RTC_AF2引腳。RTC結構圖Figure203.RTCblockdiagramFigure203.RTCblockdiagramMSi9Qa2V11.1.OnSTM32F4OXandSTM32F41xdevices,theRTC_AF1andRTC_AF2allemalefuncliofisa

5、reconnectedtoPC13andPte,respisSTM32F4OXandSTM32F41xdevices,theRTC_AF1andRTC_AF2allemalefuncliofisareconnectedtoPC13andPte,respisictive-ly.ictive-ly.22.3RTC功能描述1時鐘和分頻器時鐘控制器在LSE時鐘、LSI晶振時鐘以及HSE時鐘之間選擇RTC時鐘源??删幊痰姆诸l器產(chǎn)生一個1Hz的時鐘來驅(qū)動日歷。為了降低功耗,分頻器被分成了兩個可編程分頻器。-一個通過RTC_PRER寄存器的PREDIV_A位配置的7位異步分頻器。-一個通過RTC_PRER寄

6、存器的PREDIV_S位配置的15位同步分頻器。注意:當兩個分頻器都用到的時候,推薦配置異步分頻器為比較大的值來降低功耗。異步分頻器設置為128,同步分頻器設置位256,就可以通過使用32.768kHz的LSE來獲得1Hz(ck_spre)的內(nèi)部時鐘頻率。分頻系數(shù)最小為1最大為222.這就相當于最小的輸入頻率大約為1MHz。Fckspre可以通過下面的公式得到:cf_spiefRTCCLKfCK_SPRE=一(PREVID_S+1)X(PREDIV_A+1)ck_spre時鐘既可以用作更新日歷也可以用作16位喚醒自動重裝計時器的時基,16位自動重裝定時器也可以使用4位可編程異步分頻器分頻的RT

7、CCLK時鐘。1實時時鐘和日歷RTC日歷時間和日期寄存器可以通過與PCLK1(APB1時鐘)同步的影子寄存器來訪問。為了不等待同步時間,他們也可以被直接訪問。22RTC_SSR亞秒(subseconds)23 RTC_TR星期的天(time)24 RTC_DR日期(date)每兩個RTCCLK周期,當前日歷值就會被復制到影子寄存器中,并且RTC_ISR寄存器中的RSF位會被置位。復制行為在停機或待機模式下不執(zhí)行。當退出這些模式時,影子寄存器會在兩個RTCCLK周期后被更新。當讀日歷的寄存器時會訪問影子寄存器,如果設置了RTC_CR寄存器中的BYPSHAD控制位時,就能夠直接讀日歷寄存器。默認此

8、位是清零的,所以訪問時通過影子寄存器來完成的。當在BYPSHAD=0時訪問RTC_SSR、RTC_TR或者RTC_DR寄存器時,APB時鐘的頻率要至少是RTC時鐘的7倍。影子寄存器通過系統(tǒng)復位來復位。1可編程鬧鐘RTC單元提供兩個可編程的鬧鐘,鬧鐘A和鬧鐘B。可編程的鬧鐘功能通過設置RTC_CR寄存器中的ALRAE和ALRBE位來使能。當日歷的亞秒、秒、分、小時、日期和天與可編程寄存器RTC_ALRMASSR/RTC_ALRMAR和RTC_ALRMBSSR/RTC_ALRMBR相應的值相等時會置位ALRAF和ALRBF標志。每一個日歷區(qū)域可以通過寄存器RTC_ALRMAR和RTC_ALRMBR

9、中的MSKx位以及RTC_ALRMASSR和RTC_ALRMBSSR中的MASKSSx位來單獨的選中。鬧鐘中斷可以通過設置RTC_CR寄存器中的ALRAIE和ALRBIE位來使能。鬧鐘A和鬧鐘B(如果通過RTC_CR寄存器中的OSEL位使能)可以被路由至AFO_ALARM輸出AFO_ALARM可以通過寄存器RTC_CR寄存器中的POL位來選擇輸出極區(qū)。警告:如果秒域被選中(RTC_APRMAR或者RTC_APRMBR中的MSK0位復位),通過寄存器RTC)PRER寄存器設置的同步分頻器分頻值必須至少為3,以確保正確的行為。1周期自動喚醒周期喚醒標志通過一個16位可編程自動重裝減計數(shù)器來產(chǎn)生。喚

10、醒時間范圍可以擴展到17位。喚醒功能通過設置RTC_CR寄存器中的WUTE位來使能。喚醒定時器的時鐘輸入可以是:3.%2經(jīng)過2、4、8或16分頻的RTC時鐘。當RTCCLK是LSE (32768)時, 允許配置喚醒中斷周期從122us到32s,分辨率可以低到61us。4.%2ck_spre(通常是1Hz的內(nèi)部時鐘)當ck_spre的頻率是1Hz,就可以獲得1s到大約36個小時的喚醒事件,分辨率是1秒。這么大的可編程的范圍可以分為2部分:5.%2當WUCKSEL2:1=10時,范圍是1s到18小時6.%2當WUCKSEL2:1=11時,范圍是18小時到36小時。在這里,16位計數(shù)器的值會被再加上

11、216。當初始化序列完成之后,定時器開始減計數(shù)。當喚醒功能使能時候,在低功耗模式下減計數(shù)依然在進行。當計數(shù)到0時,RTC_CR寄存器中的WUTF位將會被置位,喚醒計數(shù)器會自動裝載重裝載值(RTC_WUTR寄存器值)。WUTF標志必須軟件清除。當通過設置RTC_CR2寄存器中的WUTE位使能周期喚醒中斷后,中斷可以使設備退出低功耗模式。假如復用輸出已經(jīng)通過設置RTC_CR寄存器的OSEL位使能,則周期喚醒標志可以被路由至AFO_ALARM輸出。AFO_ALARM的極性可以通過RTC_CR寄存器的POL位來設置。系統(tǒng)復位,以及低功耗模式對喚醒定時器沒有影響。1RTC初始化和配置RTC寄存器的訪問R

12、TC寄存器都是32位寄存器。除了在BYPSHAD=0時執(zhí)行日歷影子寄存器的讀操作之外APB總線訪問RTC寄存器會引入兩個等待狀態(tài)。RTC寄存器寫保護上電復位之后,所有的RTC寄存器都是寫保護的,通過向?qū)懕Wo寄存器(RTC_WPR)寫一個關鍵字可以使能對RTC寄存器的寫訪問。下面的步驟是解鎖除RTC_ISR13:8,RTC_TAFCR和RTC_BKPxR之外的所有RTC寄存器所必須的。13.%2.%3.寫0 xCA到RTC_WPR寄存器14.%2.%3.寫0 x53到RTC_WPR寄存器寫一個錯誤的關鍵字看會是寫保護重新起作用。系統(tǒng)復位對此保護機制不起作用。日歷初始化和配置為了初始化時間和日期的

13、值,包括時間格式和分頻器配置,需要執(zhí)行以下步驟:22.置位RTC_ISR寄存器中的INIT位以進入初始化模式,在這個模式下日歷計數(shù)器會停止并且其值可被更新。23.查詢RTC_ISR寄存器的INITF位。如果INITF被設置為1則已經(jīng)進入了初始化階段。大概會花費2個RTCCLK時鐘周期(由于時鐘同步)。24.為了給計數(shù)器產(chǎn)生1Hz的時鐘,先配置同步分頻器因子,然后在配置異步分頻器因子。即使連個分頻器只有一個要改變,也必須對TC_PRER寄存器執(zhí)行兩個獨立的寫操作。25.向影子寄存器寫入初始化時間和日期值(RTC_TR和RTC_DR),還要設置RTC_CR寄存器中FMT位來配置時間格式(12或24

14、小時制)。26.清除INIT位來退出初始化模式。日歷計數(shù)值會自動裝載,計數(shù)器則會在四個RTCCLK時鐘周期后重新計數(shù)。當初始化步驟完成之后,日歷將會開始計數(shù)。注意:4.%2.系統(tǒng)復位之后, 應用可以讀RTC_ISR寄存器中INITS標志來檢查日歷是否已經(jīng)被初始化。如果標志為0,則日歷從年在上電復位后被設置為初始化值之后沒有再被初始化。5.%2.要在初始化后讀日歷的值,軟件必須首先檢測RTC_ISR寄存器中的RSF標志是不是已經(jīng)設置。夏令時時間夏令時間是通過RTC_CR寄存器的SUB1H,ADD1H和BKP位來管理的。通過使用SUB1H或者ADD1H可以不通過初始化過程來將日歷減少一個小時或者增

15、加一個小時。另外,可以使用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_ALRMBR)。4.置位寄存器RTC_CR中的ALRAE或者ALRBE位來重新使能鬧鐘A或者1鐘B。注意:由于時鐘同步的需要,對寄存器RTC_CR的每一次改變

16、都會在2個RTCCLK時鐘后起作用。22.3.6讀日歷當BYPSHAD=0時要正確白讀取RTC日歷寄存器(RTC_SSR,RTC_TRandRTC_DR)的值,APB1的時鐘頻率(fPCLK1)必須等于或者7倍于RTC時鐘頻率(fRTCCLK)。這確保在同步機制下執(zhí)行一個可靠的操作。如果APB1的時鐘頻率低于7倍的RTC時鐘頻率, 軟件必須讀取日歷時間和日期寄存器兩次。 如果第二次讀出的數(shù)據(jù)與第一次相同,就確保了讀取數(shù)據(jù)的正確,否則就必須讀第三次。在任何情況下,APB1的時鐘頻率都不能比RTC時鐘頻率低。在每次日歷寄存器復制到RTC_TR和RTC_DR影子寄存器后,RTC_ISR中的RSF位將

17、置位。復制操作每兩個RTCCLK周期執(zhí)行一次。為了保證三個值的一致性,讀RTC_SSR或者RTC_TR中的一個時將把日歷值鎖定在高次日歷影子寄存器,直到RTC_DR被讀取。為了防止軟件在小于2個RTCCLK周期對日歷進行讀訪問。在第一次日歷讀操作之后必須軟件清除RSF位,然后必須等待直至ijRSF位再置位之后再去讀RTC_SSR,RTC_TR和RTC_DR寄存器。注意:1 .在系統(tǒng)復位之后,軟件必須等到RSF置位后才能讀RTC_SSR,RTC_TR和RTC_DR寄存器。系統(tǒng)復位甚至復位影子寄存器位初始值。2 .初始化之后,軟件必須等至ijRSF置位才能讀RTC_SSR,RTC_TR和RTC_D

18、R寄存器.3.時鐘同步之后,軟件必須等至ijRSF置位才能讀RTC_SSR,RTC_TR和RTC_DR寄存器.當BYPSHAD=1時讀日歷寄存器可以通過日歷計數(shù)器直接得到值,這樣就不需要等待RSF位置位了。這在退出低功耗模式時特別有用,因為影子寄存器在這些模式下并不更新。當BYPSHAD位置1時,如果一個RTCCLK邊沿發(fā)生在兩個讀寄存器操作之間,則不同的寄存器將可能不會和其他寄存器一致。另外,當在讀操作的時候一個RTCCLK時鐘的邊沿發(fā)生可能會導致一個寄存器的值不正確。軟件必須讀兩遍所有的寄存器,然后比較兩次的值是否相同,以確保數(shù)據(jù)一致且正確?;蛘哕浖部梢灾槐容^最小意義(least-sig

19、nificant,應該是DR和SSR)的兩個日歷寄存器的值。注意:當BYPSHAD=1時,讀日歷寄存器的指令需要多一個APB周期來完成。37重設置RTC日歷寄存器的影子寄存器(RTC_SSR,RTC_TR和RTC_DR)和RTC狀態(tài)寄存器可以通過所有可用的系統(tǒng)復位源來使其復位至默認值。相反,以下寄存器只能通過上電復位來復位至默認值而系統(tǒng)復位沒有影響:RTC當前日歷寄存器,RTC控制寄存器(RTC_CR),預分頻寄存器(RTC_PRER),RTC校準寄存器(RTC_CALIBR或者RTC_CALR),RTC移位寄存器(RTC_SHIFTR),RTC時間戳寄存器(RTC_TSSSR,RTC_TST

20、R和RTC_TSDR),RTC侵入和復用功能配置寄存器(RTC_TAFCR),RTC后備寄存器(RTC_BKPxR),喚醒定時寄存器(RTC_WUTR),鬧鐘A和鬧鐘B寄存器(RTC_ALRMASSR/RTC_ALRMARandRTC_ALRMBSSR/RTC_ALRMBR)。另外,系統(tǒng)復位時如果復位源和上電復位不一樣,那么RTC將保持運行。當上電復位發(fā)生時,RTC停止并且所有的RTC寄存器被復位至他們的默認值。38RTC同步RTC可以同步到一個頻率低精度高的時鐘上。讀取亞秒域之后可以計算得到小頻率時鐘保持的時間和RTC時鐘之間的精度偏差。RTC可以通過把時鐘平移一秒的小數(shù)倍來消除這個偏差。R

21、TC_SSR包含同步預分頻器計數(shù)器白值。這就允許計算RTC保持的準確時間的分辨率低至1/(PREVID_S+1)秒,所以分頻率可以隨著同步預分頻器值(PREVID_S14:0)的增加而得到改善。最大的分辨率的值可以設置為0X7FFF。然而,為了保持分頻后的頻率為1Hz,增加同步分頻系數(shù)就意味著要減少異步分頻系數(shù)的值,這種情況下,異步預分頻器的輸出頻率增加會增加RTC的動態(tài)功耗。RTC可以使用RTC移位控制寄存器(RTC_SHIFTR)來做出細微的調(diào)整。寫RTC_SHIFTR寄存器的值可以平移(延遲或者超前)時鐘最高可到1S,分辨率為1/(PREVID_S+1)秒。平移操作包括增加SUBFS14

22、:0的值到同步預分頻器SS15:0:這樣會延遲時鐘。如果同時ADD1S位設置,結果將是增加1S同時減少1秒的小數(shù)倍,所以這樣會超前時鐘。警告:在初始化移位操作之前,必須檢查SS15:0位以確保不會溢出。一旦寫RTC_SHIFTR寄存器初始化移位操作之后, 硬件會設置SHPF標志來指示一個移位操作被掛起。一旦移位操作完成,此標志會通過硬件清除。警告:這個同步特性和參考時鐘檢測特性是不兼容的,當REFCKON=1的時候固件不能寫RTC_SHIFTR寄存器。39RTC參考時鐘檢測參考時鐘(50Hz或者60Hz)應該要比32.768KHZ的LSE的精度要高。 當參考時鐘檢測使能(RTC_CR寄存器的R

23、EFCLON=1)后,將會被用于補償不精確的日歷更新時鐘(1Hz)。每一個1Hz時鐘的邊沿都要和最近的參考時鐘的邊沿進行比較。在多數(shù)情況下,兩個時鐘邊沿是要正確的對齊的,當1Hz時鐘由于LSE的不精確而出現(xiàn)偏離時,RTC平移1Hz時鐘一點以使后來的1Hz時鐘是對齊的。因為有這種機制,日歷可以變得和參考時鐘一樣精確。如果參考時鐘掛了,則日歷就僅僅基于LSE進行更新。然后RTC用以ck_spre的邊沿為中心的檢測窗口等待參考時鐘。當參考時鐘檢測使能后,PREDIV_A和PREVID_S必須設置為默認值:PREDIV_A=0X007FPREVID_S=0X00FF注意:在等待模式下參考時鐘是不可用的

24、。警告:參考時鐘檢測不能和粗調(diào)數(shù)字校準器結合使用:當REFCKON=1的時候RTC_CALIBR必須保持在0 x00000000。30RTC粗調(diào)數(shù)字校準器RTC有兩個數(shù)字校準模式:粗調(diào)和細調(diào)。兩種模式不能用在一起,必須在兩者之間選擇一個。粗調(diào)數(shù)字校準可以用于通過增加(正調(diào)節(jié))或屏蔽(負調(diào)節(jié))異步分頻器的時鐘周期。正負調(diào)節(jié)可以通過設置RTC_CALIBR寄存器中的DCS位為0或1來選擇。當正調(diào)節(jié)使能時(DCS=0),每分鐘(大約15360個ck_apre周期)將會增加2個ck_apre周期,持續(xù)2*DC分鐘。這會使日歷更快的更新,調(diào)節(jié)的結果是使RTC時鐘頻率增加一點。當負調(diào)節(jié)使能時(DCS=1)

25、,每分鐘(大約15360個ck_apre周期)將會減少1個ck_apre周期,持續(xù)2*DC分鐘。這會使日歷更新減慢,調(diào)節(jié)的結果是使RTC時鐘頻率減少一些。DC是通過寄存器RTC_CALIBR的DC4:0位來設置的。這些數(shù)字的范圍是0到31,相當于時間間隔(2*DC)范圍為0到62.粗調(diào)校準器只可以在初始化中配置,當INIT位清除的時候開始工作。整個調(diào)節(jié)周期持續(xù)64分鐘,其中最開始的2*DC分鐘的時鐘周期會按之前描述的方式修改。負校準可以以大約2Ppm的精度來執(zhí)行,正校準以大約4ppm的精度來執(zhí)行。最大的校準范圍是-63ppm至11126Ppm。校準可以依LSE或者HSE時鐘來執(zhí)行。警告:如果P

26、REDIV_A6,則數(shù)字校準可能不會正確工作。RTCCLK=32768Hz并且PREDIV_A+1=128的情況下面的描述都是基于假定ck_apre來源于LSE的32768Hz標準頻率并且分頻至512Hz同時PREDIV_A設置位127(默認值)。ck_spre時鐘只在校準的64分鐘的前2*DC分鐘中被修改。例如,當DC為1時,只有前兩分鐘被修改。這就意味著每一個64分鐘的周期的前2*DC分鐘,每一分鐘可能縮短256個RTCCLK或者增力口128個RTCCLK。每一個ck_apre周期表示128個RTCCLK周期。因此每調(diào)節(jié)一步則會在每125829120個RTCCLK周期(64minX60s/

27、minX32768S-1)增加512或者減少256個晶振周期。就等于每調(diào)節(jié)一步+4.069ppm或者-2.035Ppm。因此,調(diào)整精度是+10.5或者-5.27秒每月,整個校準范圍從+5.45到-2.72分鐘每月。31RTC細調(diào)數(shù)字校準RTC頻率可以在-487.1ppm到+488.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ù):設置CALM0位為1將會

28、正確的引起32秒中的1個脈沖被屏蔽。設置CALM1為1增加2個脈沖被屏蔽。設置CALM2為1增加4個脈沖被屏蔽。一直到CALM8設置成1使得256個周期被屏蔽。當CALM位允許RTC頻率以合適的分辨率減少487.1ppm,CALP可以用于增加488.5ppm。 設置CALP位為1則會在每211個RTCCLK周期增加一個額外的RTCCLK周期,這就意味著每32秒周期會增加512個時鐘。聯(lián)合使用CALM和CALP位,在32秒周期內(nèi)可以偏移(增加或減少)從-511到512個RTCCLK周期,轉換成校準范圍就是以0.954Ppm的精度調(diào)整范圍為:-487.1ppm到+488.5ppm。計算有效頻率FC

29、AL和輸入頻率FRTCCLK之間的關系的公式如下:CALP512-CALM_20zzz-)2CALM-CALP512當REFDIV_A3時的校準當異步預分頻器值(RTC_PRER的PREDIV_A位)小于3的時候,CALP位不能設置為1。如果設置PREDIV_A位小于3時CALP位已經(jīng)為1的時候,CALP位將會被忽略。在PREDIV_A小于3的時候執(zhí)行校準時,同步預分頻器值應該減小以每秒加速8個RTCCLK時鐘周期,相當于每32秒增加256個時鐘周期。所以,只使用CALM位可以有效的增加255至U256個時鐘脈沖。當使用標準32768Hz晶振,PREDIV_A等于1時(分頻因子為2),PRED

30、IV_S應該設置為16379而不是16383。另外一件令人感興趣的事是當PREDIV_A等于0時,PREDIV_S應該設置為32759而不是32767.如果PREDIV_S按照這種方式減小,則輸入時鐘與校準的有效時鐘入下公式所示:FCAL=FRTCCLKx1+(256-CALM)/(220+CALM-256)在這種情況下,如果RTCCLK是精確的32768.00Hz的話,CALM7:0的正確設定是0 x100(CALM范圍的正中間)。驗證RTC校準RTC的精確度通過測量RTCCLK的精確頻率值以及計算正確的CALM值和CALP值得到。一個可選的1Hz輸出使應用可以測量和驗證RTC精確度。測量R

31、TC的精確頻率超過有限的時間間隔將會導致一個測量周期產(chǎn)生一個最高到2個RTCCLK時鐘周期的測量誤差,具體取決于數(shù)字校準周期是如何和測量周期進行對齊的。然而,如果測量周期和校準周期一樣長的話則可以消除測量誤差。這種情況下,唯一的誤差來源于數(shù)字校準的精度。默認情況下,校準周期是32秒。使用這種模式在確保測量在0.477ppm內(nèi)超過32秒的測量1Hz輸出的精度。RTC_CALR寄存器中的CALW16位可以設置為1以強制一個16秒的校驗周期。這種情況下,可以測量16秒內(nèi)的RTC精度,最大誤差是0.954Ppm(0.5RTCCLK周期)。然而,因為校準精度的下降,長時期的RTC精度也減少到0.954P

32、pm:當CALW16設FCAL=FRTCCLK(1置為1的時候CALM0位被固定。RTC_CALR寄存器中的CALM8位設置為1以強制一個8秒的校準周期。這種情況下,可以測量8秒內(nèi)的RTC精度,最大誤差是1.907Ppm(0.5RTCCLK周期)。然而,因為校準精度的下降,長時期的RTC精度也減少到1.907Ppm:當CALW8設置為1的時候CALM1:0位被固定??焖僦匦r灝擱TC_ISR寄存器的INITF=0時,校準寄存器(RTC_CALR)可以快速的更新。步驟如下:.輪詢RTC_ISR的RECALPF位,重校驗掛起位。.如果為0則寫新值到RTC_CALR,RECALPF位自動置1。.在對

33、RTC_CALR寄存器寫操作完成后3個ck_apre周期內(nèi),新的校驗值會起作用。2.3.12時間戳功能設置RTC_CR寄存器的TSE位使能時間戳。當TIMESTAMP復用功能映射的引腳上有選定的時間戳事件發(fā)生時,當前的日歷值會被保存在時間戳寄存器(RTC_TSSSR,RTC_TSTR,RTC_TSDR)中。當一個時間戳事件發(fā)生時,寄存器RTC_ISR寄存器中的時間戳標志置位。通過設置RTC_CR寄存器中TSIE位可以使能時間戳中斷。如果在時間戳標志已經(jīng)置位的情況下選擇新的時間戳事件,時間戳溢出標志(TSOVF)將會置位,時間戳寄存器(RTC_TSTR和RTC_TSDR)包含之前的事件。注意:.

34、由于同步過程,TSF標志在時間戳事件發(fā)生后2個ck_apre周期置位。.設置TSOVF時沒有延遲。這就意味著當兩個時間戳事件發(fā)生得很近時,TSOVF可以在TSF依然是0的時候設置為1.所以,推薦在TSF置位之后再去查詢TSOVF位。如果一個時間戳事件發(fā)生在TSF位將要清零的時候,則TSF位和TSOVF位會同時設置。為了避免同時屏蔽一個時間戳事件的發(fā)生,應用必須在TSF位讀取為1之后再去設置TSF為0.一個侵入事件可以產(chǎn)生一個時間戳記錄。時間戳復用功能根據(jù)寄存器RTC_TAFCR中的TSINSEL位的值時間戳可以映射到RTC_AF1或者RTC_AF2上。當RTC_AF1用于侵入濾波模式時,RTC

35、_AF2是不允許映射到時間戳事件的。5b987dcc-Numbered_d4c5728b-f3e7-4246-86de-b64752e7d0001f-Numbered_b65de210-f375-420d-ac0f-7692a41f254d-侵入檢測包含兩個侵入檢測輸入,可以配置為邊沿檢測或者帶濾波的電平檢測。RTC備份寄存器備份寄存器包括20個32位寄存器,可以存儲80個用戶應用程序字節(jié)。這些寄存器在VDD電源斷電以及VBAT電源上電的時候啟用。在系統(tǒng)復位、上電復位或者設備從待機模式喚醒的時候不會復位備份寄存器。備份寄存器在一個侵入檢測事件發(fā)生的時候發(fā)生復位。侵入檢測初始化每一個侵入檢測輸入

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

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

38、為低,則在TAMPERx使能后將會立即產(chǎn)生一個侵入檢測事件,盡管TAMPxE設置之后再TAMPERx引腳上并沒有出現(xiàn)下降沿。在一個侵入事件檢測到并被清除后,在重新編程備份寄存器之前TAMPERx復用功能應該禁止并且重新使能。這是為了預防在TAMPERx的值依然表示一個侵入檢測的時候?qū)憘浞菁拇嫫鳌_@相當于一個在TAMPERx復用功能上的電平電測。注意:侵入檢測在VDD掉電之后依然可用。為了避免產(chǎn)生對備份寄存器不希望的復位,TAMPER復用功能映射的引腳應該上拉或下拉到合適的電平。帶濾波器的電平檢測侵入輸入在TAMPFLT為非0值得時候執(zhí)行帶濾波器的電平檢測。如果連續(xù)2、4或者8次采樣都檢測到以T

39、AMPxTRG位設置的電平則會產(chǎn)生一個侵入檢測事件。TAMPER輸入在被采樣之前是通過內(nèi)部的上拉電阻預充電的,除非設置TAMPPUDIS位為1。充電周期由TAMPFREQ來決定,允許在侵入輸入放一個大電容。使用TAMPFREQ來決定對電平檢測的采樣頻率以平衡侵入檢測執(zhí)行之間以及功耗。TAMPER復用功能選擇TAMPER1可以依據(jù)寄存器RTC_TAFCR中的TAMP1INSEL位的值來選擇映射到RTC_AF1(PC13)或者RTC_AF2(PI8)。為了避免產(chǎn)生不希望的TAMPF,當修改TAMP1INSEL的值時TAMPE位必須清除。TAMPER2復用功能映射至ijRTC_TAMPER2弓|腳。5b987dcc-Numbered_d4c5728b-f3e7-4246-86de-b64752e7d0001f-Numbered_b65de210-f375-420d-ac0f-7692a41f254d-校正時鐘輸出當RTC_CR寄存器中的COE位置1的時候,會提供給RTC_CALIB設備輸出一個參考時鐘。如果RTC_CR中的COSEL位復位并且PREDIV_A=0 x7F,貝URTCCALIB的頻率是fRTCCLK/64.這就相當于在RTCCL

溫馨提示

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

最新文檔

評論

0/150

提交評論