【江科大STM32入门·自存笔记】BKP备份寄存器&RTC实时时钟

学习笔记,自存。

原视频链接:[12-2] BKP备份寄存器&RTC实时时钟_哔哩哔哩_bilibili

一、BKP简介

        · BKP(Backup Registers)备份寄存器

        · BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT备用  电池电源  1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位

        (如果VDD断电,VBAT也没电,BKP里的数据就会清零

        · TAMPER引脚产生的侵入事件将所有备份寄存器内容清除 (PC13-TAMPER-RTC共用一个引脚)

        (STM32把以下RTC的功能放在BKP里了)

        · RTC引脚输出RTC校准时钟RTC闹钟脉冲或者秒脉冲 (PC13-TAMPER-RTC共用一个引脚)

        · 存储RTC时钟校准寄存器(可配合RTC校准时钟,结合一些测量方法,对RTC进行校准)

        · 用户数据存储容量:     

        20字节(中容量和小容量)/ 84字节(大容量和互联型)(STM32C8T6为中容量,也就是20字节)


        注1:

        TAMPER引脚是一个安全保障设计,有侵入检测功能。

        设计电路时,TAMPER引脚可以先加一个默认的上拉或者下拉电阻,然后引一根线,到你的设备外壳防拆开关或触点,别人一拆开你的设备,触发开关,就会在TAMPER引脚产生上升沿或者下降沿,这样STM32就检测到侵入事件了。这时BKP的数据会自动清零,并且申请中断

        在中断里还可以继续保护设备,比如清除其他存储器数据,然后设备锁死,来保证设备安全。主电源断电后,侵入检测仍然有效。


        注2:

        引脚定义图中,标红色的部分是供电引脚,VDD_1,2,3VSS_1,2,3为内部数字部分电路的供电;VDDAVSSA为内部模拟部分数字的供电。这四组供电都是系统的主电源,全要接到3.3V电源上。VBAT备用电池供电引脚,接电池时,电池正极接到VBAT,电池负极和主电源的负极接在一起共地。

        STM32参考手册里建议,如果没有外部电池,VBAT引脚接到VDD,即和主电源接到一起,并且再连接一个100nF的滤波电容。

【江科大STM32入门·自存笔记】BKP备份寄存器&RTC实时时钟_第1张图片


二、BKP基本结构

【江科大STM32入门·自存笔记】BKP备份寄存器&RTC实时时钟_第2张图片

        BKP处于后备区域,当VDD主电源掉电时,后备区域仍然可以由VBAT的备用电池供电。当VDD主电源上电时,后备区域供电会由VBAT切换到VDD。也就是主电源有电时,VBAT不会用到,可以节省电池电量。

        BKP里主要有数据寄存器控制寄存器状态寄存器RTC时钟校准寄存器

              ·  数据寄存器,中容量有10个,每个16位即2字节,共20个字节。

              ·  入侵检测     触发TAMPER引脚,产生上升沿或者下降沿,TM32检测到侵入事件,BKP的数据会自动清零,并且申请中断

              ·  时钟输出    把RTC的相关时钟,从PC13位置的RTC引脚输出出去,供外部使用。其中输出校准时钟时,配合校准寄存器,可以对RTC的误差进行校准。

三、RTC实时时钟

        · RTC(Real Time Clock)实时时钟

        · RTC是一个独立的定时器,可为系统提供时钟和日历的功能

        · RTC和时钟配置系统处于后备区域系统复位时数据不清零,VDD(2.0~3.6V)断电后可借助VBAT(1.8~3.6V)供电继续走时

        · 32位的可编程计数器,可对应Unix时间戳的秒计数器

        · 20位的可编程预分频器,给RTCCLK降频率,保证分频器输出给计数器的频率为1Hz,可以选择对输入时钟进行1~2^20范围的分频,可适配不同频率的输入时钟

        · 可选择三种RTC时钟源

                HSE时钟除以128(主要作为系统主时钟,备选RTC时钟,高速外部时钟信号,通常为8MHz/128)     

                LSE振荡器时钟(RTC最常用,低速外部时钟信号,通常为32.768KHz,2^15次方,只有这个时钟可以通过VBAT备用电池供电)     

                LSI振荡器时钟(主要作为看门狗时钟,备选RTC时钟,低速内部时钟信号,40KHz)

   选择其中一个接入到RTCCLK

【江科大STM32入门·自存笔记】BKP备份寄存器&RTC实时时钟_第3张图片

四、RTC框图

【江科大STM32入门·自存笔记】BKP备份寄存器&RTC实时时钟_第4张图片

        左为核心的、分频和计数计时部分,右为中断输出使能和NVIC部分,上为APB1总线读写部分,下为和PWR关联的部分,即RTC的闹钟可以唤醒设备,退出待机模式。

        有灰色填充部分都为后备区域

        先由RTC预分频器进行分频。RTC_PRL为重装载寄存器,RTC_DIV为余数寄存器

                RTC_PRL写入一个计数目标值,用来配置是几分频。重装值写入6为7分频,写入9为10分频

                RTC_DIV每个时钟计一个数,为自减寄存器,每来一个输入时钟,DIV的值就自减一次,自减到0时,再来一个输入时钟,DIV输出一个脉冲,产生溢出信号,同时DIV从PRL获取重装值,回到重装值继续自减。


例:

RTCCLK输入时钟为32.768KHz,即32768Hz,为了分频之后得到1Hz,PRL就要给32767,这个数值是始终不变的。

DIV初始值为0,第一个输入时钟到来时,DIV立即溢出,产生溢出信号给后续电路,同时,DIV变为重装值32767

第二个输入时钟,DIV自减变为32766

第三个时钟,DIV变为32765

DIV来一个输入时钟自减一次,直到变为0,然后再来一个输入时钟,就会产生一个溢出信号,同时DIV回到32767,以此往复循环。

每来32768个输入脉冲,计数器溢出一次,产生一个输出脉冲。   

这就是32768分频,分频输出后时钟频率为1Hz,提供给后续的秒寄存器。


CNT 32位计数器,一秒自增一次。

RTC_ALR为32位寄存器,可设置闹钟。

中断部分,有三个信号可以触发中断。

RTC_Second,秒中断,来源为CNT的输入时钟。如果开启这个中断,程序就会每秒进一次RTC中断

RTC_Overflow,溢出中断,当CNT32位计数器计满溢出,会触发一次中断,2106年才会溢出。

RTC_Alarm,闹钟中断,当CNT的值跟ALR设定的闹钟值一样时,产生RTC_Alarm闹钟信号,通往右边的中断系统。闹钟信号还能让STM32退出待机模式。

中断标志位和中断输出控制   F(Flag)结尾的是对应的中断标志位,IE(Interrupt Enable)结尾的是中断使能。最后三个信号通过一个或门,汇聚到NVIC中断控制器。

APB1总线和APB1接口,为程序读写寄存器的地方。

WKUP(Weak Up)引脚也可以唤醒设备(PA0-WKUP)

五、RTC基本结构

【江科大STM32入门·自存笔记】BKP备份寄存器&RTC实时时钟_第5张图片

配置数据选择器,选择时钟来源;

配置重装寄存器,选择分频系数;

配置32位计数器,进行日期时间的读写;

需要闹钟则配置32位闹钟值

需要中断则先允许中断,再配置NVIC。

六、硬件电路

【江科大STM32入门·自存笔记】BKP备份寄存器&RTC实时时钟_第6张图片

       VBAT 备用电池供电推荐连接: 电池和主电源都加一个二极管,防止电流倒灌,VBAT加一个0.1uF的电源滤波电容,如果没有备用电池,就是3V3的主电源供电,如果接了备用电池,3V3没电时,就是备用电池供电

        外部低速晶振  X1为RTC晶振,两端分别接在OSC32两个引脚上,晶振两端分别接一个起振电容,到GND

        备用电池一般用3V纽扣电池CR2032

七、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寄存器

你可能感兴趣的:(stm32,笔记,实时音视频)