[与 MCXN947 合作]
我在 SPC 中启用了电压检测中断(禁用复位),无论是在低功耗模式还是运行模式下(禁用复位,启用带隙)。
SPC0->ACTIVE_CFG: 3f101615
SPC0->LP_CFG: 3f221515
SPC0->VD_IO_CFG: 0000000a
SPC0->VD_SYS_CFG: 0000000a
SPC0->VD_CORE_CFG: 0000000a
我已在 WUU 中启用 SPC 作为唤醒源(WUU->ME 位已设置)。
SPC 中断在运行模式下工作,但在掉电模式下不工作,即处理器不会唤醒来处理 SPC 中断。
我觉得它可能在工作,但是工作模式和断电模式下的响应速度差异很大。在运行模式下,SPC 中断响应速度更快,会反复触发;但在掉电模式下,触发信号中断所需的时间要长得多,而且只会触发信号一次。
预计从断电模式唤醒的延迟时间将比运行模式下的中断响应时间长。在断电模式下,MCU 的大部分功能处于静态状态。进入更深层次的低功耗模式的弊端之一是进入和退出该模式时延迟会增加。
关于中断只发生一次的问题,我怀疑可能是应用程序代码处理方面存在问题。请您参考 SDK 中包含的 power_mode_switch 示例,并将实现方式与您的代码进行比较?
如果问题仍然存在,请提供一个简单的项目,以便在 FRDM-MCXN947 板上重现该问题。我很乐意进一步调查此事。
谢谢!
BR
爱丽丝
上下文是:
- FreeRTOS 移植
-
- IRQHandlers 使用 setFromISR() 和 portYIELD_FROM_ISR()
- 一个高优先级任务正在等待 ISR 中设置的事件位,xEventGroupWaitBits()
- 一些中断通过 WUU 路由,以便在掉电模式下可用,包括一些外部引脚(似乎工作正常)和一些内部模块(VBAT、LPTMR、TDET、SPC),这些模块似乎工作正常,但 SPC 速度慢/无响应。
- SPC 中断在 IRQHandler 中被禁用,并在等待事件位设置的高优先级任务处理完毕后重新启用。该等待任务在处理事件位后还会再次调用 PM_EnterLowPower()。
问题在于SPC中断的响应方式与其他中断不同。当处理器被唤醒后,它会再次进入睡眠状态,并且不会再次发出触发信号。当它在运行模式下关闭时,它会继续触发(PM_EnterLowPower() 无法将处理器恢复到关机模式)。