STM32系列里RTC的亚秒特性及功能(上)

发布者:春水碧于天最新更新时间:2023-09-20 关键字:STM32系列  RTC 手机看文章 扫描二维码
随时随地手机看文章

绝大多数STM32系列里的RTC都具有亚秒【或称子秒】计数单元。为了了解亚秒特性及功能,不妨先看RTC的功能框图。本文中的有关截图若无特别说明均来自STM32L4系列参考手册。

图片

图片

RTC的时钟源【RTCCLK】可以是LSE、LSI或者HSE/32,由RTCCLK最终变成日历的秒脉冲驱动信号经过了2次分频。先经过上图中A处的异步分频单元,默认分频系数是128,形成ck_apre时钟,默认情况下该时钟频率为256Hz;然后该时钟脉冲来到图中B处的同步分频单元,默认分频系数为256,最终形成1Hz的秒脉冲【ck_spre】到日历单元。关于两分频单元分频系数的配置,通过对RTC_PRER寄存器的相关位编程实现。

图片

其中异步分频系数配置位【PREDIV_A】有7位,同步分频系数【PREDIV_S】有15位。另外,同步分频单元还包括采用向下计数方式的亚秒计数器,它基于异步分频后的时钟ck_apre进行计数,溢出时的重装值等于PREDIV_S。一般来讲,它的一个计数周期就是1s,其计数分辨率或精度为【1/(PREDIV_S+1)】秒。与之配套的亚秒寄存器,实时记录亚秒计数器的计数值,有效数据位乃16位,比PREDIV_S多1位,多出的1位另有它用,此处不表。

图片

显然,当有了这个亚秒计数器后,我们就可以获得少于1秒的时间,或说秒的小数部分---亚秒,其精度由同步分频系数PREDIV_S决定,某时刻的亚秒数通过亚秒寄存器获取,对应的亚秒时间可以通过上图中第2个红色方框内的算式求得【提醒:亚秒计数器采用向下计数方式】。

关于RTC的亚秒概念及基本特性就介绍到这里。稍微小结下:

1、亚秒是对少于1秒的时间称谓,范围在0到1秒,并非固定的值;

2、亚秒精度【分辨率】可调,由PREDIV_S参数决定,即【1/(PREDIV_S+1)】秒;

3、亚秒寄存器【RTC_SSR】实时记录亚秒计数器的值,具体由 SS [15:0]体现;

4、亚秒时间通过算式(PREDIV_S- SS ) / (PREDIV_S+1)求得;

我们知道RTC除了提供基本的日历功能外,还有很好的低功耗特性,常用于低功耗的唤醒。有些低功耗应用场合,虽然系统需要周期性的唤醒,但对唤醒周期的一致性要求往往并不严格、很多时候的周期值往往远达不到秒级,比方在10个毫秒上下、几十个毫秒左右、100毫秒量级不等。像这种场合,我们可以考虑使用RTC的亚秒特性和ALARM功能实现周期性唤醒。

假设某STM32用户有这样的需求,他的系统涉及低功耗,需要周期性地做休眠与唤醒的切换。他希望系统进入休眠后每隔50±20ms的时间范围内被唤醒,唤醒后做些基本的检测处理后又进入休眠。要实现这个需求,对于很多带LPTIM的STM32系列也很方便实现。

不过,今天主要想聊聊如何通过RTC来实现该需求。了解STM32的RTC的人可能知道,RTC模块往往还自带一个专门的16位向下计数的唤醒定时器,即下面RTC局部框图中红框所在单元。我这里要分享的也不是这个专用唤醒定时器,而是想基于ALARM事件和亚秒特性来实现上面需求。

图片

对于RTC的ALARM功能我们都不陌生,即先预设需要ALARM的时间点,当日历时间跟设定的ALARM时间匹配时就可以触发ALARM事件及中断。对于ALARM时间点的报警条件可以有很多灵活的组合配置,比方我们可以设置在某月某日某时某分某秒ALARM,也可以设置在某分某秒ALARM,其它不关心,或者仅设置在某个亚秒时刻ALARM,其它不关心。

图片

上图中四种ALARM设置,灰色部分表示不关心项,即不参与日历值与ALARM设定值相关项的比较。这里分别表示的警情时刻是:

第一种,只要日历中跟ALARM设置的时、分、秒匹配时报警,其它不关心;

第二种,只要日历中跟ALARM设置的分值、秒值匹配时报警,其它不关心;

第三种,只要日历中跟ALARM设置的秒值和亚秒低3位值匹配时报警,其它不关心;

第四种,只要日历中跟ALARM设置的亚秒的低4位值匹配时报警,其它不关心;


关键字:STM32系列  RTC 引用地址:STM32系列里RTC的亚秒特性及功能(上)

上一篇:stm32f103定时器,STM32F103的11个定时器详解
下一篇:单片机常用的STM32五个时钟源讲解

推荐阅读最新更新时间:2024-11-13 00:26

关于RTC备份数据区数据丢失问题的讨论
问:最近在使用STM32F103RB时,出现了断电后再上电时备份数据区数据丢失的现象,不知道是什么原因,最初在设计的时候芯片核的电源(数字部分电源)和ADC的电源是相连的,备份数据区的数据没有丢失,现在将ADC的电源单独采用一个电压基准芯片供电后,断电再上电发现备份数据区的数据丢失了,全部为0包括时间。如果我将现在的电路板的ADC电源链接到数字电源上,数据就不丢失了。为提高ADC精度,又不丢失备份数据区数据,哪位仁兄有好的建议,感谢!! 答:在断电时,请保证同时切断VDD和VDDA 请用示波器看看,怀疑断电时你的VDDA下降的太慢,而VDD很快消失。在断电时,应该保证同时切断VDD和VDDA。 问:RTC备份数据区与ADC电源关
[单片机]
关于<font color='red'>RTC</font>备份数据区数据丢失问题的讨论
STM32复习笔记(十二)RTC实时时钟(低功耗待机唤醒)
一、RTC实时时钟特征与原理: ★ RTC (Real Time Clock):实时时钟 ★ RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期。 ★ RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域(BKP)写保护。 (1)RTC特征: (2)RTC工作原理框图: (3)RTC由两部分组成: APB1接口:用来和APB1总
[单片机]
<font color='red'>STM32</font>复习笔记(十二)<font color='red'>RTC</font>实时时钟(低功耗待机唤醒)
STM32开发笔记52:STM32F4+DP83848以太网通信指南系列(六)
本章为系列指南的第六章,这一章我们暂时离开Keil,离开STM32,离开C语言,这一章我们要去了解一些以太网相关的知识,特别是学习使用大名鼎鼎的调试以太网通信程序的利器:WireShark。 帧结构 我们从小就听说过计算机中全都是二进制的0和1,这个道理几乎连考不上三本的文科生都懂,但是很难有直观的感受,甚至连由16个bit,也就是16个二进制的0/1构成的十六进制0/F,再由两个十六进制的0/F形成的0x00/0xFF这种Byte(字节),都很难直观感受到,毕竟计算机世界太丰富了,各类色彩,图片,网站,视频,游戏充斥着我们的日常,所谓「乱花渐欲迷人眼,浅草才能没马蹄」,形形色色的计算机资源就是「乱花」,其背后单调的Byte才是
[单片机]
<font color='red'>STM32</font>开发笔记52:STM32F4+DP83848以太网通信指南<font color='red'>系列</font>(六)
ARM-Linux驱动移植--RTC(实时时钟)移植
硬件平台:FL2440 内核版本:2.6.28 主机平台:Ubuntu 11.04 内核版本:2.6.39 首先修改内核源码/arch/arm/mach-s3c2410/mach-smdk2410.c 添加红色字体部分 static struct platform_device *smdk2410_devices __initdata = { &s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c, &s3c_device_iis, &s3c_device_sdi, &s3c_dev
[单片机]
ARM-Linux驱动移植--<font color='red'>RTC</font>(实时时钟)移植
stm32 rtc 晶振问题解决
这几天在鼓捣stm32的rtc,先焊了一个板子(从stm家园, www.stmsky.com 弄了几块stmsky001pcb板),试了一下rtc显示时间的程序,ok,兴奋呀! 第二天便有网友在移植rtt系统说板子上的rtc不能起振,感觉很奇怪,一样的板子怎么可能会出现这种情况,赶忙我又试了一下我的板子,奇怪的是,昨天还好好的,今天也是不行了。不能起振了。找原因吧。 于是没有多想,肯定是硬件的原因,因为程序昨天跑的好好的。无外乎 晶振和电容,电容我用的10pf,晶振6p的。什么原因呢? 网友dami也和我一样的板子 他的一直ok 所以问了一下,人家晶振随便从别的板子上搞得就ok,我的就是不行,换了20pf 30pf 电容均不行
[单片机]
第四课 MC9S08DZ60之实时计数器RTC
本章介绍一个利用实时中断,设计的调度模块。利用该模块,不仅可以让I/O管脚输出特定占空比的方波,还可以让程序有序的去调度。 建议读者先自行阅读芯片资料第15章的内容,内容不多。芯片资料可以到我的百度盘下载,该芯片的中英文的资料分别https://pan.baidu.com/s/1dgVbkE https://pan.baidu.com/s/1o9qFU5c,如果对英文不是很熟悉,那就阅读中文的。 1.摘取文字来了解这款芯片的RTC 第一句:15.1.2 Features 中“ 8-bit up-counter”upcounter就是向上计数,比如一个变量从0开始然后1、2、3...一直往上 加。 第二句:15
[单片机]
第四课 MC9S08DZ60之实时计数器<font color='red'>RTC</font>
STM32开发笔记50:STM32F4+DP83848以太网通信指南系列(四)
本章为系列指南的第四章,这一章将正式进入以太网的配置和使用。首先我们关注一下PHY的配置,前面讲到,我们的工程使用了开发板上的一颗DP83848芯片。 RMII和ADDR的确定 接下来我们来看开发板的原理图: 通过电路原理图可以看到接线方式是使用RMII接口模式接线的,因此接下来我们在配置PHY的时候注意要是用RMII。 我们知道DP83848,以及任何一个PHY芯片,都是有5个bit的地址信号的,RMII通信时会携带ADDR数据,只有ADDR吻合的PHY才会有响应。先来看看原理图上DP83848的管脚定义,原理图上DP83848的42号脚标注的PHYAD0,并且引脚悬空了,没有特别的处理。我们再来看看DP83848的数据手
[单片机]
<font color='red'>STM32</font>开发笔记50:STM32F4+DP83848以太网通信指南<font color='red'>系列</font>(四)
stm32RTC
1、stm32f10x_it.c文件 /******************************************************************************* * Function Name : RTC_IRQHandler RTC中断 * Description : * Input : None * Output : None * Return : None *******************************************************************************/ extern volatile bool S
[单片机]
<font color='red'>stm32</font>之<font color='red'>RTC</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved