0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

麦辣鸡腿堡 来源:茶话MCU 作者:茶话MCU 2023-04-30 16:28 次阅读

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

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

wKgZomRGPYSAXb-2AAChPJJDLbw120.png

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

wKgaomRGPZeAJOUBAAEha8CL_8c714.png

显然,当有了这个亚秒计数器后,我们就可以获得少于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系列也很方便实现。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2266

    文章

    10871

    浏览量

    354787
  • RTC
    RTC
    +关注

    关注

    2

    文章

    527

    浏览量

    66308
收藏 人收藏

    评论

    相关推荐

    转:XMEGA学习记录——抽筋扒皮彻查RTC32

    _get_time();---------------------------------------------------------------------------------------------------简单测试一下,读到的RTC32计数器的值为0xC05,因为我断电了一段时间,
    发表于 07-28 15:04

    STM32CubeMX RTC简介

    和 31 天。只要芯片的备用电源一直供电,RTC的时间会一直走。STM32RTC 外设(Real Tim
    发表于 08-18 06:37

    STM32RTC简介

    STM32RTC学习笔记Mcu:STM32F103RBT61、RTC简介RTC(Real Time Clock)实时时钟,是
    发表于 03-01 06:47

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

    我目前正在使用 STM32WLE5CC MCU,它具有带 32 位唤醒计数器的 RTC 的强大功能,但我的其他非 lorawan 项目需要一个低成本的 MCU,它也需要这个“带 3
    发表于 12-02 06:14

    如何实现STM32 RTC时间之间的差异在10左右?

    我使用评估板 RTC_timestamp 示例运行:en.stm32cubeh7\STM32Cube_FW_H7_V1.3.0\Projects\S
    发表于 01-11 06:46

    RTC不均匀

    STM32F103RCT6的RTC不均匀
    发表于 12-07 18:13 0次下载

    STM32F10x _RTC中断

    STM32F10x_RTC中断
    的头像 发表于 03-25 11:39 3173次阅读
    <b class='flag-5'>STM32</b>F10x _<b class='flag-5'>RTC</b><b class='flag-5'>秒</b>中断

    STM32F1_ FLASH编程

    STM32F1_FLASH编程
    的头像 发表于 04-08 10:28 3833次阅读
    <b class='flag-5'>STM32</b>F1_ <b class='flag-5'>片</b><b class='flag-5'>内</b>FLASH编程

    STM32处理器示例

    STM32处理器示例
    发表于 03-23 10:09 15次下载
    <b class='flag-5'>STM32</b>处理器<b class='flag-5'>上</b>的<b class='flag-5'>示例</b>

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

    包含二进码十进数格式 (BCD) 的、分钟、小时( 12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的值。系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。只要芯片的备用电
    发表于 12-05 21:06 13次下载
    <b class='flag-5'>STM32</b>CubeMX学习笔记(14)——<b class='flag-5'>RTC</b>实时时钟使用

    STM32F1 使用easyflash操作flash

    STM32F1 使用easyflash操作flash
    发表于 12-09 10:06 15次下载
    <b class='flag-5'>STM32</b>F1 使用easyflash操作<b class='flag-5'>片</b><b class='flag-5'>内</b>flash

    STM32RTC特性以及应用演示的分享

    绝大多数STM32系列里的RTC都具有【或称子】计数单元。为了了解
    的头像 发表于 04-15 11:27 2651次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>片</b><b class='flag-5'>内</b><b class='flag-5'>RTC</b><b class='flag-5'>亚</b><b class='flag-5'>秒</b><b class='flag-5'>特性</b>以及应用演示的分享

    STM32RTC特性的应用示例(下)

    这个专用唤醒定时器,而是想基于ALARM事件和特性来实现上面需求。 对于RTC的ALARM功能我们都不陌生,即先预设需要ALARM的时间点,当日历时间跟设定的ALARM时间匹配时就
    的头像 发表于 04-30 16:32 1596次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>片</b><b class='flag-5'>内</b><b class='flag-5'>RTC</b><b class='flag-5'>亚</b><b class='flag-5'>秒</b><b class='flag-5'>特性</b>的应用<b class='flag-5'>示例</b>(下)

    STM32系列里RTC特性及功能(

    绝大多数STM32系列里的RTC都具有【或称子】计数单元。为了了解
    的头像 发表于 06-21 15:53 2810次阅读
    <b class='flag-5'>STM32</b>系列里<b class='flag-5'>RTC</b>的<b class='flag-5'>亚</b><b class='flag-5'>秒</b><b class='flag-5'>特性</b>及功能(<b class='flag-5'>上</b>)

    STM32系列里RTC特性及功能(下)

    ,就这样延续下去。 这样操作也是可以的,即每次在ALARM中断里修改新的ALARM时间点。下图是对ALARM值进行编程的流程【设置时先要关闭ALARM,修改ALARM值后再手动开启ALARM单元】: 不过,结合眼前的应用需求,我们可以不使用上面的做法,而是巧妙地使用RTC
    的头像 发表于 06-21 15:56 1419次阅读