查看: 2938|回复: 3

[已解决] KL46进入lls模式后RTC和LPTMR无法唤醒(已解决)

[复制链接]

该用户从未签到

2

主题

30

帖子

0

注册会员

Rank: 2

积分
75
最后登录
1970-1-1
发表于 2014-5-15 13:55:33 | 显示全部楼层 |阅读模式
在使用PKL46Z256VLL4时,发现在进入lls模式之后,配置的lptmr和RTC模块无法唤醒,也不会进入llwu中断。查询手册发现在lls模式下,这两个模块的状态为“Async operation”,该如何设置才可以使这两个模块在lls模式下也可被唤醒,alternate clock source如何选择?
LPTMR时钟选择为外部32K晶振:
LPTMR0_PSR = (U32)0x02 | LPTMR_PSR_PBYP_MASK;
RTC的时钟源也是外部32K:
SIM_SOPT1 = SIM_SOPT1_OSC32KSEL(0u); 
麻烦各位FAE帮忙看下是否是时钟设置不正确?谢谢。
我知道答案 目前已有2人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-5-16 09:22:02 | 显示全部楼层

    回复:KL46进入lls模式后RTC和LPTMR无法唤醒

    根据你的描述我在KL46P121M48SF4RM参考手册的Figure 5-1. Clocking diagram时钟框图上用红色虚线画了一下时钟走向。
    你的alternate clock source通过SIM_SOPT1 = SIM_SOPT1_OSC32KSEL(0u); 将供LPTMR和RTC的ERCLK32K时钟选择由OSC32KCLK供给。
    那么你需要确保OSC32KCLK在LLS时是可用的,根据“25.10 Low Power Modes Operation”处描述可以看到“In Low Leakage Stop (LLS) modes, the OSC holds all register settings. If ERCLKEN and EREFSTEN bits are set before entry to Low Leakage Stop modes, the OSC is still functional in these modes.”
    你是否有在进入LLS模式前设置ERCLKEN和EREFSTEN位,是的OSC能够在LLS模式下工作呢?
    Figure 5-1. Clocking diagram KL46.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    30

    帖子

    0

    注册会员

    Rank: 2

    积分
    75
    最后登录
    1970-1-1
     楼主| 发表于 2014-5-21 14:54:36 | 显示全部楼层

    RE:KL46进入lls模式后RTC和LPTMR无法唤醒

    非常感谢您的解答,这两位我已经使能了,问题的原因是因为我在循环中反复配置lls,但是变量没有定义为static造成的,穿进去了随机值导致lls中断未能正确配置。
    还有一个问题,在正确配置之后,我发现在内部模块(RTC、LPTMR等)由llwu中断唤醒之后,会先执行llwu中断中的内容,然后又会执行正常中断服务程序,请问是这样设计的吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-5-21 15:38:51 | 显示全部楼层

    回复:KL46进入lls模式后RTC和LPTMR无法唤醒

    回复第 3 楼 于2014-05-21 14:54:36发表:
    非常感谢您的解答,这两位我已经使能了,问题的原因是因为我在循环中反复配置lls,但是变量没有定义为static造成的,穿进去了随机值导致lls中断未能正确配置。
    还有一个问题,在正确配置之后,我发现在内部模块(RTC、LPTMR等)由llwu中断唤醒之后,会先执行llwu中断中的内容,然后又会执行正常中断服务程序,请问是这样设计的吗? 

    不用客气
    请问你是否有按照LLWU_F3寄存器说明的方式来清除中断标志呢?
    LLWU_F3 MWUF0.jpg
     
    低功耗模式退出流程你可以参考应用手册AN4503 (Power Management for Kinetis and ColdFire+ MCUs)
    其中就有描述LLS的退出流程:
    9.1.5 Exiting LLS mode.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 15:53 , Processed in 0.095322 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表