S32K3xx电源管理(低功耗)学习

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》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

studyingdda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值