开发环境:S32DS3.4
开发芯片:S32K344
RTD: S32K3 Real-Time Drivers AUTOSAR 4.4 Version 2.0.0
介绍一下自己在项目过程中发现的使S32K344在休眠唤醒中切换状态的一种方法,当然不是唯一,也不是必须严格按照这个步骤来,只是希望能够帮助有需求的人快速的成功一个demo。
1.首先在S32DS下新建一个关于power模块的例程。新建的例程功能是让S32K在RUN模式下运行,新建的例程需要点击生成代码,否则会报错,因为配置文件缺失。
到此,一个例程就生成完了。接下来我们在POWER模块里配置让S32K344进入休眠模式并配置唤醒功能。
这里面有很多模式,但我们只选择SOC_PREPARE_STANDBY模式和SOC_STANDBY模式。
到这里,我们已经让S32K344进入了休眠模式,如果电源有电流显示的话,可以明显看到电流的消耗变小,一般小于1mA.
接下来配置如何唤醒它!
添加唤醒模块,中断控制模块,以及pin脚配置模块。
先看看唤醒模块的配置,也是重点部分。
默认NULL_PTR,即在回调里什么也不做。其实唤醒中断也不太需要回调,因为S32K344的唤醒相当于一次RESET,软件从头开始执行,休眠后的S32K344什么也不会做。这个回调并没有什么作用。
接下来编辑中断控制模块
我这里是在Wkpu_Ip_Irq.c中找到的。
最后配置一下pin脚
将WKPU_19的引脚使能,对应刚刚配置的HW_WKPU_23通道。
更新源码。
这里在工程的中断向量表中编辑相应的函数名,否则可能在程序启动时死在undefined_handle里,这个估计是NXP的坑,就别往里踩了,只要是使能的中断都填一下这个表。
添加刚刚新增模块的头文件
测试main函数,大家也可以自己发挥。
编译程序,没有错误。
最后,大家可以自己添加一个延时,让程序运行一段时间后进入休眠模式,然后在程序休眠后给配置的pin脚一个上升沿(这里配置的是上升沿,也可以配置成下降沿,或者both),然后你会发现程序重新跑了起来。为了更明显也可以添加LED灯等。
好了,结束了,祝一切顺利。