登录/注册

STM32 RTC 秒与亚秒

STM32 RTC 秒与亚秒

更多

在 STM32 的 RTC(实时时钟)模块中,“秒” 和 “亚秒” 是描述时间分辨率的重要组成部分:

  1. 秒 (Seconds - RTC_TR / RTC_DR 相关字段)

    • 含义: 表示完整的时间秒数,是我们通常理解的时钟秒位(00-59)。
    • 实现: 存储在 RTC 时间寄存器 (RTC_TR) 的 ST(秒的十位)和 SU(秒的个位)字段中,或者通过时间日历寄存器 (RTC_DR) 累积计算获得。它是 RTC 时间计数的基础单位之一(时、分、秒)。
    • 分辨率: 1 秒。当亚秒部分计数到 0 时,秒计数器加 1。
  2. 亚秒 (Sub-seconds - RTC_SSR / RTC_PRER)

    • 含义: 表示秒以下更精细的时间片段,通常小于 1 秒(1 秒 = 10^9 纳秒)。
    • 实现:
      • 由一个可编程的 异步预分频器 (RTC_PRERPREDIV_A) 和一个 同步预分频器 (RTC_PRERPREDIV_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) 来获得。
    • 目的: 提供比秒更高精度的时间测量,用于需要微秒或毫秒级精度的应用场景(如精确时间戳、事件间隔测量)。

总结:

重要提示:

  1. 读取同步: 为了获得精确且一致的秒和亚秒值组合(避免在秒进位时读取导致错误),必须在一次读操作中同时锁定读取 RTC_TR (包含秒) 和 RTC_SSR (亚秒) 或 RTC_DR (日期) 和 RTC_TR (时间),然后再解锁。这通常通过读取 RTC_ISRRSF 位或使用影子寄存器机制(如 RTC_SHIFTR)来实现。请务必查阅你所使用 STM32 型号的参考手册中关于“读取日历”或“RTC 寄存器同步”的章节。
  2. STM32F1 系列差异: STM32F1 系列 RTC 的实现与其他系列(F0, F3, F4, F7, H7, L0, L1, L4, G0, G4 等)有显著不同。F1 的预分频器结构简单,亚秒功能较弱(只有一个除法器,没有专门的 SSR 寄存器)。上述描述主要适用于 F1 以外 的 STM32 系列(使用较新的 RTC 设计)。
  3. 异步预分频器 (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特性及功能(上)

绝大多数STM32系列里的RTC都具有亚秒【或称子

2023-06-21 15:53:09

STM32片内RTC特性的应用示例(下)

这个专用唤醒定时器,而是想基于ALARM事件和亚秒特性来实现上面需求。 对于RTC的ALARM功能我们都不陌生,即先预设需要ALARM的时间点,

2023-04-30 16:32:00

STM32CubeMX学习笔记(14)——RTC实时时钟使用

包含二进码十进数格式 (BCD) 的秒、分钟、小时( 12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。系统

资料下载 张丽 2021-12-05 21:06:10

6位LCD显示60计数器芯片ZH1805

6位LCD显示60秒计数器芯片ZH1805

资料下载 zhihua8880 2021-09-12 09:29:42

STM32内部RTC的学习笔记资料说明

另一部分(RTC核)由一系列可编程计数器组成,分成两个主要模块。第一个模块是 RTC的预分频模块,它可编程产生最长为 1秒的

资料下载 佚名 2021-03-24 15:07:00

使用单片机实现99.9表的仿真文件免费下载

本文档的主要内容详细介绍的是使用单片机实现99.9秒秒表的仿真文件免费下载。

资料下载 佚名 2021-03-19 13:48:00

如何教30优化到0.01详细资料说明

本文档的主要内容详细介绍的是如何教30秒优化到0.01秒详细资料说明。

资料下载 佚名 2019-07-23 17:37:00

STM32片内RTC特性的应用示例(上)

绝大多数STM32系列里的RTC都具有亚秒【或称子

2023-04-30 16:28:00

STM32片内RTC特性以及应用演示的分享

绝大多数STM32系列里的RTC都具有亚秒【或称子

2023-04-15 11:27:55

具有带32位唤醒计数器的RTC的超低MCU有哪些

我目前正在使用 STM32WLE5CC MCU,它具有带 32 位亚秒唤醒计数器的 R

2022-12-02 06:14:19

怎么实现STM32F10x_RTC中断?

怎么实现STM32F10x_RTC秒中断?

2021-11-16 08:15:24

关于RTC中断功能

Ⅰ、概述RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理,选择RTC时钟源,再进行分频,到达计数的目的。该文主要讲述关于

2021-08-16 08:19:19

关于RTC中断功能

RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理,选择RTC时钟源,再进行分频,到达计数的目的。该文主要讲述关于

2021-08-13 06:57:55

STM32F10x _RTC中断

STM32F10x_RTC秒中断

2020-03-25 11:39:40

7天热门专题 换一换
相关标签