STM32 RTC 秒与亚秒
STM32 RTC 秒与亚秒
在 STM32 的 RTC(实时时钟)模块中,“秒” 和 “亚秒” 是描述时间分辨率的重要组成部分:
-
秒 (Seconds -
RTC_TR/RTC_DR相关字段)- 含义: 表示完整的时间秒数,是我们通常理解的时钟秒位(00-59)。
- 实现: 存储在 RTC 时间寄存器 (
RTC_TR) 的ST(秒的十位)和SU(秒的个位)字段中,或者通过时间日历寄存器 (RTC_DR) 累积计算获得。它是 RTC 时间计数的基础单位之一(时、分、秒)。 - 分辨率: 1 秒。当亚秒部分计数到 0 时,秒计数器加 1。
-
亚秒 (Sub-seconds -
RTC_SSR/RTC_PRER)- 含义: 表示秒以下更精细的时间片段,通常小于 1 秒(1 秒 = 10^9 纳秒)。
- 实现:
- 由一个可编程的 异步预分频器 (
RTC_PRER的PREDIV_A) 和一个 同步预分频器 (RTC_PRER的PREDIV_S) 级联构成。 - RTC 时钟源 (
RTCCLK,通常是 LSE 32.768kHz 或 LSI ~32kHz) 首先经过异步预分频器分频,结果再经过同步预分频器分频。 - 同步预分频器 (
PREDIV_S) 的输出驱动一个计数器,这个计数器的值存储在 亚秒寄存器 (RTC_SSR) 中。
- 由一个可编程的 异步预分频器 (
- 关键特性:
- 递减计数器:
RTC_SSR是一个递减计数器。 - 初始值: 当
RTC_SSR装载时,其初始值等于PREDIV_S的值。 - 计数周期: 每个
RTCCLK周期(经过两级分频后),RTC_SSR减 1。 - 秒的起点: 当
RTC_SSR从初始值PREDIV_S计数减到 0 时,表示经过了 1 秒。此时:- 秒计数器 (
RTC_TR.SU/ST) 加 1。 RTC_SSR寄存器会自动重新装载为PREDIV_S的值,并开始下一个 1 秒周期的递减计数。
- 秒计数器 (
- 读取: 读取
RTC_SSR得到的是当前时间点在当前 1 秒周期内已经过去了多少个计数周期(从PREDIV_S递减)。 - 分辨率: 亚秒的分辨率取决于
PREDIV_S的设置值。分辨率 = 1 秒 / (PREDIV_S + 1)。- 例如,如果
PREDIV_S = 9999,则分辨率 = 1秒 / 10000 = 0.0001 秒 = 100 微秒 (μs)。此时RTC_SSR的值范围是 9999 (当前秒开始时) 到 0 (下一秒到来时)。
- 例如,如果
- 当前亚秒值推算: 实际应用中,我们通常关心当前时间点在当前秒内已经过去了多少亚秒时间(t_sub)。通过读取到的
SSR值计算:t_sub = (PREDIV_S - SSR) * (1 / (PREDIV_S + 1)) 秒或更直观的:t_sub = (PREDIV_S - SSR) * Resolution 秒Resolution = 1 / (PREDIV_S + 1) 秒 - 总时间戳: 完整的高精度时间戳可以通过组合秒计数器和当前的
SSR(或计算出的t_sub) 来获得。
- 递减计数器:
- 目的: 提供比秒更高精度的时间测量,用于需要微秒或毫秒级精度的应用场景(如精确时间戳、事件间隔测量)。
总结:
- 秒 (
RTC_TR.SU/ST): 表示完整的整数秒(00-59),是时间的基本单位之一。分辨率 1 秒。 - 亚秒 (
RTC_SSR): 表示当前秒内的更小时间片段。它是一个递减计数器,初始值由同步预分频器PREDIV_S决定。当其减到 0 时触发秒计数器加 1。 - 关系:
- 1 秒的时间长度等于
PREDIV_S + 1个亚秒计数周期。 - 亚秒的实际时间值需要通过
SSR的读数和PREDIV_S的值计算得出:t_sub = (PREDIV_S - SSR) / (PREDIV_S + 1)秒。
- 1 秒的时间长度等于
- 分辨率: 由
PREDIV_S决定:分辨率 = 1 / (PREDIV_S + 1)秒。PREDIV_S越大,分辨率越高(亚秒时间片段越小)。
重要提示:
- 读取同步: 为了获得精确且一致的秒和亚秒值组合(避免在秒进位时读取导致错误),必须在一次读操作中同时锁定读取
RTC_TR(包含秒) 和RTC_SSR(亚秒) 或RTC_DR(日期) 和RTC_TR(时间),然后再解锁。这通常通过读取RTC_ISR的RSF位或使用影子寄存器机制(如RTC_SHIFTR)来实现。请务必查阅你所使用 STM32 型号的参考手册中关于“读取日历”或“RTC 寄存器同步”的章节。 - STM32F1 系列差异: STM32F1 系列 RTC 的实现与其他系列(F0, F3, F4, F7, H7, L0, L1, L4, G0, G4 等)有显著不同。F1 的预分频器结构简单,亚秒功能较弱(只有一个除法器,没有专门的 SSR 寄存器)。上述描述主要适用于 F1 以外 的 STM32 系列(使用较新的 RTC 设计)。
- 异步预分频器 (
PREDIV_A): 主要用于在进入低功耗模式时进一步降低 RTC 的功耗。它的输出是同步预分频器 (PREDIV_S) 的输入。PREDIV_A的设置会影响PREDIV_S的最大值,但亚秒的分辨率最终由PREDIV_S决定。
理解秒和亚秒的关系及其寄存器操作对于在 STM32 上实现高精度计时应用至关重要。务必参考你所使用具体 STM32 型号的 《参考手册》 中 RTC 章节的详细说明。
STM32系列里RTC的亚秒特性及功能(下)
,就这样延续下去。 这样操作也是可以的,即每次在ALARM中断里修改新的ALARM时间点。下图是对ALARM值进行编程的流程【设置时先要关闭ALARM,修改ALARM值后再手动开启ALARM单元】: 不过,结合眼前的应用需求,我们可以不使用上面的做法,而是巧妙地使用RTC
2023-06-21 15:56:07
STM32片内RTC亚秒特性的应用示例(下)
这个专用唤醒定时器,而是想基于ALARM事件和亚秒特性来实现上面需求。 对于RTC的ALARM功能我们都不陌生,即先预设需要ALARM的时间点,
2023-04-30 16:32:00
STM32CubeMX学习笔记(14)——RTC实时时钟使用
包含二进码十进数格式 (BCD) 的秒、分钟、小时( 12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。系统
资料下载
张丽
2021-12-05 21:06:10
STM32内部RTC的学习笔记资料说明
另一部分(RTC核)由一系列可编程计数器组成,分成两个主要模块。第一个模块是 RTC的预分频模块,它可编程产生最长为 1秒的
资料下载
佚名
2021-03-24 15:07:00
关于RTC的秒中断功能
Ⅰ、概述RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理,选择RTC时钟源,再进行分频,到达计数的目的。该文主要讲述关于
关于RTC的秒中断功能
RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理,选择RTC时钟源,再进行分频,到达计数的目的。该文主要讲述关于
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览