【江协科技STM32】BKP备寄存器&RTC实时时钟(学习笔记)

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闹钟标志)和中断使能(SECIEOWIEALRIE),汇总中断信号后接入 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寄存器

相关推荐
梅见十柒1 分钟前
UNIX网络编程笔记:TCP、UDP、SCTP编程的区别
服务器·网络·c++·笔记·tcp/ip·udp·unix
tt55555555555512 分钟前
pyQt学习笔记——Qt资源文件(.qrc)的创建与使用
笔记·学习·pyqt
士别三日&&当刮目相看1 小时前
JAVA学习*String类
java·开发语言·学习
1haooo2 小时前
[计算机三级网络技术]第二章:中小型网络系统总体规划与设计方法
网络·经验分享·笔记·计算机网络·智能路由器
cliff,2 小时前
JavaScript基础巩固之小游戏练习
javascript·笔记·学习
知识分享小能手2 小时前
CSS3学习教程,从入门到精通,CSS3 定位布局页面知识点及案例代码(18)
前端·javascript·css·学习·html·css3·html5
云半S一3 小时前
性能测试笔记
经验分享·笔记·压力测试
云上艺旅3 小时前
K8S学习之基础四十三:k8s中部署elasticsearch
学习·elasticsearch·云原生·kubernetes
齐尹秦3 小时前
HTML5 拖放(Drag and Drop)学习笔记
笔记·学习·html5
weixin_458195353 小时前
辉视智慧月子中心:爱与科技共筑母婴温馨港湾
科技