什么是RTCRTC(实时时钟):实时时钟
RTC是一个独立的定时器。RTC模块有一个连续计数的计数器,可以在相应的软件配置下提供时钟日历的功能。修改计数器的值可以重置当前时间和日期。RTC还包含一个自动唤醒单元,用于管理低功耗模式。
在断电的情况下,RTC仍然可以独立运行。只要芯片的备用电源一直供电,RTC上的时间就会一直运行。
RTC的本质是一个断电后继续运行的定时器。从定时器的角度来说,它的功能相对于一般的定时器TIM外设来说是非常简单的,只有定时的功能(也可以触发中断)。但它的先进点在于断电后仍能正常运行。
两个32位寄存器包含二进制十进制(BCD)格式的秒、分、小时(12或24小时制)、星期几、日期、月份和年份。此外,还可以提供二进制格式的亚秒值。系统可以自动将一个月的天数补偿到28、29(闰年),30,31天。
上电复位后,所有RTC寄存器都受到保护,以防止可能的异常写访问。
无论设备状态如何(运行模式、低功耗模式或复位状态),只要电源电压保持在工作范围内,RTC就不会停止工作。
RCT特点:可编程预分频系数:分频系数高达220。 32位可编程计数器,可用于长期测量。两个独立的时钟:用于APB1接口的PCLK1和RTC时钟(RTC时钟的频率必须小于PCLK1时钟频率的四分之一)。可以选择以下三种RTC时钟源: HSE时钟除以128; LSE振荡器时钟; LSI振荡器时钟
两种独立的复位类型: APB1接口由系统复位; RTC内核(预分频器、闹钟、计数器和分频器)只能通过备份域复位。
3个特殊的可屏蔽中断: 1。闹钟中断,用于产生软件可编程闹钟中断。
2.第二中断,用于产生可编程的周期性中断信号(最长1秒)。
3.溢出中断,表示内部可编程计数器溢出并变为0。
RTC时钟源:三种不同的时钟源可用于驱动系统时钟(SYSCLK):
HSI振荡器时钟 HSE振荡器时钟 PLL时钟
这些器件有以下两个辅助时钟源:
40kHz低速内部RC,可用于通过程序选择驱动独立的看门狗和RTC。RTC用于自动将系统从关机/待机模式中唤醒。通过程序选择,32.768kHz低速外部晶振也可用于驱动RTC(RTCCLK)。
RTC原理框图
RTC的框图相对简单。这里我们把它分成两部分:
APB1接口:用于连接APB1总线。该单元还包含一组16位寄存器,可通过APB1总线读写。APB1接口由APB1总线时钟驱动,用于连接APB1总线。
RTC的相关寄存器(预分频值、计数器值和报警值)可以通过APB1接口访问。
RTC核心接口:由一组可编程计数器组成,分为两个主要模块。
第一个模块是RTC的预分频器模块,可以通过编程产生1秒RTC时间参考TR_CLK。RTC的预分频器模块包含一个20位可编程分频器(RTC预分频器)。如果在RTC_CR寄存器中设置了相应的使能位,RTC会在每个TR_CLK周期产生一个中断(第二个中断)。
第二个模块是32位可编程计数器(RTC_CNT),可以初始化为当前系统时间。32位时钟计数器可以记录4294967296秒,大约136年。作为一般应用,这就足够了。
RTC的具体过程:RTCCLK通过RTC_DIV进行预分频,RTC_PRL设置预分频系数,然后得到TR_CLK时钟信号。一般情况下,我们将其周期设置为1s,RTC_CNT计数器进行计数。如果将1970设置为0s,则可以通过当前时间的秒来计算当前时间。RTC_ALR是设置闹钟的时间。当RTC_CNT计数到RTC_ALR时,将产生计数中断。
RTC_Second是第二个中断,用于刷新时间,RTC_Overflow是溢出中断。当RTC报警控制RTC时钟的启动和关闭时,使用HSE分频时钟或LSI。当主电源VDD断电时,这两个时钟源都会受到影响,无法保证RTC的正常工作。因此,RTC一般采用低速外部时钟LSE,频率为实时时钟模块常用的32.768KHz。因为32768=2 ^ 15,分频容易实现。因此,它被广泛应用于RTC模块中。(当主电源VDD可用(待机)时,RTC还可以配置报警事件,使STM32退出待机模式。) 。
RTC复位过程除了RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器,所有系统寄存器都通过系统复位或电源复位异步复位。RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器只能通过备份域复位信号复位。
系统复位后,禁止访问备份寄存器和RCT,防止意外写入保护区(BKP)
读取RTC寄存器RTC内核完全独立于APB1接口,软件通过APB1接口访问RTC相关寄存器。然而,相关寄存器仅在RTC APB1时钟重新同步的RTC时钟上升沿更新。因此,软件在读取寄存器同步标志位(RTC_CRL的RSF位)之前,必须等待硬件置1。
配置寄存器必须设置RTC_CRL寄存器中的CNF位,以便RTC可以在写入RTC_PRL、RTC_CNT和RTC_ALR寄存器之前进入配置模式。
此外,RTC的任何寄存器都必须在前一次写操作之后写入。通过查询RTC_CR寄存器中的RTOFF状态位,可以判断RTC寄存器是否正在更新。仅当RTOFF状态位为1'可以写入RTC寄存器。审计福冈江
标签:RTC时钟器