BKP备份寄存器RTC实时时钟

news/2024/11/13 5:17:13/

文章目录

  • BKP简介
    • 相关引脚
    • BKP基本结构
  • RTC简介
    • RTC框图
    • 三种时钟源
    • RTC基本结构
  • 硬件电路
  • RTC操作注意事项


BKP简介

  • BKP(Backup Registers)备份寄存器
  • BKP可用于存储用户应用程序数据。当VDD(2.0~ 3.6V)电源被切断,他们仍然由VBAT(1.8~ 3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位
  • TAMPER引脚产生的侵入事件将所有备份寄存器内容清除 RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲 存储RTC时钟校准寄存器
  • 用户数据存储容量: 20字节(中容量和小容量)/ 84字节(大容量和互联型)

相关引脚

在这里插入图片描述
TAMPER引脚产生的侵入事件:可以由此引脚外接一个上拉或下拉电阻,当有人触发了拆开设备等事件使TAMPER引脚产生上升沿或下降沿,使STM32检测到侵入事件,清空BKP的所有内容并申请中断,在中断中配置其他保护操作

BKP基本结构

橙色部分为后备区域,即主电源断电后还可以继续由VBAT供电工作
在这里插入图片描述

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框图

下图深色部分为主电源掉电或可以使用VBAT备用电源继续工作的部分
在这里插入图片描述

  • RTCCLK:RTC晶振
  • RTC_PRL:重装寄存器,RTC预分频重载值,相当于分频值,由于包含0,则给9就相当于10分频
  • RTC_DIV:余数寄存器,接收RTC晶振,设置初值为RTC_PRL,每次接收晶振自减1,溢出产生上升沿,以此分频。例如RTC_PRL=32767,RTCCLK=32768,则需自减32768次,最后输出的频率就为32768-32767+1=0,以此得到1Hz的频率
  • RTC_CNT:相当于32位Unix事件戳秒计数器,可通过time.h库函数来进行时间转换,因为使用的秒计数器,所以需要把RTCCLK分频为1Hz给秒计数器
  • RTC_ALR:闹钟寄存器,设置闹钟时间,唤醒RTC计时,平时处于待机模式以省电
  • WKUP pin:用于唤醒设备
  • RTC_Second:每秒进入一次中断
  • RTC_Overflow:计数器溢出中断
  • RTC_Alarm:闹钟中断

三种时钟源

参考RCC时钟树
在这里插入图片描述
图中三种时钟源分别对应:

  • HSE时钟除以128(通常为8MHz/128):主晶振,主要作为系统主时钟,一般8MHz
  • LSE振荡器时钟(通常为32.768KHz):专用于RTC,可以在主电源断电时继续产生频率,而且32768为2的15次方,在经过一个15为分频器自动溢出即可得到1Hz的频率
  • LSI振荡器时钟(40KHz):内部低俗晶振,精度没有外部时钟高,一般用于看门狗,只做备选方案

RTC基本结构

RTC主要流程简化图
在这里插入图片描述

硬件电路

注意:在VDD上升阶段(tRSTTEMPO)或者探测到PDR(掉电复位)之后,VBAT和VDD之间的电源开关仍会保持连接在VBAT。在VDD上升阶段,如果VDD在小于tRSTTEMPO的时间内达到稳定状态(关于tRSTTEMPO数值可参考数据手册中的相关部分),且VDD > VBAT + 0.6V时,电流可能通过VDD和VBAT之间的内部二极管注入到VBAT。如果与VBAT连接的电源或者电池不能承受这样的注入电流,强烈建议在外部VBAT和电源之间连接一个低压降二极管。如果在应用中没有外部电池,建议VBAT在外部连接到VDD并连接一个100nF的陶瓷滤波电容
对于CL1和CL2,建议使用高质量的5pF~15pF之间的瓷介电容器,并挑选符合要求的晶体或谐振器

在这里插入图片描述


RTC操作注意事项

  • 执行以下操作将使能对BKP和RTC的访问:
    设置RCC_APB1ENR的PWREN和BKPEN,使能PWR和BKP时钟
    设置PWR_CR的DBP,使能对BKP和RTC的访问
  • 若在读取RTC寄存器时,RTC的APB1接口曾经处于禁止状态,则软件首先必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置1(由于外设时钟频率远快于RTC时钟,所以要等待RTC时钟,将寄存器的值同步到APB1总线上
  • 必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。
  • 可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是1时,才可以写入RTC寄存器

http://www.ppmy.cn/news/1453680.html

相关文章

易舟云财务软件是一款专业的财务管理软件

易舟云财务软件是一款专业的财务管理软件,旨在帮助企业实现财务管理的自动化和数字化。它提供了全面的财务功能,包括会计核算、财务报表、应收应付管理、资金管理、固定资产管理等。 易舟云财务软件具有以下特点: 网络化管理:通过…

STM32 看门狗WDG

一、看门狗(Watchdog) 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠…

跟我学C++中级篇——const和constexpr的使用

一、从例程介绍 已经不同的篇章里介绍和分析过const及constexpr&#xff0c;特别对于后者&#xff0c;从c11到c14直到c17甚至以后&#xff0c;功能都不断的在完善。那么这么多复杂的应用如何搞清楚呢&#xff1f;下面先从代码看起&#xff1a; #include <iostream>void…

C语言——文件相关操作

2.什么是文件 3.文件的打开和关闭 4.文件的顺序读写 5.文件的随机读写 6.文本文件和二进制文件 7.文件读取结束的判定 8.文件缓冲区 一、文件相关介绍 1、为什么使用文件 文件用于永久存储数据。通过使用文件&#xff0c;我们可以在程序关闭后保存数据&#xff0c;以便将来…

TensorFlow轻松入门(二)——小案例:ANN构建一个或运算的模型

或运算&#xff1a; 位与位进行比较&#xff0c;如果有任一个是1&#xff0c;结果为1&#xff1b;两个都为0&#xff0c;结果则为0。 实现步骤 构建Feature与Label数据 创建顺序模型 指定模型的第一层&#xff0c;线性模型 添加一层激活函数 模型编译 模型训练 模型预测…

Nacos单机模式集成MySQL

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Nacos支持三种部署…

【linux学习指南】linux指令与实践文件编写

文章目录 &#x1f4dd;前言&#x1f320; linux目录结构&#x1f309;linux命令介绍 &#x1f320;pwd命令&#x1f309;mkdir指令&#xff08;重要&#xff09; &#x1f320;cd 指令&#x1f309;touch指令 &#x1f320;rmdir指令 && rm 指令&#xff08;重要&…

储能参与调频的主辅联合出清

部分代码: clear clc %% 参数输入 data_genunit=xlsread(参数输入2.xlsx,火电机组); data_storage=xlsread(参数输入2.xlsx,储能电站); data_loadcurve=xlsread(参数输入2.xlsx,负荷曲线); data_network=xlsread(参数输入2.xlsx,网络参数); %%%%导入出力计划 u=load(u_scuc.…