电子说
以前的开发过程中更多针对原型实现,对功耗控制考虑较少。正好借此机会,基于瑞萨RA4M2微控制器,围绕低功耗Sleep模式的应用展开。我们通过配置LPM(Low Power Mode)模块,让MCU在流水灯演示后自动进入Sleep,随后可通过按键中断或串口接收中断唤醒。
在RASC Configuration工具中,需添加LPM模块并设置为Sleep模式,保证MCU进入低功耗状态时外设时钟仍可工作。关键配置如下:

外部中断(IRQ5/IRQ6)配置为Falling Edge,回调函数统一为 key_irq_callback,优先级设置为12。串口SCI UART9配置需使能RX中断,回调函数为 uart9_callback,以便串口接收数据时可唤醒MCU。
在 LPM 模块的Wake Sources中启用按键中断与串口接收中断RXD0,这样当设备处于 Sleep 时,按下按键或收到串口数据均可触发唤醒并进入相应的中断回调处理流程。
低功耗相关库函数较少,主要在于配置。相关函数如下:
R_LPM_Open:
执行必要的初始化R_LPM_LowPowerModeEnter:
进入低功耗模式,并在唤醒后恢复MCU功能R_LPM_Close:
关闭LPM实例R_LPM_LowPowerReconfigure:
对低功耗模式进行配置R_LPM_IoKeepClear:
从深度软件待机模式唤醒后清除IOkeep位。
工程中,在main函数中初始化:
R_LPM_Open(&g_lpm0_ctrl, &g_lpm0_cfg);
主流程结束后,通过
R_LPM_LowPowerModeEnter(&g_lpm_ctrl);
进入Sleep,等待按键或串口唤醒。唤醒操作已经在RASC配置时进行了定义,配置唤醒相关中断源。
实验测得,开发板在正常运行时功耗约50-80mA,进入Sleep后降至5-15mA,节能效果显著。Sleep模式下,CPU时钟门控关闭,外设时钟保持,唤醒延迟极短(<10us),非常适合对响应速度有要求的场景。对于更极致的低功耗需求,可考虑Standby/snooze等更深模式,但需权衡唤醒速度以及外设运行情况。
全部0条评论
快来发表一下你的评论吧 !