您好,
我一直在使用 S32K358,并参考了 S32K3XX 的低电源管理单元示例,该示例演示了使用 GPIO 的睡眠和唤醒功能。不过,我还没能让它按照预期运行。
我怀疑可能是我的配置或执行出现了问题。如果您能查看我的配置和源文件,并告诉我它们是否正确或是否需要修改,我将不胜感激。
经过多次尝试,我仍然无法达到预期效果,因此我希望得到您的指导。
现附上我的配置和源文件,供您审阅。
IDE:S32DS 3.5.14
SW 版本:4.0
HW: S32K358
致以最诚挚的问候,
Karmegan C
嗨,@karmegancjk、
当检测到唤醒且 S32K358 进入 RESET 序列时,RAM 内容是易失性还是非易失性?
32KB 的 SRAM 内容是非易失性的,或者说,32KB 的 SRAM 在待机时保持供电:
如果 RAM 内容需要非易失性,如何创建备用 RAM 内存并将 RAM 数据复制到备用 RAM 内存?
为了使用备用 RAM,必须修改链接器文件,分配单独的 32KB,放置备用部分,并调整链接器地址符号。如果之前的 RESET 是 POR,则还必须初始化待机 RAM 的 ECC。
我已经给你发了一条私信,里面有关于如何使用待机 RAM 和一般低功耗的演示。
待机模式是否类似于 S32K358 Cortex-M7 的睡眠模式或深度睡眠模式?
是的,待机模式类似于深度睡眠:
致以最诚挚的问候,
Julián
你好,胡利安、
S32K358 通过 GPIO 实现休眠和唤醒功能。如上所述,当检测到上升沿时,控制器将按复位顺序进行 RESET。现在,我有一些疑问:
当检测到唤醒且 S32K358 进入 RESET 序列时,RAM 内容是易失性还是非易失性?
如果 RAM 内容需要非易失性,如何创建备用 RAM 内存并将 RAM 数据复制到备用 RAM 内存?
待机模式是否类似于 S32K358 Cortex-M7 的睡眠模式或深度睡眠模式?
嗨,@karmegancjk、
进入待机模式时,我使用的是唤醒通道 46 (PTC24)。我的理解是,如果在此引脚上检测到上升沿,则应触发唤醒中断。
外部唤醒信号支持上升或下降检测。
程序计数器是否从地址 0x00402000 开始恢复执行?
还是需要完全 RESET 微控制器才能恢复执行?
在以前的设备 (S32K1) 中,代码在 WFI 指令之后恢复执行,这意味着在 WFI 之后唤醒 ISR → 代码;S32K3 将在唤醒后始终执行 RESET 序列。这可能取决于配置的待机模式。
例如,正常待机退出执行 RESET 序列,然后初始化 sbaF 和 HSE 固件(如果已安装),然后在 reset_handler 恢复执行。
但是,快速待机退出可以跳过 sbaF 和 HSE 初始化,直接跳转到用户定义的启动地址。在此用户定义的启动地址之后,建议执行完全 RESET 以完全初始化设备(或者您可以再次返回待机状态,具体取决于应用程序的需求):
至于项目配置,似乎一切正常。
致以最诚挚的问候,
Julián
您好,
我对 MCU 进入待机模式(睡眠或深度睡眠模式)时的行为有些疑问。在这种模式下,程序计数器是否会冻结,并在唤醒后从矢量地址 0x00402000 重新启动,还是从停止的位置继续执行?
请检查我的电源和唤醒驱动程序配置(.cfg 文件中)是否正确。文件)是正确的吗?我附上了我的项目中的配置文件供你参考。
嗨,@karmegancjk、
您使用的是 S32K3X8EVB 还是定制硬件?
请记住,S32K358 在 PMIC 握手时增加了退出待机的步骤。 如果你不使用握手,请在 DCMRWF1: 已解决:S32K3: 请求唤醒和 RESET 行为支持——恩智浦社区中设置 PMIC_PGOOD_HNDSHK_BYP 位 。
另外,您配置的是哪个 GPIO?请使用 S32K3 参考手册所附的 S32K358_IOMUX.xlsx 文件交叉检查 WKPU 信号是否正确。
致以最诚挚的问候,
Julián