BKP/RTC

BKP/RTC

1. BKP

1.1 BKP介绍

BKP(backup register,备份寄存器)。备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。它们处在备份域里,当VDD电源被切断,它们仍然由VBAT维持供电。

当系统在待机模式下被唤醒,或系统复位或电源复位时,它们也不会被复位。

此外,BKP控制寄存器用来管理侵入检测RTC校准功能。

复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问:

  • 通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟。

  • 电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。

1.2 侵入检测功能

当TAMPER引脚上的信号从0变成1或者从1变成0(取决于备份控制寄存器BKP_CR的TPAL位),会产生一个侵入检测事件。侵入检测事件将所有数据备份寄存器内容清除。

设置BKP_CSR寄存器的TPIE位为1,当检测到侵入事件时就会产生一个中断。

1.3 RTC校准

为方便测量,RTC时钟可以经64分频输出到侵入检测引脚TAMPER上。通过设置RTC校验寄存器(BKP_RTCCR)的CCO位来开启这一功能。

1.4 备份数据寄存器

用来存储用户数据。一共42个16位寄存器(大容量和互联型是42个,中小容量产品是20个),可以存84个字节的数据。

image-20250501161207943

2. RTC

2.1 RTC介绍

RTC(Real Time Clock,实时时钟)。是一个****掉电*后仍然可以继续*运行**独立定时器****。

RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 ,RTC还包含用于管理低功耗模式的自动唤醒单元。

RTC实质是一个掉电后还继续运行的定时器,从定时器的角度来看,相对于通用定时器TIM外设,它的功能十分简单,只有计时功能(也可以触发中断)。由于其有一个专门供电系统,因此掉电之后还可以正常运行。

VDD掉电后,由VBAT负责给后备区域供电。VBAT由电路中的纽扣电池来供电,一般的电路设计中都会加上备用电池。只要这个电池有电,则后备区域就一直会有电供应。

2.2 RTC主要特征

  • 可编程预分频器:分频因子高达 2^20
  • 用于长期测量的 32 位可编程计数器
  • 两个独立的时钟:用于 APB1 接口的 PCLK1 和 RTC 时钟(必须至少为比 PCLK1 时钟慢四倍)
  • RTC 时钟源可以是以下任何一种:
    • HSE 时钟除以 128
    • LSE 振荡器时钟
    • LSI 振荡器时钟
  • 两种独立的 reset 类型:
    • APB1 接口通过系统复位来复位
    • RTC 核心(预分频器、闹钟、计数器和分频器)只能通过备份重置域重置
  • 三条专用的可屏蔽中断线:
    • 报警中断:用于生成软件可编程报警中断。
    • 秒中断:用于生成具有可编程周期长度(最长 1 秒)。
    • 溢出中断:用于检测内部可编程计数器何时计数到零。

2.3 RTC功能框图

image-20250501161841960

2.3.1 RTC时钟源

image-20250501162230444

RTC有3路时钟来源:HSE(8MHz)/128,LSE(32.768KHz),LSI(40KHz)。其中,如果 使用HSE或LSI的话,当主电源掉电的话,这两个始终都会受到影响,RTC就无法正常工作。所以,一般的通用做法是使用****LSE****。2个原因:一是LSE不受主电源掉电的影响,二是它的频率是我们都是选择32768Hz,正好是2^15,分频容易实现。

2.3.2 APB1接口

用来和APB1总线相连。此单元还包含一组 16 位寄存器,可通过APB1总线对其进行读写操作。APB1接口由APB1总线时钟驱动,用来与APB1总线连接。

通过APB1接口可以访问RTC的相关寄存器(预分频值,计数器值,闹钟值)。

2.3.3 RTC预分频模块

RTC预分频模块属于后备区域,VDD掉电后,可以在VBAT下继续运行。包含了一个20位的可编程分频器(RTC预分频器)。它可编程产生 1 秒的 RTC 时间基准 TR_CLK。如果在RTC_CR寄存器中设置了相应的允许位,则在每个TR_CLK周期中RTC产生一个中断(秒中断)。

2.3.4 32位可编程计数器

这个模块也属于后备区域,是一个32位的可编程计数器,可被初始化为当前的系统时间。一个32位的时钟计数器,按秒钟计算,可以记录4294967296秒,约合136年左右。

2.3.5 中断

三个中断

  • 秒中断:每计时1s产生一次中断。

  • 计数器溢出中断。136年才会产生溢出。

  • RTC闹钟中断。RCT_CNT和RTC_ALR会比较相等,如果相等表示闹钟时间到,会产生闹钟中断。

2.4 配置过程

  1. 查询 RTOFF,等待其值变为 1。
  2. 设置 CNF 位为1,进入配置模式。
  3. 写操作一个或多个 RTC 寄存器。
  4. 清除 CNF 位,以退出配置模式。
  5. 查询 RTOFF,等待其值变为 1 以确认写操作已经完成。

仅当CNF标志位被清除时,写操作才能进行。这个过程至少需要3个RTCCLK周期。