NXP实战笔记(十三):32K3xx基于RTD-SDK在S32DS上休眠唤醒wakeup低功耗功能。

本文主要是介绍NXP实战笔记(十三):32K3xx基于RTD-SDK在S32DS上休眠唤醒wakeup低功耗功能。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、概述

2、配置目标

2.1、配置资源

2.2、模块依赖关系

3、RTD配置

3.1、时钟配置

3.2、Power配置

3.3、IO配置

3.3、Wkpu配置

3.5、中断配置

4、代码处理

4.1、链接文件处理

4.2、启动文件startup_cm7.s设置

4.3、休眠唤醒代码处理

5、实验结果

6、代码链接


1、概述

        S32K3xx仅有两种电源模式,RUN模式和STANDBY模式。S32K1xx之所以有Run、Sleep、Deep Sleep三种电源状态,是因为S32k1xx使用的ARM Cortex M4的内核,其内核就规定了这三种电源模式:

        Run:正常工作模式,允许PLL 倍频,内核、系统、总线频率运行在芯片的最高频率,功耗可达数十mA–上百mA

        Sleep:普通睡眠模式,大部分外设停止工作,内核、系统和总线部分关闭或降频工作,功耗可降至几个mA

        Deep Sleep:深度睡眠,几乎所有外设停止工作、NVIC停止工作,内核、系统和总线关闭,CPU内核停止工作,仅AWIC(异步唤醒中断控制器)这个用于唤醒的外设保持功能,功耗仅几十个uA。

        ARM cortex M系列内核进入低功耗模式是通过CPU执行汇编指令WFI(Wait for Interrupt)或者WFE(Wait for Event)完成。

唤醒源

四个内部源与60个外部源可以产生中断与唤醒事件。

        WKPU0:SWT0唤醒

        WKPU1:RTC唤醒

        WKPU2:CMP唤醒

        WKPU3:RTI唤醒

        WKPU4 - WKPU63:外部引脚

外部中断唤醒源的示例图如下

2、配置目标

2.1、配置资源

芯片型号

唤醒源

IO

S32K312

17

PTB16

2.2、模块依赖关系

模块

作用

FIRC快速时钟

进入Standby之前需要切换到快速时钟

Power

提供run与standby模式

Wkpu

休眠唤醒配置

链接文件

分配standby RAM使用

启动文件

上电启动更改

IntCtrl_Ip

中断

IO

设置为唤醒管脚

3、RTD配置

        本工程实践通过S32DS自带的illd配置工具实现。

3.1、时钟配置

找到时钟选项,添加一路standby 时钟

注意添加完成之后会报错与警告如下图,因为这些时钟是不使用的,需要关闭。

消除错误方法如下,详细信息里面选择不使用即可

        根据自身需要,在进入休眠时候哪些使能,哪些不使能呢?这里是可以自己选择的。但是WKPU是必须使能的。

其它的按照默认就行了,配置出来如下图

        为什么要添加一路呢,此处添加之后生成部分就会生成一份standby的时钟,如下图所示。

3.2、Power配置

电源管理这块配置如下所示

增加standby模式

3.3、IO配置

3.3、Wkpu配置

设置唤醒方式为上升沿唤醒

        设置唤醒源:注意一下为什么是17呢?刚才前面提到了,前面4个源为内部源,IO这块需要在原本13的基础上加4,这点需要非常注意。

添加中断

3.5、中断配置

注意后面的句柄函数出处如下,不是随便写的。

这些准备工作准备好了,下面就是执行代码层面的操作了。

4、代码处理

        单独的根据配置生成的代码,休眠是没什么大的问题的,但是唤醒方面就比较不行了,唤醒只能唤醒部分,其实唤醒之后操作等同于复位,直接跳转到复位位置。

4.1、链接文件处理

        S32K3中的RAM前32K属于standby ram在休眠模式下也是可以起作用的。所以链接文件上需要在这块做文章,这块根据心情分多少不大于32K就行。

    int_standbysram			: ORIGIN = 0x20400000, LENGTH = 0x00000800    /* 2K */int_standbysram_stack	: ORIGIN = 0x20400800, LENGTH = 0x00000800    /* 2K */

为启动文件增加一个table,之后.s文件会使用

增加section段,便于存放standby ram里面数据

增加地址信息

4.2、启动文件startup_cm7.s设置

对应链接文件的段

去除ECC错误

4.3、休眠唤醒代码处理

寄存器方面需要重点关注如下

下图为设置下次启动的位置与唤醒等设置信息

下图寄存器为阅读唤醒源信息

ECC初始化信息,下面的代码是不调用的,在上电的时候会执行,所以调试器打不了断点信息的。

下次进入的向量表如下

程序的运行,在初始化的时候无需初始化唤醒操作,在进入唤醒之前进行初始化就行了。

5、实验结果

休眠时刻信息

唤醒源为17

Log信息如下

6、代码链接

休眠唤醒源码icon-default.png?t=N7T8https://download.csdn.net/download/weixin_43580890/89427906?spm=1001.2014.3001.5503

这篇关于NXP实战笔记(十三):32K3xx基于RTD-SDK在S32DS上休眠唤醒wakeup低功耗功能。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060053

相关文章

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien