跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT SDK
  4. 在power down模式下的rtc计数功能

在power down模式下的rtc计数功能

已定时 已固定 已锁定 已移动 YT SDK
1 帖子 1 发布者 297 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • yysqY 离线
    yysqY 离线
    yysq YunTu
    写于 最后由 编辑
    #1

    demo工程:Power_Mode_Demo.zip

    背景

    • 客户问:芯片的rtc功能可以计算出power down的时间么?最长时间多久?

    解决方案描述

    • ME0中有一个有个Register File区域可以保存在power down状态下的值,将时间保存在这个区域可以计算出power down的时间。
      ea4df0bd-fe8d-4021-ad0f-550091f9d2a4-image.png
      -它采用32位秒计数器,每1秒记录一次时间递增。32位二进制数的最大值为4,294,967,295,正好对应4,294,967,295秒,换算成年份就是4,294,967,295 ÷ (365×24×3600) ≈ 136.19年,这个RTC最长能够保存的时间是:约136.19年
      b3c3921f-5cc9-428f-83e2-b2a167c47aea-image.png

    步骤

    一.选择Power_Mode_Demo进行修改
    3eaa37f9-2518-4085-b810-387ef8a5b465-image.png
    二.点击SXOSC进行配置,打开PowerDown Enable开关,右边打开RTC_CLK
    ac0e62ff-5551-4a7f-9b6c-8d7c83e19543-image.png
    三.打开RTC外设,设置初始日期,生成代码
    2ba9d6c9-fdef-475c-8e47-7c6c4cb2ca66-image.png
    四.关键代码
    首次启动①初始化RTC外设②设置初始时间③开启计数
    ​ 不是首次启动,意味着设备是从powerdown模式中唤醒,此时读取第一次休眠前保存的时间,并与当前RTC时间进行比较,计算出总共休眠了多久。

        if(isFirstBoot)
        {
            RTC_DRV_Deinit(RTC_INST);
            RTC_DRV_Init(RTC_INST, &rtc_config0);
            RTC_DRV_SetTimeDate(RTC_INST, &currentTime);
            RTC_DRV_StartCounter(RTC_INST);
        }
    
        if(!isFirstBoot)
        {
            rtc_timedate_t savedTime;
            rtc_timedate_t currentTime;
            
            Read_TimeDate_from_REGFILE(&savedTime, regfile_base);
            PRINTF("Time before power down: %04u-%02u-%02u %02u:%02u:%02u\n", 
                   savedTime.year, savedTime.month, savedTime.day,
                   savedTime.hour, savedTime.minutes, savedTime.seconds);
            
            RTC_DRV_GetCurrentTimeDate(RTC_INST, &currentTime);
            PRINTF("Current RTC time: %04u-%02u-%02u %02u:%02u:%02u\n", 
                   currentTime.year, currentTime.month, currentTime.day,
                   currentTime.hour, currentTime.minutes, currentTime.seconds);
          
            CalculatePowerDownTime(&savedTime, &currentTime);
    
        }
    
    1 条回复 最后回复
    0

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

    帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

  • can
    19
    demo
    19
    uds
    11
    lin stack
    9
    fbl
    5
    md14
    5
    yt-link
    5
    adc模块
    4
    Online Users
    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门