BKP备寄存器
BKP简介
- BKP(Backup Registers)备份寄存器
- BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。但是如果VDD电源断开,VBAT也没有电,那就数据清零。因为BKP本质上时RAM存储器,没有掉电不丢失的能力。
- TAMPER引脚产生的侵入事件将所有备份寄存器内容清除
- RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲
- 存储RTC时钟校准寄存器
- 用户数据存储容量: 20字节(中容量和小容量)/ 84字节(大容量和互联型)
具体描述看参考手册第五章
BKP基本结构
橙色部分后备区域在待机时维持供电,依赖于硬件层面的独立电源设计:
- 备份电源域:微控制器(如 STM32 等)设有专门的后备电源域,后备区域(如 RTC 预分频器、计数器、闹钟寄存器等模块)接入该电源域。
- 独立供电来源:当系统进入待机模式,主电源(如 APB1 总线供电)关闭,但后备电源域由独立电源(如备用电池、超级电容或 VBAT 引脚供电)持续供电。这种设计确保 RTC 在待机期间仍能保持计时、计数等功能,避免时间信息丢失或计时中断。
1. 输入功能模块
- 电池供电(VBAT):通过外部电池或备用电源为模块供电,确保数据寄存器等关键区域在主电源断电时仍维持工作,保护数据不丢失。
- 侵入检测(TAMPER):接收外部侵入检测信号上升沿或者下降沿(TAMPER),监测是否存在非法物理侵入或特定触发事件,保障系统安全。
- 时钟输出(RTC):将内部处理的时钟信号输出至 RTC 模块,为实时时钟功能提供支持。
2. 核心寄存器模块
- 数据寄存器:包含多个 16 位寄存器(如 DR1 [15:0]、DR2 [15:0]…DR42 [15:0]),用于存储用户数据或配置参数。一个寄存器存两个字节,所以DR1~DR10就是20各字节,中小容量。其中,“大容量和互联型” 设备支持更多数据寄存器(如 DR42)。
- 控制与状态相关寄存器:
- 控制寄存器:用于配置模块工作模式、参数等。
- 状态寄存器:反馈模块当前工作状态(如中断、错误等)。
- RTC 时钟校准寄存器:对 RTC 时钟进行精度校准,确保计时准确性。
RTC实时时钟
RTC简介
- RTC(Real Time Clock)实时时钟
- RTC是一个独立的定时器,可为系统提供时钟和日历的功能
- RTC和时钟配置系统处于后备区域,系统复位时数据不清零,VDD(2.0~3.6V)断电后可借助VBAT(1.8~3.6V)供电继续走时
- 32位的可编程计数器,可对应Unix时间戳的秒计数器
- 20位的可编程预分频器,可适配不同频率的输入时钟
可选择三种RTC时钟源:
- HSE时钟除以128(通常为8MHz/128)
- LSE振荡器时钟(通常为32.768KHz) 主要选中这路
- LSI振荡器时钟(40KHz)
解释三种RTC时钟源:RCC时钟树
RTC框图
图 154 为简化的实时时钟(RTC)框图,主要展示 RTC 模块的核心架构与工作流程,包含以下关键部分:
1. 系统连接与供电机制
- APB1 总线与接口:通过 APB1 接口实现 RTC 模块与 APB1 总线的通信,用于配置和读取 RTC 寄存器数据,但待机时 APB1 接口不供电。
- 后备区域供电:图中灰色标注的 “后备区域”(如 RTC 预分频器、32 位计数器等)在待机时维持供电,确保 RTC 计时功能持续运行,不受主电源掉电影响。
2. RTC 核心功能模块
- RTC 预分频器:
- 包含重装载寄存器
RTC_PRL
和分频寄存器RTC_DIV
,对输入时钟RTCCLK
进行分频,生成计数器所需的时钟信号TR_CLK
,通过重装载机制更新分频参数。
- 包含重装载寄存器
- 32 位可编程计数器:
RTC_CNT
为核心计数器,对TR_CLK
计数,实现时间累加;RTC_ALR
为闹钟寄存器,存储闹钟设定值,与RTC_CNT
比较,匹配时产生RTC_Alarm
信号,触发闹钟事件。
- 控制与中断模块(RTC_CR):
- 处理中断标志(
SECF
秒中断标志、OWF
溢出标志、ALRF
闹钟标志)和中断使能(SECIE
、OWIE
、ALRIE
),汇总中断信号后接入 NVIC 中断控制器,实现中断响应。
- 处理中断标志(
3. 唤醒功能
RTC_Alarm
信号除触发中断外,还可通过WKP_STDBY
触发退出待机模式;此外,外部WKUP pin
(唤醒引脚)也参与待机唤醒,确保系统在闹钟事件或外部触发时恢复运行。
RTC基本结构 
硬件电路
简单电路参考来源STM32数据手册5.16供电方案:
推荐连接的参考来源是STM32参考手册:
外部低速晶振参考来源STM32数据手册5.36使用一个晶体/陶瓷谐振器产生的低速外部时钟:
RTC操作注意事项
- 执行以下操作将使能对BKP和RTC的访问:
设置RCC_APB1ENR的PWREN和BKPEN,使能PWR和BKP时钟
设置PWR_CR的DBP,使能对BKP和RTC的访问
- 若在读取RTC寄存器时,RTC的APB1接口曾经处于禁止状态,则软件首先必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置1
- 必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器
- 对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是1时,才可以写入RTC寄存器
第二点细节:为什么要等待RTC_CRL寄存器中的RSF位
为什么要当RTOFF状态位是1,才可以写入RTC寄存器