This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/MSP432-RTOS:MSP432-RTOS从DeepSleep唤醒(LPM3)

Guru**** 2595805 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/643046/rtos-msp432-rtos-msp432-rtos-wake-up-from-deepsleep-lpm3

部件号:MSP432-RTOS

工具/软件:TI-RTOS

您好,

我正在试用开发板MSP-EXP432P401R (黑色),并尝试将设备放入DeepSleep (LPM3)。

我在时间间隔模式下激活了看门狗作为时钟源(Clock.tickSource = Clock.TickSource_user)。 看门狗由ACLK驱动。 我的ACLK是外部32kHz晶体振荡器。

看门狗调用调用Clock_tick()的中断例程。

使用活动的调试会话一切正常。 重置后,将启动一个任务,在显示屏上显示hello消息。 几秒钟后,显示屏将被清除,任务结束,设备进入休眠状态。 在电源通知例程中,我切换输出以查看设备何时唤醒和休眠。 此输出将与每个唤醒/睡眠事件切换。  

如果我停止调试会话并重置设备,hello消息任务将按预期运行。 但当它结束并且设备落入DeepSleep中时,它永远不会重新唤醒。 驱动看门狗间隔计时器的ACLK停止。 该设备只消耗几微安,就像想象中的那样,但会永远休眠。

监视程序计时器不应该在lpm3中停止,但不幸的是,它已停止。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    用户,

    我想建议几件事供您研究。

    您是否正在使用我们最新的软件(SimpleLink MSP432 SDK)? 如果不是,请升级到此。

    第二,您是否有一个红色的启动板可供尝试? 黑色启动板包含试验性的预释放硅片,该硅片已通过多种方式进行了更新。 黑色启动板包含Rev B材料,而发布的材料至少是Rev C或Rev D。您可以在 http://www.ti.com/.../slaa700的第3部分中找到有关这两个要点的更多信息

    我们的建议是始终获取最新的硬件: http://www.ti.com/tool/msp-exp432p401r


    尽管如此,我个人认为这并不像您正在尝试的那样,让ACLK由LFXT提供。 您是否已检查以确保LFXT在调试中处于活动状态,并且ACLK的源代码和WDT CLK源代码是ACLK?

    您描述的行为听起来好像WDT是由SMCLK或REFOCLK提供的。 我这样说是因为当您处于调试模式时,设备会模拟LPM3,因为调试功能不会保留在LPM3中,因此为了测试功能,设备只会模拟LPM3。 因此,在调试模式下,即使进入"LPM3",设备的时钟系统也将保持活动状态。 但是,当设备自行关闭时,该设备将实际进入LPM3,关闭时钟系统,您将看到一个备用功能,因为如果LFXT != ACLK != WDTCLK,该设备实际上不会唤醒。

    这些建议应该能帮助您继续前进,我现在将关闭此帖子。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    进一步了解此内容后,TRM中的此部分可能有用。  

    您是否尝试过使用BCLK或VLOCLK? 我相信这可能是您所看到的更准确的原因,但我想知道您所看到的是什么。  

    我还假设您将此作为参考?: processors.wiki.ti.com/.../TI-RTOS_MSP432_Timer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Evan:

    processors.wiki.ti.com/.../TI-RTOS_MSP432_Timer链接 正是我用来构建测试应用程序的链接。 感谢您的回复。 我读了TRM的摘录并更改了行

    WDT_A_initIntervalTimer (WDT_A_CLOCKSOURCE_ACLK,WDT_A_CLOCKITERATIONS_64)

    在我的主页上

    WDT_A_initIntervalTimer (WDT_A_CLOCKSOURCE_BCLK,WDT_A_CLOCKITERATIONS_64)

    就像描述的那样。 这导致了编译器错误,因为WDT_A_CLOCKSOURCE_BCLK定义为WDT_A_CTL_ssel_4,但MSP432不存在该错误! 然后我将BCLK更改为XCLK,它被成功编译!

    现在一切都如预期的那样运作。 CPU定期唤醒,调用notifyfxn并再次进入休眠状态。

    在MSP_EXPP401R_INITGeneral中,使用初始化具有LFXT的ACLK和BCLK

    cs_startLFXT (CS_CTL2_LFXTDRIVE_1);
    cs_initClockSignal (CS_ACLK,CS_LFxTCLK_SELECT,CS_Clock_diver_1);
    cs_initClockSignal (CS_BCLK,CS_LFxTCLK_SELECT,CS_CLock_diver_1);

    所以一切看起来都像是我在使用外部32kHz的oszillator而不是内部VLOCLK。

    在我的"Hello"任务结束时,我使用降低了看门狗间隔
    WDT_A_initIntervalTimer (WDT_A_CLOCKSOURCE_XCLK,WDT_A_CLOCKITERATIONS_512);

    这会将电源电流降低到68µA Ω,这对于测试是可以的。