当前位置:文档之家› STM32F2—实时时钟RTC

STM32F2—实时时钟RTC

10
日历和闹钟寄存器
礼拜
月 年 日

12/24小时制
时 秒
日 礼拜
12/24小时制 时 秒 分
11
日历模块的时钟同步
用户以APB1的时钟读取日历寄存器
读取RTC_TR时硬件会锁定RTC_DR 先读取RTC_TR,再读取RTC_DR,保证时间连续性
要保证fPCLK1 ≥4*fRTCCLK
Tamper Flag
TimeStamp Registers
TimeStamp Flag AFO_CALIB
RTCCLK
ss, mm, HH/date
=
Alarm A Flag
Calendar
RTC_CR_OSEL[1:0]
PREDIV_A [6:0] AFO_ALARM
Calibration RTC 数字校准
2
3 4 5 6
关闭警报A
等待访问允许的确认 设置闹钟 重新使能警报A 使能RTC寄存器写保护
复位ALRAE@RTC_CR
查询ALRAWF@RTC_ISR 直到它置位 设置RTC_ALRMAR 置位ALRAE@RTC_CR 往RTC_WPR写入0xFF RTC寄存器不能被修改 FMT格式要和日历一致
Wake-Up
Asynchrone 4bit Prescaler
WUCKSEL [2:0]
16bit autoreload Timer
Periodic wake up Flag
9 9
硬件日历和警报
带夏令时调整的硬件日历
真实寄存器 影子寄存器 RTC_TR & RTC_DR
用户访问的是影子寄存器,而非真实寄存器 影子寄存器每2个RTCCLK被更新一次,并置位RSF标志 低功耗模式下,影子寄存器不再被更新 影子寄存器内容会被所有系统复位信号给复位
15
AFI_TAMPER AFI_TIMESTAMP RTC Reference Clock RTCSEL [1:0]
Backup Registers and RTC Tamper Control registers
Tamper Flag
TimeStamp Registers
TimeStamp Flag 512 Hz clock output Alarm A AFO_CALIB
PREDIV_A [6:0] AFO_ALARM
Calibration
Day/date/month/year HH:mm:ss (12/24 format)
=
Alarm B Flag
Alarm B
Synchronous 13bit Prescaler
PREDIV_S [12:0]
ss, mm, HH/date
Backup Registers and RTC Tamper Control registers
Tamper Flag
TimeStamp Registers
TimeStamp Flag 512 Hz clock output Alarm A AFO_CALIB
HSE (1 MHz) LSE LSI
培训内容
RTC系统框图和组件
时钟源和分频器 硬件日历和警报 自动唤醒定时器
特色功能
数字粗略校准 参考时钟
外部引脚上的导出和导入功能
输出:警报、定时信号、校准时钟 输入:入侵检测
低功耗特性 STM32F2和STM32F1的RTC比较
3
RTC框图
AFI_TAMPER AFI_TIMESTAMP RTC Reference Clock RTCSEL [1:0]
6
配置时间格式(12/24小时)
置位或复位 FMT@RTC_CR
清零INIT@RTC_ISR 往RTC_WPR写入0xFF
7 8
退出初始化模式 使能RTC寄存器写保护
14
闹钟的设置非常灵活
Step 1 What to do 关闭RTC寄存器的写保护 How to do it 先后往RTC_WRP写入 0xCA和0x53 Comments RTC寄存器可以被修改了
置位INIT@RTC_ISR
查询INITF@RTC_ISR直到 它置位
日历计数器停止以便于修 改
4
5
对预分频因子编程
装载时间和日期值
编程寄存器RTC_PRER: RTCCLK=32.768 KHz时, 先写同步分频因子,再写异 预分频因子默认产生1Hz 步因子 时钟 编程RTC_TR和RTC_DR FMT=0:24小时制 FMT=1:AM/PM制 自动载入当前日历计数器 值,4个RTCCLK后开始计 数 RTC寄存器不能被修改
HSE (1 MHz) LSE LSI
RTCCLK
ss, mm, HH/date
Asynchronous 7bit Prescaler
=
Alarm A Flag
Calendar
RTC_CR_OSEL[1:0]
PREDIV_A [6:0] AFO_ALARM
Calibration
Day/date/month/year HH:mm:ss (12/24 format)
实时时钟 RTC
1
培训内容
RTC系统框图和组件
时钟源和分频器 硬件日历和警报 自动唤醒定时器
特色功能
数字粗略校准 参考时钟
外部引脚上的导出和导入功能
输出:警报、定时信号、校准时钟 输入:入侵检测
低功耗特性 STM32F2和STM32F1的RTC比较
2
PREDIV_S [12:0]
ss, mm, HH/date
Wake-Up
Asynchrone 4bit Prescaler
WUCKSEL [2:0]
16bit autoreload Timer
Periodic wake up Flag
6 6
时钟源和分频器
RTC时钟源:RTCCLK
LSE (属于备份域)
=
Alarm B Flag
Alarm B
Synchronous 13bit Prescaler
PREDIV_S [12:0]
ss, mm, HH/date
Wake-Up
Asynchrone 4bit Prescaler
WUCKSEL [2:0]
16bit autoreload Timer
Periodic wake up Flag
Day/date/month/year HH:mm:ss (12/24 format)
=
Alarm B Flag
Alarm B
Synchronous 13bit Prescaler
PREDIV_S [12:0]
ss, mm, HH/date
Wake-Up
Asynchrone 4bit Prescaler
Tamper Flag
TimeStamp Registers
TimeStamp Flag 512 Hz clock output Alarm A AFO_CALIB
HSE (1 MHz) LSE LSI
RTCCLK
ss, mm, HH/date
Asynchronous 7bit Prescaler
=
举例1:每个周一的23:15:07产生闹钟 >> WDSEL = 1 >> MSKx = 0000b >> s = 7 (ST=0b,SU=0111b) >> mm = 15 (MT=01b,MU=0101b) >> hh = 23 (HT=10b,HU=11b) >> AM/PM = 0 (24小时制) >> D = 1 举例2:每个月1号的23:15:07产生闹钟 >> WDSEL = 0 >> 其余设置都一样
WUCKSEL [2:0]
16bit autoreload Timer
Periodic wake up Flag
5 5
AFI_TAMPER AFI_TIMESTAMP RTC Reference Clock RTCSEL [1:0]
Backup Registers and RTC Tamper Control registers
LSE OSC 32.768 KHz
最小因子:2 最大因子:222
@RCC_CFGR
HSE OSC 4~26 MHz
7
使用不同时钟源产生1Hz信号给日历模块
预分频因子 RTCCLK时钟源 PREDIV_A[6:0] HSE_RTC = 1MHz LSE = 32.768KHz LSI* = 32KHz 124 (div 125) 127 (div 128) 127 (div 128) PREDIV_S[12:0] 7999 (div 8000) 255 (div 256) 249 (div 250) 1 Hz 1 Hz 1 Hz Ck_spre
因为:硬件已经在初始化模式下复位RSF 所以:只需等待RSF置位
13
硬件日历初始化流程
Step 1 What to do 关闭RTC寄存器的写保护 How to do it 先后往RTC_WRP写入 0xCA和0x53 Comments RTC寄存器可以被修改了
2
3
进入初始化模式
等待进入初始化模式的确认
SUB1H、ADD1H、BKP@ RTC_CR调整夏令时
两个可编程警报(闹钟)
各自的使能、中断使能、匹配标志信号 各自的掩码寄存器,控制各自的报警时刻
若以秒匹配报警,PREV_S的值必须>=3
相关主题