S32K3xx电源管理学习
目录
芯片在某些对电源功耗要求严苛的条件下或者以较长时间周期工作时,需要使用电源管理,使芯片进入低功耗的模式以达到节能的效果。
之前简单了解过STM32F103的电源管理,这次在实际应用中需要使用S32K3xx芯片的电源管理,因此从以下几个点出发进行学习和总结:
1.S32K3xx有几种工作模式?
2.S32K3xx各工作模式下允许运行哪些外设?
3.S32K3xx在低功耗的模式下唤醒后程序从哪里运行?
4.S32K3xx降低功耗有哪些思路方法?
5.电源管理配置:S32K3xx怎样配置各工作模式和怎样进入各工作模式以及如何低功耗唤醒?
6.动手实操:实现Standby模式进入和唤醒小功能
一、S32K3xx的两种工作模式
S32K3xx不同于STM32F1xx,它只有两种工作模式:RUN和Standby模式。
二、S32K3xx在两种模式下允许运行哪些外设
由下图‘Power management system’可以看出:
对于S32K344而言RUN模式中所有外设都可以运行,时钟是能够以160MKz运行的;而Standby模式下锁相环PLLDIG是关闭了的,因此需要再开一组时钟源为FIRC的时钟作为Standby模式下的时钟。
在Standby中允许的外设包括定:PIT_0、RTC等模块以及SIRC、FIRC、SXOSC时钟。
三、S32K3xx从Standby模式唤醒后程序从哪里允许
由上图‘Power management system’可以看出,在Standby模式中Flash memory是挂掉了的,因此在Standby模式唤醒之后程序是从启动代码开始运行,相当于进行了一次Reset,程序重新从main()开始运行。
四、S32K3xx降低功耗两种思路方法
S32K3xx只有两种工作模式,RUN模式和Standby模式,因此降低功耗的思路是:
1.在RUN模式中降低时钟继续运行,以达到降低功耗的效果
- 优点:还可以继续运行外设,例如ADC等
- 缺点:功耗降低效果不明显
2.从RUN模式进入Standby模式,以达到降低功耗的效果
- 优点:功耗降低效果明显
- 缺点:Standby模式中允许允许的外设少;唤醒==复位,会丢失历史数据(可以外挂一个Flash解决)
五、电源管理配置
软件平台:S32 Design Studio for S32 Platform
Version:3.4
SDK Version:PlatformSDK_S32K3_2022_03
1.配置两种工作模式
1.1为Standby模式增加一个以FIRC为时钟源的时钟
1.2根据需要的外设在Standby组时钟中选择开启哪些功能的时钟(注:WKPU外设时钟一定要开启)
1.3在Drivers的POWER模块中增加STANDBY模式(注:STANDBY模式就是待机模式,涵盖了上面几个xxx_STANDBY)
Drivers层是POWER模块配置芯片的工作模式,MCAL层是在MCU模块中配置芯片工作模式。需要注意的是MCAL层的MCU还能配置时钟组等功能,开启MCU模块后也要在MCU中对应配置出刚刚添加的Standby时钟组才能生成时钟的源码。
1.4选择开启需要外设的时钟(注:同样必须开启WKPU外设)
1.5RUN模式的配置也是一样的
2.进入各工作模式
进入各工作模式步骤主要为两步:先初始化时钟,然后进入对应模式。用到的只有两条函数。
在进入Standby模式之前需要先初始化Wkpu模块和Standby时钟,然后进入Standby模式
在Standby模式中可以使某些IO电平继续工作
例如需要使PTC6在Standby模式中保持高电平
只需在进入Standby模式之前进行如下配置
3.低功耗唤醒配置
根据数据手册可知,退出Standby Mode的条件有三个:
- MC_RGM functional reset event
- MC_RGM destructive reset event
- WKPU wake-up events, WKPU[0]–WKPU[63]
我们使用event进行唤醒。S32K3xx总共有60个外部引脚中断唤醒源,以及内部的SWT ,RTC ,LPCMP以及RTI四个唤醒源
3.1唤醒事件设置-RTI
3.1.1在Drivers的Rit模块中选择PIT_0的CH_RTI通道
3.1.2勾选’GPT Stanbdy Wakeup Support’选项
3.2唤醒事件设置-RTC
3.2.1在Drivers的Rtc模块中选择RTC时钟源,时钟源为32KHz SIRC
3.2.2勾选’GPT Stanbdy Wakeup Support’选项
3.3唤醒事件设置-SWT
3.3.1在Drivers的Swt模块中使能Standby模式下的运行,设定超时时间
3.4WKPU模块设置
3.4.1在Drivers的Wkpu模块中增加对应的唤醒通道,并使能中断
3.4.2选择对应唤醒通道
3.4.3绑定唤醒通道,设置触发边沿
电源管理的配置项就只有上述这些,接下来自己实现一个小功能:
将MCU串口1与电脑连接,MCU上电进入RUN模式空循环,一旦MCU串口1接收到数据就进入低功耗模式。同时串口1的rx引脚作为唤醒源,当MCU在Standby模式中一旦检测到串口1rx引脚电平有上升沿变化就执行唤醒工作,重新进入RUN模式
六、动手实操
1.选择配置串口1的引脚,PTD13是默认路由唤醒功能的
2.在Drivers的POWER模块中增加STANDBY模式
3.在McuPeripheral选项卡中开启WKPU外设和LPUART1外设
4.增加一组Standby时钟
5.在Peripheral Clock View中打开Lpuart1和Wkpu外设时钟
6.在Drivers的Lpuart_Uart模块中配置LPUART1
7.设置串口回调函数
8.在Drivers的IntCtrl模块中使能Lpuart1的中断
9.绑定Lpuart1中断
10在Wkpu中配置唤醒源(注:PTD13的wkpu通道是24,但是由于64个中断唤醒事件中前4个是内部唤醒事件,因此外部唤醒事件的通道要加上4,因此PTD13的唤醒通道是28)
11.主要代码
12.效果:
- 串口
- 功耗
RUN模式:
Standby模式:
到此,S32K3xx电源管理的配置学习完成,具体应用到实际中时根据需求对相应模块和外设进行配置即可!
《S32K3xx Reference Manual》