S32K3学习笔记---S32K3之Standy(低功耗)模式

S32K3学习笔记—S32K3之Standy(低功耗)模式

1.前言

​ 关于休眠策略,大致分为两种情况,一种是给MCU断电,通过外围电路来唤醒。另外一种就是MCU不断电,进入低功耗模式。对于给MCU断电这种感觉相对简单,本文主要记录一下S32K3的低功耗(Standy)模式的实现,以及由外部输入唤醒的实现。

2.原理

​ ECU在某些对电源功耗要求严苛的条件下或者以较长时间周期工作时,需要使芯片进入低功耗(休眠)的模式以达到节能的目的

image-20231203213751719

1.此处介绍了CLKOUT_STANDBY时钟

image-20231203200510322

​ 1.从图可以看出,RUN模式支持所有的外设,但Standy模式下仅深色支持部分,像锁相环PLL是不支持的,所以将FIRC作为Standy的时钟。S32K3只有两种工作模式,Run和 Standy。这部分主要去看手册的电源管理模块。
image-20231203212804347

​ 1.此图介绍了Power-up的流程,可以看出从Standy模式唤醒,相当于一次reset。

3.EB配置

​ 其主要依赖模块:Mcu、Icu

3.1 Mcu

​ 关于Mcu模块,更多细节请参考:S32K3学习笔记—S32K3之MCU模块, 此处只配置Standy所需要的地方

image-20231203201129807

1.增加一个Standy模式
image-20231203201935541

1.将锁相环失能,下面三个全部为灰色表示无锁相环
image-20231203202305324

1.此处时钟选择FIRC,因为无锁相环

image-20231203202453386

1.从Mux1到Mux11,此处的时钟来源都是FIRC

2.外设时钟都不使能

image-20231203202913973

1.将此处的STANDY的时钟设置为FIRC时钟

image-20231203203152596

1.增加一个STANDY的模式

image-20231203203250143

1.选择工作模式,此处选择SOC_STANDBY

2.使能可使中断驱动的应用程序避免返回到空的主应用程序

image-20231203203510788

1.再McuPeripheral中,可以将在standy模式下不需要的时钟全部失能,但WKPU需要使能

3.2 Icu
image-20231203210959557
1.选择对应的WKPU资源,可以根据IoList查找WKPU资源

image-20231203211135001

1.使能对应通道的硬件中断功能

image-20231203211306412

1.增加一路Channel来配置Wkpu

image-20231203211447425

1.配置通道的默认激活边缘

2.配置此通道的测量模式

3.打开边缘检测,此处不需要注册回调函数

:关于Icu模块后面会在介绍PWM输入中详细记录,此处只用作简单的唤醒功能。

至此,Standy模式就配置完成,接下来就是调试。其调试也相对简单。

4.代码调试

​ 代码比较简单,我们再休眠流程中,将所有的输出关闭之后,重新初始化时钟、使能唤醒源、再配置低功耗模式就行

    
    /* close all output */
      .... 
      
    /* Initialize the clock tree and apply PLL as system clock */
    Mcu_InitClock(McuClockSetting_Standy);

    /* Initialize the WAKE_UP Mode */
    Icu_Init(NULL_PTR);
    /* Enble callback but not used */
    Icu_EnableEdgeDetection(IcuWkpu_PTE5);

    /* Disable standby IO pad keeping */
    IP_DCM_GPR->DCMRWF1 |= DCM_GPR_DCMRWF1_STANDBY_IO_CONFIG_MASK;

    /* Initialize the Mcu Mode */
    Mcu_SetMode(McuModeSetting_Standby);
    

​ 注意:如果有特殊需求(比如下降沿唤醒MCU的)就需要使能pad keeping,可使用IP_DCM_GPR->DCMRWF1 &= ~DCM_GPR_DCMRWF1_STANDBY_IO_CONFIG_MASK。

​ 那么在MCU初始化的时候一定要失能pad keeping,在初始化的时候加上就行: IP_DCM_GPR->DCMRWF1 |= DCM_GPR_DCMRWF1_STANDBY_IO_CONFIG_MASK;

最后,对于唤醒,我们只需要在对应的IO上面产生一个跳沿就能唤醒。

5.展望

​ 有机会将会多记录一下这种实际应用,一个小功能的记录也不错,如果按照模块来记录的话,将所有的东西都放到一个模块里面,感觉太大了,对于写和读都不是很方便。后续尽可能的细分一下。此处其实还可以去看一下之前文章**S32K3学习笔记—S32K324双核双中断向量表单elf修改-CSDN博客** 中所提到的Standby RAM,但其实也没有需求用到所以一直也没时间去研究这个,后续有时间补上这块。

  • 34
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
S32K3x4EVB-Q257是一款基于ARM Cortex-M内核的汽车电子控制系统的评估板。以下是入门指南: 1. 硬件准备:首先,确保你有一块S32K3x4EVB-Q257评估板、一台电脑和必要的USB连接线。 2. 软件安装:在电脑上安装相关的开发工具和软件。这可能包括S32 Design Studio集成开发环境(IDE)、S32 SDK软件开发套件、S32K Power Software Examples等。 3. 连接电源:将评估板插入电脑上的USB接口,并连接电源线到评估板上。 4. 下载示例代码:在S32 Design Studio中创建一个新项目,并下载示例代码到评估板上。这些示例代码将帮助你了解基本的功能和操作。 5. 硬件连线:根据需要,使用连接线将评估板与其他外部设备(例如传感器、显示屏等)连接起来。评估板上的引脚和接口可以通过手册查阅获得。 6. 运行代码:编译和下载代码到评估板上,并运行它。通过调试器或串口等方式,观察代码的执行情况和输出结果。 7. 进一步学习:通过阅读相关文档、手册和参考资料,了解评估板的更多功能和特性。你可以尝试修改示例代码或编写自己的代码,以实现特定的功能。 注意事项:在使用评估板时,务必遵循相关的安全操作规程,不要超过硬件的额定电压和电流,并保持设备的正确连接和操作。 以上是关于S32K3x4EVB-Q257入门的简要指南。希望这些信息对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值