STM32F4系列RTC模块中文翻译
更新时间:2023-12-08 23:25:01 阅读量: 教育文库 文档下载
- stm32f4 rtc推荐度:
- 相关推荐
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
22 实时时钟(RTC)
22.1 简介
实时时钟是一个独立的BCD定时/计数器。可以提供一个时钟日历、两个可编程的闹钟中断以及一个有中断能力的周期性可编程的唤醒标志,RTC同时包括一个自动唤醒单元来管理低功耗模式。
RTC有两个32位寄存器,其中包括以BCD码表示的秒、分、时(12或24小时制)、日(Day of week)、日期(day of mouth)以及年。亚秒(sub-seconds)值也可以用BCD码表示。
自动执行28、29(闰年)、30、31天的补偿以及夏令时的补偿。
附加的32位寄存器包含可编程的闹铃亚秒、秒、分、小时、日(day of week)可日期(day of mouth).
数字校准器可以补偿任何晶振带来的偏差。
上电复位后所有的RTC寄存器都被保护,以防止可能的误写访问。
不管设备处于什么状态(运行模式(Run mode),低功耗模式(Low power mode)或者正在复位(under reset)),只要供电在工作范围内,RTC就不会停止。
22.2 RTC的主要特性
RTC单元的主要特性如下:
·拥有亚秒、秒、分、小时、星期、日期,月和年的日历。 ·软件编程的夏令补偿。
·两个有中断功能的可编程闹钟。闹钟可以通过任何日历的组合来触发。 ·自动唤醒单元产生一个周期标志来触发一个自动唤醒中断。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
·参考时钟选择:可以选择一个更精确的源秒时候来确保日历的精确度。 ·使用亚秒切换特性通过一个外部时钟来达到精确的同步。 ·可屏蔽中断/事件:
- 闹钟A - 闹钟B - 唤醒中断 - 时间戳 - 侵入检测
·数字校验电路(周期计数校正)
- 5 ppm的精度
- 0.95ppm的精度,获得一个几秒种的校准窗口 ·可保存事件的时间戳功能(一个事件) ·侵入事件
- 两个可配置滤波器和侵入上拉的侵入事件。
· 20个后备寄存器(80个字节).当一个选择的侵入检测事件发生时后备寄存器被复位。 · RTC复用功能输出(RTC_AFO)
- AFO_CALIB:512Hz或者1Hz时钟输出(时钟源选择外部低频LSE32768Hz),输出被路由至设备的RTC_AF1引脚。
- AFO_ALARM:闹钟A和闹钟B或唤醒(只可以选择一个),被路由至设备 RTC_AF1引脚。 ·RTC复用功能输入(RTC_AFI)
- AFI_TAMPER1:temper事件选择,路由至设备的RTC_AF1或RTC_AF2引脚。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
- AFI_TAMPER2:temper2事件选择,路由至设备的RTC_TEMPER2引脚。 - AFI_TIMSTAMP:时间戳事件选择,路由至设备RTC_AF1或RTC_AF2引脚。 RTC 结构图
22.3 RTC功能描述
22.3.1 时钟和分频器
时钟控制器在LSE时钟、LSI晶振时钟以及HSE时钟之间选择RTC时钟源。 可编程的分频器产生一个1Hz的时钟来驱动日历。为了降低功耗,分频器被分成了两个可编程分频器。
- 一个通过RTC_PRER寄存器的PREDIV_A位配置的7位异步分频器。
- 一个通过RTC_PRER寄存器的PREDIV_S位配置的15位同步分频器。
注意:当两个分频器都用到的时候,推荐配置异步分频器为比较大的值来降低功耗。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
异步分频器设置为128,同步分频器设置位256,就可以通过使用32.768kHz的LSE来获得1Hz(ck_spre)的内部时钟频率。
分频系数最小为1最大为222.
这就相当于最小的输入频率大约为1MHz。 Fck_spre可以通过下面的公式得到:
fCK_SPRE ? fRTCCLK
(PREVID_S ? 1) ?(PREDIV_A ? 1)ck_spre时钟既可以用作更新日历也可以用作16位唤醒自动重装计时器的时基,16位自动重装定时器也可以使用4位可编程异步分频器分频的RTCCLK时钟。
22.3.2 实时时钟和日历
RTC日历时间和日期寄存器可以通过与PCLK1(APB1时钟)同步的影子寄存器来访问。为了不等待同步时间,他们也可以被直接访问。
· RTC_SSR 亚秒(subseconds) · RTC_TR 星期的天(time) · RTC_DR 日期(date)
每两个RTCCLK周期,当前日历值就会被复制到影子寄存器中,并且RTC_ISR寄存器中的RSF位会被置位。复制行为在停机或待机模式下不执行。当退出这些模式时,影子寄存器会在两个RTCCLK周期后被更新。
当读日历的寄存器时会访问影子寄存器,如果设置了RTC_CR寄存器中的BYPSHAD控制位时,就能够直接读日历寄存器。默认此位是清零的,所以访问时通过影子寄存器来完成的。
当在BYPSHAD = 0时访问RTC_SSR、RTC_TR或者RTC_DR寄存器时,APB时钟的频率要至少是RTC时钟的7倍。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
影子寄存器通过系统复位来复位。
22.3.3 可编程闹钟
RTC单元提供两个可编程的闹钟,闹钟A和闹钟B。
可编程的闹钟功能通过设置RTC_CR寄存器中的ALRAE和ALRBE位来使能。当日历的亚秒、秒、分、小时、日期和天与可编程寄存器RTC_ALRMASSR/RTC_ALRMAR和RTC_ALRMBSSR/RTC_ALRMBR相应的值相等时会置位ALRAF和ALRBF标志。每一个日历区域可以通过寄存器RTC_ALRMAR和RTC_ALRMBR中的MSKx位以及
RTC_ALRMASSR和RTC_ALRMBSSR中的MASKSSx位来单独的选中。闹钟中断可以通过设置RTC_CR寄存器中的ALRAIE和ALRBIE位来使能。
闹钟A和闹钟B(如果通过RTC_CR寄存器中的OSEL位使能)可以被路由至
AFO_ALARM输出。AFO_ALARM可以通过寄存器RTC_CR寄存器中的POL位来选择输出极性。
警告:如果秒域被选中(RTC_APRMAR或者RTC_APRMBR中的MSK0位复位),通过寄存器RTC)PRER寄存器设置的同步分频器分频值必须至少为3,以确保正确的行为。
22.3.4 周期自动唤醒
周期唤醒标志通过一个16位可编程自动重装减计数器来产生。唤醒时间范围可以扩展到17位。
唤醒功能通过设置RTC_CR寄存器中的WUTE位来使能。 唤醒定时器的时钟输入可以是:
· 经过2、4、8或16分频的RTC时钟。
当RTCCLK是LSE(32768)时,允许配置唤醒中断周期从122us到32s,分辨率 可以低到61us。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
· ck_spre(通常是1Hz的内部时钟)
当ck_spre的频率是1Hz,就可以获得1s到大约36个小时的唤醒事件,分辨率是 1秒。这么大的可编程的范围可以分为2部分: - 当WUCKSEL[2:1] = 10时,范围是1s到18小时
- 当WUCKSEL[2:1] = 11时,范围是18小时到36小时。在这里,16位计数器的 值会被再加上216。当初始化序列完成之后,定时器开始减计数。当唤醒功能使能
时候,在低功耗模式下减计数依然在进行。当计数到0时,RTC_CR寄存器中的 WUTF位将会被置位,唤醒计数器会自动装载重装载值(RTC_WUTR寄存器值)。 WUTF标志必须软件清除。
当通过设置RTC_CR2寄存器中的WUTE位使能周期唤醒中断后,中断可以使设备退出低功耗模式。
假如复用输出已经通过设置RTC_CR寄存器的OSEL位使能,则周期唤醒标志可以被路由至AFO_ALARM输出。AFO_ALARM的极性可以通过RTC_CR寄存器的POL位来设置。
系统复位,以及低功耗模式对唤醒定时器没有影响。
22.3.5 RTC初始化和配置
RTC寄存器的访问
RTC寄存器都是32位寄存器。除了在BYPSHAD = 0时执行日历影子寄存器的读操作之外APB总线访问RTC寄存器会引入两个等待状态。
RTC寄存器写保护
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
上电复位之后,所有的RTC寄存器都是写保护的,通过向写保护寄存器(RTC_WPR)写一个关键字可以使能对RTC寄存器的写访问。
下面的步骤是解锁除RTC_ISR[13:8],RTC_TAFCR和RTC_BKPxR之外的所有RTC寄存器所必须的。
1. 写0xCA到RTC_WPR寄存器 2. 写0x53到RTC_WPR寄存器
写一个错误的关键字将会是写保护重新起作用。 系统复位对此保护机制不起作用。
日历初始化和配置
为了初始化时间和日期的值,包括时间格式和分频器配置,需要执行以下步骤: 1. 置位RTC_ISR寄存器中的INIT位以进入初始化模式,在这个模式下日历计数器 会停止并且其值可被更新。
2. 查询RTC_ISR寄存器的INITF位。如果INITF被设置为1则已经进入了初始化 阶段。大概会花费2个RTCCLK时钟周期(由于时钟同步)。
3. 为了给计数器产生1Hz的时钟,先配置同步分频器因子,然后在配置异步分频器因 子。即使连个分频器只有一个要改变,也必须对TC_PRER寄存器执行两个独立的 写操作。
4. 向影子寄存器写入初始化时间和日期值(RTC_TR和RTC_DR),还要设置RTC_CR 寄存器中FMT位来配置时间格式(12或24小时制)。
5. 清除INIT位来退出初始化模式。日历计数值会自动装载,计数器则会在四个 RTCCLK时钟周期后重新计数。
当初始化步骤完成之后,日历将会开始计数。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
注意:
1. 系统复位之后,应用可以读RTC_ISR寄存器中INITS标志来检查日历是否已经被 初始化。如果标志为0,则日历从年在上电复位后被设置为初始化值之后没有再被 初始化。
2. 要在初始化后读日历的值,软件必须首先检测RTC_ISR寄存器中的RSF标志是不 是已经设置。 夏令时时间
夏令时间是通过RTC_CR寄存器的SUB1H,ADD1H和BKP位来管理的。
通过使用SUB1H或者ADD1H可以不通过初始化过程来将日历减少一个小时或者增加一个小时。
另外,可以使用BKP位来存储减少或增加的操作。
闹钟的编程
要编程或更新闹铃必须执行以下类似的过程:
1. 清除寄存器RTC_CR中的ALRAE或着ALRBE位来禁止闹铃A或者闹铃B。 2. 轮询ALRAWF或者ALRBWF直到标志置位,确保已经允许对闹铃寄存器的访问。 大概要耗时两个RTCCLK时钟周期(由于时钟同步)。
3. 编程闹钟A或者闹钟B寄存器(RTC_ALRMASSR / RTC_ALRMAR 或者 RTC_ALRMBSSR / RTC_ALRMBR)。
4. 置位寄存器RTC_CR中的ALRAE或者ALRBE位来重新使能闹钟A或者闹钟B。 注意:由于时钟同步的需要,对寄存器RTC_CR的每一次改变都会在2个RTCCLK时钟 后起作用。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
22.3.6 读日历
当BYPSHAD = 0时
要正确的读取RTC日历寄存器(RTC_SSR, RTC_TR and RTC_DR)的值,APB1的时钟频率(fPCLK1)必须等于或者7倍于RTC时钟频率(fRTCCLK)。这确保在同步机制下执行一个可靠的操作。
如果APB1的时钟频率低于7倍的RTC时钟频率,软件必须读取日历时间和日期寄存器两次。如果第二次读出的数据与第一次相同,就确保了读取数据的正确,否则就必须读第三次。在任何情况下,APB1的时钟频率都不能比RTC时钟频率低。
在每次日历寄存器复制到RTC_TR和RTC_DR影子寄存器后,RTC_ISR中的RSF位将置位。复制操作每两个RTCCLK周期执行一次。为了保证三个值的一致性,读RTC_SSR或者RTC_TR中的一个时将把日历值锁定在高次日历影子寄存器,直到RTC_DR被读取。为了防止软件在小于2个RTCCLK周期对日历进行读访问。在第一次日历读操作之后必须软件清除RSF位,然后必须等待直到RSF位再置位之后再去读RTC_SSR,RTC_TR和RTC_DR寄存器。
注意:
1. 在系统复位之后,软件必须等到RSF置位后才能读RTC_SSR,RTC_TR和RTC_DR 寄存器。系统复位甚至复位影子寄存器位初始值。
2. 初始化之后,软件必须等到RSF置位才能读RTC_SSR,RTC_TR和RTC_DR寄存器. 3. 时钟同步之后,软件必须等到RSF置位才能读RTC_SSR,RTC_TR和RTC_DR寄存 器.
当BYPSHAD = 1时
读日历寄存器可以通过日历计数器直接得到值,这样就不需要等待RSF位置位了。这在
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
退出低功耗模式时特别有用,因为影子寄存器在这些模式下并不更新。
当BYPSHAD位置1时,如果一个RTCCLK边沿发生在两个读寄存器操作之间,则不同的寄存器将可能不会和其他寄存器一致。另外,当在读操作的时候一个RTCCLK时钟的边沿发生可能会导致一个寄存器的值不正确。软件必须读两遍所有的寄存器,然后比较两次的值是否相同,以确保数据一致且正确。或者软件也可以只比较最小意义(least-significant,应该是DR和SSR)的两个日历寄存器的值。
注意:当BYPSHAD = 1时,读日历寄存器的指令需要多一个APB周期来完成。
22.3.7 重设置RTC
日历寄存器的影子寄存器(RTC_SSR, RTC_TR和 RTC_DR)和RTC状态寄存器可以通过所有可用的系统复位源来使其复位至默认值。
相反,以下寄存器只能通过上电复位来复位至默认值而系统复位没有影响:RTC当前日历寄存器,RTC控制寄存器(RTC_CR),预分频寄存器(RTC_PRER),RTC校准寄存器(RTC_CALIBR或者RTC_CALR),RTC移位寄存器(RTC_SHIFTR),RTC时间戳寄存器(RTC_TSSSR,RTC_TSTR和RTC_TSDR),RTC侵入和复用功能配置寄存器(RTC_TAFCR),RTC后备寄存器(RTC_BKPxR),唤醒定时寄存器(RTC_WUTR),闹钟A和闹钟B寄存器(RTC_ALRMASSR / RTC_ALRMAR and RTC_ALRMBSSR / RTC_ALRMBR)。
另外,系统复位时如果复位源和上电复位不一样,那么RTC将保持运行。当上电复位发生时,RTC停止并且所有的RTC寄存器被复位至他们的默认值。
22.3.8 RTC同步
RTC可以同步到一个频率低精度高的时钟上。读取亚秒域之后可以计算得到小频率时钟保持的时间和RTC时钟之间的精度偏差。RTC可以通过把时钟平移一秒的小数倍来消除这个
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
偏差。
RTC_SSR包含同步预分频器计数器的值。这就允许计算RTC保持的准确时间的分辨率低至1/(PREVID_S + 1)秒,所以分频率可以随着同步预分频器值(PREVID_S[14:0])的增加而得到改善。最大的分辨率的值可以设置为0x7FFF。
然而,为了保持分频后的频率为1Hz,增加同步分频系数就意味着要减少异步分频系数的值,这种情况下,异步预分频器的输出频率增加会增加RTC的动态功耗。
RTC可以使用RTC移位控制寄存器(RTC_SHIFTR)来做出细微的调整。写RTC_SHIFTR寄存器的值可以平移(延迟或者超前)时钟最高可到1S,分辨率为1 / (PREVID_S + 1)秒。平移操作包括增加SUBFS[14:0]的值到同步预分频器SS[15:0]:这样会延迟时钟。如果同时ADD1S位设置,结果将是增加1S同时减少1秒的小数倍,所以这样会超前时钟。
警告:在初始化移位操作之前,必须检查SS[15:0]位以确保不会溢出。
一旦写RTC_SHIFTR寄存器初始化移位操作之后,硬件会设置SHPF标志来指示一个移位操作被挂起。一旦移位操作完成,此标志会通过硬件清除。
警告:这个同步特性和参考时钟检测特性是不兼容的,当REFCKON = 1的时候固件不能写RTC_SHIFTR寄存器。
22.3.9 RTC参考时钟检测
参考时钟(50Hz或者60Hz)应该要比32.768KHz的LSE的精度要高。当参考时钟检测使能(RTC_CR寄存器的REFCLON = 1)后,将会被用于补偿不精确的日历更新时钟(1Hz)。
每一个1Hz时钟的边沿都要和最近的参考时钟的边沿进行比较。在多数情况下,两个时钟边沿是要正确的对齐的,当1Hz时钟由于LSE的不精确而出现偏离时,RTC平移1Hz时钟
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
一点以使后来的1Hz时钟是对齐的。因为有这种机制,日历可以变得和参考时钟一样精确。
如果参考时钟挂了,则日历就仅仅基于LSE进行更新。然后RTC用以ck_spre的边沿为中心的检测窗口等待参考时钟。
当参考时钟检测使能后,PREDIV_A和PREVID_S必须设置为默认值: · PREDIV_A = 0x007F · PREVID_S = 0x00FF
注意: 在等待模式下参考时钟是不可用的。
警告:参考时钟检测不能和粗调数字校准器结合使用:当REFCKON = 1的时候RTC_CALIBR必须保持在0x0000 0000。
22.3.10 RTC粗调数字校准器
RTC有两个数字校准模式:粗调和细调。
两种模式不能用在一起,必须在两者之间选择一个。
粗调数字校准可以用于通过增加(正调节)或屏蔽(负调节)异步分频器的时钟周期。 正负调节可以通过设置RTC_CALIBR寄存器中的DCS位为0或1来选择。
当正调节使能时(DCS = 0),每分钟(大约15360个ck_apre周期)将会增加2个ck_apre周期,持续2 * DC分钟。这会使日历更快的更新,调节的结果是使RTC时钟频率增加一点。
当负调节使能时(DCS = 1),每分钟(大约15360个ck_apre周期)将会减少1个ck_apre周期,持续2 * DC分钟。这会使日历更新减慢,调节的结果是使RTC时钟频率减少一些。
DC是通过寄存器RTC_CALIBR的DC[4:0]位来设置的。这些数字的范围是0到31,相当于时间间隔(2 * DC)范围为0到62.
粗调校准器只可以在初始化中配置,当INIT位清除的时候开始工作。整个调节周期持续64分钟,其中最开始的2 * DC分钟的时钟周期会按之前描述的方式修改。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
负校准可以以大约2ppm的精度来执行,正校准以大约4ppm的精度来执行。最大的校准范围是-63ppm到126ppm。
校准可以依LSE或者HSE时钟来执行。
警告: 如果PREDIV_A < 6,则数字校准可能不会正确工作。 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周期。
因此每调节一步则会在每125829120个RTCCLK周期(64min X 60s/min X 32768S-1)增加512或者减少256个晶振周期。就等于每调节一步+4.069ppm或者-2.035ppm。因此,调整精度是+10.5或者-5.27秒每月,整个校准范围从+5.45到-2.72分钟每月。
22.3.11 RTC细调数字校准
RTC频率可以在-487.1ppm到+488.5ppm的范围内以0.954ppm的分辨率进行校准。频率的修正是利用一系列小的调节(增加和/或减少单个的RTCCLK脉冲)实现的。
细调校验执行220个RTCCLK脉冲或者在输入频率为32768Hz时执行32秒。 细调校验寄存器(RTC_CALR)指定32秒中被屏蔽的RTCCLK时钟周期的个数: ·设置CALM[0]位为1将会正确的引起32秒中的1个脉冲被屏蔽。 ·设置CALM[1]为1增加2个脉冲被屏蔽。 ·设置CALM[2]为1增加4个脉冲被屏蔽。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
·一直到CALM[8]设置成1使得256个周期被屏蔽。
当CALM位允许RTC频率以合适的分辨率减少487.1ppm,CALP可以用于增加488.5ppm。设置CALP位为1则会在每211个RTCCLK周期增加一个额外的RTCCLK周期,这就意味着每32秒周期会增加512个时钟。
联合使用CALM和CALP位,在32秒周期内可以偏移(增加或减少)从-511到512个RTCCLK周期,转换成校准范围就是以0.954ppm的精度调整范围为:-487.1ppm到+488.5ppm。
计算有效频率FCAL和输入频率FRTCCLK之间的关系的公式如下: FCAL?FRTCCLK?(1? CALP?512?CALM) 202?CALM?CALP?512当REFDIV_A < 3时的校准
当异步预分频器值(RTC_PRER的PREDIV_A位)小于3的时候,CALP位不能设置为1。如果设置PREDIV_A位小于3时CALP位已经为1的时候,CALP位将会被忽略。
在PREDIV_A小于3的时候执行校准时,同步预分频器值应该减小以每秒加速8个RTCCLK时钟周期,相当于每32秒增加256个时钟周期。所以,只使用CALM位可以有效的增加255到256个时钟脉冲。
当使用标准32768Hz晶振,PREDIV_A等于1时(分频因子为2),PREDIV_S应该设置为16379而不是16383。另外一件令人感兴趣的事是当PREDIV_A等于0时,PREDIV_S应该设置为32759而不是32767.
如果PREDIV_S按照这种方式减小,则输入时钟与校准的有效时钟入下公式所示: FCAL = FRTCCLK x [ 1 + (256 - CALM) / (220 + CALM - 256) ]
在这种情况下,如果RTCCLK是精确的32768.00Hz的话,CALM[7:0]的正确设定是0x100(CALM范围的正中间)。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
验证RTC校准
RTC的精确度通过测量RTCCLK的精确频率值以及计算正确的CALM值和CALP值得到。一个可选的1Hz输出使应用可以测量和验证RTC精确度。
测量RTC的精确频率超过有限的时间间隔将会导致一个测量周期产生一个最高到2个RTCCLK时钟周期的测量误差,具体取决于数字校准周期是如何和测量周期进行对齐的。
然而,如果测量周期和校准周期一样长的话则可以消除测量误差。这种情况下,唯一的误差来源于数字校准的精度。
·默认情况下,校准周期是32秒。
使用这种模式在确保测量在0.477ppm内超过32秒的测量1Hz输出的精度。 ·RTC_CALR寄存器中的CALW16位可以设置为1以强制一个16秒的校验周期。 这种情况下,可以测量16秒内的RTC精度,最大误差是0.954ppm(0.5RTCCLK周期)。
然而,因为校准精度的下降,长时期的RTC精度也减少到0.954ppm:当CALW16设 置为1的时候CALM[0]位被固定。
·RTC_CALR寄存器中的CALM8位设置为1以强制一个8秒的校准周期。
这种情况下,可以测量8秒内的RTC精度,最大误差是1.907ppm(0.5RTCCLK周期)。 然而,因为校准精度的下降,长时期的RTC精度也减少到1.907ppm:当CALW8设
置为1的时候CALM[1:0]位被固定。 快速重校验
当RTC_ISR寄存器的INITF = 0时,校准寄存器(RTC_CALR)可以快速的更新。步骤如下:
1. 轮询RTC_ISR的RECALPF位,重校验挂起位。 2. 如果为0则写新值到RTC_CALR,RECALPF位自动置1。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
3. 在对RTC_CALR寄存器写操作完成后3个ck_apre周期内,新的校验值会起作用。
22.3.12 时间戳功能
设置RTC_CR寄存器的TSE位使能时间戳。
当TIMESTAMP复用功能映射的引脚上有选定的时间戳事件发生时,当前的日历值会被保存在时间戳寄存器(RTC_TSSSR,RTC_TSTR,RTC_TSDR)中。当一个时间戳事件发生时,寄存器RTC_ISR寄存器中的时间戳标志置位。
通过设置RTC_CR寄存器中TSIE位可以使能时间戳中断。
如果在时间戳标志已经置位的情况下选择新的时间戳事件,时间戳溢出标志(TSOVF)将会置位,时间戳寄存器(RTC_TSTR和RTC_TSDR)包含之前的事件。
注意:
1. 由于同步过程,TSF标志在时间戳事件发生后2个ck_apre周期置位。
2. 设置TSOVF时没有延迟。这就意味着当两个时间戳事件发生得很近时,TSOVF可 以在TSF依然是0的时候设置为1.所以,推荐在TSF置位之后再去查询TSOVF位。 如果一个时间戳事件发生在TSF位将要清零的时候,则TSF位和TSOVF位会同时设置。为了避免同时屏蔽一个时间戳事件的发生,应用必须在TSF位读取为1之后再去设置TSF为0.一个侵入事件可以产生一个时间戳记录。
时间戳复用功能
根据寄存器RTC_TAFCR中的TSINSEL位的值时间戳可以映射到RTC_AF1或者RTC_AF2上。当RTC_AF1用于侵入滤波模式时,RTC_AF2是不允许映射到时间戳事件的。
22.3.13 侵入检测
包含两个侵入检测输入,可以配置为边沿检测或者带滤波的电平检测。 RTC备份寄存器
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
备份寄存器包括20个32位寄存器,可以存储80个用户应用程序字节。这些寄存器在VDD电源断电以及VBAT电源上电的时候启用。在系统复位、上电复位或者设备从待机模式唤醒的时候不会复位备份寄存器。
备份寄存器在一个侵入检测事件发生的时候发生复位。 侵入检测初始化
每一个侵入检测输入和寄存器RTC_ISR2中的一个TAMP1F/TAMP2F标志相关联。每一个侵入检测输入可以通过正确地设置RTC_TAFCR寄存器中的TAMP1E/TAMP2E位来使能。
一个侵入检测时间复位所有的备份寄存器(RTC_BKPxR)。
通过设置寄存器RTC_TAFCR中的TAMPIE位可以使能侵入检测事件发生时的中断。 侵入事件的时间戳
TAMPTS设置为1的时候,任何侵入事件都会产生一个时间戳。所以,无论TSF位还是TSOVF位的置位都和普通的时间戳事件一样。受影响的侵入事件标志寄存器(TAMP1F,TAMP2F)会在TSF或者TSOVF置位的同时置位。
侵入输出的边沿检测
如果TAMPFLT位为00,根据位TAMPxTRG位的设置在TANPER引脚上检测到上升沿或者下降沿时产生一个侵入检测事件。当边沿检测选中的时候,内部的TAMPER输入的上拉寄存器是失效的。
警告:为了避免丢失侵入检测事件,将用于边沿检测事件与TAMPxE进行与运算来检测侵入检测事件,这样即使侵入事件发生在TAMPERx使能之前也同样是一个有效的侵入事件。
· 当TAMPxTRG = 0时:如果TAMPERx复用功能在侵入检测使能之前已经为高,则在
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
TAMPERx使能后将会立即产生一个侵入检测事件,尽管TAMPxE设置之后再TAMPERx引脚上并没有出现上升沿。
· 当TAMPxTRG = 1时:如果TAMPERx复用功能在侵入检测使能之前已经为低,则在TAMPERx使能后将会立即产生一个侵入检测事件,尽管TAMPxE设置之后再TAMPERx引脚上并没有出现下降沿。
在一个侵入事件检测到并被清除后,在重新编程备份寄存器之前TAMPERx复用功能应该禁止并且重新使能。这是为了预防在TAMPERx的值依然表示一个侵入检测的时候写备份寄存器。这相当于一个在TAMPERx复用功能上的电平电测。
注意:侵入检测在VDD掉电之后依然可用。为了避免产生对备份寄存器不希望的复位,TAMPER复用功能映射的引脚应该上拉或下拉到合适的电平。
带滤波器的电平检测侵入输入
在TAMPFLT为非0值得时候执行带滤波器的电平检测。如果连续2、4或者8次采样都检测到以TAMPxTRG位设置的电平则会产生一个侵入检测事件。
TAMPER输入在被采样之前是通过内部的上拉电阻预充电的,除非设置TAMPPUDIS位为1。充电周期由TAMPFREQ来决定,允许在侵入输入放一个大电容。
使用TAMPFREQ来决定对电平检测的采样频率以平衡侵入检测执行之间以及功耗。 TAMPER复用功能选择
TAMPER1可以依据寄存器RTC_TAFCR中的TAMP1INSEL位的值来选择映射到RTC_AF1(PC13)或者RTC_AF2(PI8)。
为了避免产生不希望的TAMPF,当修改TAMP1INSEL的值时TAMPE位必须清除。 TAMPER2复用功能映射到RTC_TAMPER2引脚。
22.3.14 校正时钟输出
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
当RTC_CR寄存器中的COE位置1的时候,会提供给RTC_CALIB设备输出一个参考时钟。如果RTC_CR中的COSEL位复位并且PREDIV_A = 0x7F,则RTCCALIB的频率是fRTCCLK/64.这就相当于在RTCCLK在32768Hz的时候会输出一个校准的512Hz的时钟。
RTC_CALIB输出并不是和寄存器RTC_CALIBR寄存中编程的校准值完全一致,RTC_CALIB的占空比并不规范:在下降沿的时候有轻微抖动。所以,推荐使用上升沿。
如果COSEL位置位并且PREDIV_S是一个非零256的倍数(PREDIV_S = 0xff),则RTC_CALIB的频率是fRTCCLK/(256 * (PREDIV_A + 1)).这相当于在RTCCLK的频率为32768Hz时,输出一个1Hz的时钟。
校准复用功能输出
当RTC_CR寄存器中的COE位为1的时候,校准复用功能(AFO_CALIB)输出映射到RTC_AF1。
22.3.15 闹铃输出
闹铃输出可以选择三个功能:ALRAF、ALRBF和WUTF。这些功能影响RTC_ISR寄存器中的对应的标志位。
寄存器RTC_CR中的OSEL[1:0]控制位用于在引脚RTC_AF1激活闹铃复用功能输出(AFO_ALARM),以及选择AFO_ALARM的输出的功能。
输出的极性由寄存器RTC_CR中的POL位来决定,所以当POL置1的时候相反的选择位输出。
闹铃复用功能输出
AFO_ALARM可以通过配置RTC_TAFCR寄存器汇总的ALARMOUTTYPE位来选择开漏输出还是推挽输出。
注意:1. 一旦AFO_ALARM使能,要比AFO_CALIB优先级高(在RTC_AF1引脚上COE
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
位被忽略)。
2. 当选择AFO_CALIB或者AFO_ALARM时,RTC_AF1自动配置为复用输出。
22.4 RTC和低功耗模式
Sleep:睡眠模式。对RTC无影响,RTC中断可以将设备从睡眠中唤醒。
Stop:停机模式。当RTC的时钟来源为LSE或者LSI是将会继续工作。RTC闹铃、RTC侵入事件、RTC时间戳事件以及RTC周期唤醒将使设备退出停机模式。
Standby:待机模式。停机模式。当RTC的时钟来源为LSE或者LSI是将会继续工作。RTC闹铃、RTC侵入事件、RTC时间戳事件以及RTC周期唤醒将使设备退出待机模式。
22.5 RTC 中断
所有的RTC中断都由外部中断(EXTI)控制器控制。 使能RTC闹铃中断
1. 配置并使能EXTI线17为中断模式并选择上升沿敏感。 2. 配置并使能NVIC中的RTC_Alarm的IRQ通道。 3. 配置RTC以产生RTC闹铃(Alarm A或Alarm B)。 使能RTC周期唤醒中断
1. 配置并使能EXTI线22为中断模式并选择上升沿敏感。 2. 配置并使能NVIC中的RTC_WKUP的IRQ通道。 3. 配置RTC以产生RTC唤醒事件。 使能RTC侵入中断
1. 配置并使能EXTI线21为中断模式并选择上升沿敏感。 2. 配置并使能NVIC中的TAMP_STAMP的IRQ通道。 3. 配置RTC来选择RTC侵入事件。
郑州轻工业学院 杨坤兴 STM32F4 实时时钟RTC 源文档RM0090 DOC ID 018909 Rev1
使能RTC时间戳中断
1. 配置并使能EXTI线21为中断模式并选择上升沿敏感。 2. 配置并使能NVIC中的TAMP_STAMP的IRQ通道。 3. 配置RTC来选择RTC侵入事件。
正在阅读:
STM32F4系列RTC模块中文翻译12-08
房地产销售的工作总结报告范本参考03-24
2016年复旦大学新闻学院715《营销管理》考研冲刺密押卷及答案04-26
构造地质学综合读图题(15道)08-15
海作文400字07-15
填充墙的砌筑规范 - 图文04-24
文博专题:中国古代金银器鉴赏30讲(下)11-24
吉首市载福路中压燃气管道工程施工方案09-18
面对自我的逃避作文800字06-24
思念如潮心情日记10-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 中文
- 模块
- 翻译
- STM32F4
- 系列
- RTC
- 学期教育专业本科生专业认同情况的调查研究--开题报告
- 《传播学教程》郭庆光- 大理学院成教在线- 首页
- 新医改下医疗卫生机构国有资产管理探讨
- 中南大学研究生学位论文答辩程序与要求
- 塑料制小雕塑品及其他装饰品(HS 392640)2015-2016俄罗斯(1769个)进口商排名 - 图文
- 该如何培训销售员
- 结合部编教材探究小学语文阅读思维训练方法-开题报告
- 职业沟通试题
- 新视野大学英语第三版读写教程第四册汉译英和完形填空答案
- VFP复习题
- 2018-公需课最新最全电子商务考试答案(保通过).docx
- 眼科复习题
- 计算机科学导论课本答案(完整版)
- ZigBee的OSAL机制
- 宜宾市家装行业企业名录305家
- 房屋建筑学 习题3
- 细说怎么实现企业高效经营管理
- 淋浴方案电热水器选型
- 第三章 跨国公司
- 数控铣床理论试题