BKP备份寄存器RTC实时时钟

devtools/2024/12/22 20:03:09/

文章目录

  • 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/devtools/22664.html

相关文章

【三】DRF序列化进阶

【 一 】request对象 ​ request是被drf封装了一层新的request对象,django原生的request 封装在新对象的_request属性里,可以使用request._request访问原生request 但django为了方便 封装时通过__getattribute__和__getattr__做了处理 直接使用request.method也能访问到reques…

Python实现视频转音频

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、moviepy实现视频转音频 github地址:GitHub - Zulko/moviepy: Video editing with Python 二、示例代码 ""&…

Python selenium

1.搭建环境 1.安装: pip install msedge-selenium-tools 不要使用pip install selenium,我的电脑上没法运行 2.下载驱动 Microsoft Edge WebDriver |Microsoft Edge 开发人员 edge浏览器点设置---关于即可找到版本号,一定要下载对应版…

【人工智能基础】逻辑回归实验分析

实验环境:anaconda、jutpyter Notebook 实验使用的库:numpy、matplotlib 一、逻辑回归 逻辑回归是一个常用于二分类的分类模型。本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。 二、实验准备 引入库、预设值…

rknn 麒麟系统调试环境搭建

目录 设置ip 设置静态ip adb usb调试驱动下载 可以用ssh进行远程链接 设置ip 一.解决方法 设置自动获取IP 第一步:编辑文件 sudo vim /etc/network/interfaces 第二步:重启network sudo /etc/init.d/networking restart 设置静态ip au…

31 OpenCV 距离变换和分水岭算法

文章目录 距离变换分水岭算法distanceTransform 距离变换watershed 分水岭算法示例 距离变换 分水岭算法 distanceTransform 距离变换 void cv::distanceTransform (InputArray src,OutputArray dst,int distanceType,int maskSize,int dstType CV_32F) src:输入图像&#xf…

水稻病害检测(YOLO数据集,多分类,稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫)

是自己利用LabelImg工具进行手工标注,数据集制作不易,请尊重版权(稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫) 如果需要yolv8检测模型和数据集放在一起的压缩包,可以关注:最新最…

虚假新闻检测——Exploring the Role of Large Language Models in Fake News Detection

Bad Actor, Good Advisor: Exploring the Role of Large Language Models in Fake News Detection 论文地址: Bad Actor, Good Advisor: Exploring the Role of Large Language Models in Fake News Detection| Proceedings of the AAAI Conference on Artificial Intellige…