S32K3xx学习笔记_WKPU

S32K3xx学习笔记_WKPU

1、简介

最近看到S32K3XXRM手册中的WKPU部分,简单记录一下笔记,Wakeup Unit简称 WKPU

2、WKPU配置信息

2.1、特征

  • 多个可配置的异步唤醒事件为芯片提供可配置的低功耗唤醒功能。
  • 支持4个内部和60个外部中断或唤醒事件源。
  • 支持NMI输入。

2.2、WKPU配置表

NMI:Non Maskable Interrup,不可屏蔽中断
中断源数值描述
NMI中断源1单个NMI引脚连接到所有应用程序核心
内部唤醒源4①SWT_0唤醒、RTC-API唤醒。②RTC超时唤醒。 ③模拟比较器轮循唤醒(从LPCMP_0、1和2轮循唤醒)。④RTI唤醒
外部唤醒源6060个GPIO引脚(WKPU[0]-WKPU[59])支持唤醒功能。K312只有32个GPIO支持唤醒
用于外部中断的故障过滤器60每一个外部唤醒源上都有故障过滤器
外部中断向量8----

注意:唤醒源0 (RTC-API)和2 (CMP_x触发模式唤醒)都使用RTC-API唤醒,带有触发模式具有更高的优先级。这意味着,如果您配置LPCMP_x。对于任意一个比较器,RTC_API唤醒仅用于CMP_x触发模式操作。在此场景下,RTC-API唤醒不会导致CPU从待机模式唤醒。

可以启用或禁用上述所有唤醒源。此外,您可以通过使用WKPU配置寄存器来配置这些唤醒源,以便在上升或下降事件时提供唤醒

2.3、WKPU NMI配置

  • WKPU支持一个外部唤醒源,该外部唤醒源可导致片上NMI(不可屏蔽中断)和系统唤醒事件
  • 应用核心Cortex-M7_0和Cortex-M7_1时。在产生唤醒事件(内部或外部)的情况时,WKPU启动芯片的恢复,并根据配置向核心提供中断,具体配置如下图所示:

在这里插入图片描述

2.4、WKPU唤醒源连通性

WKPU允许外部NMI引脚使芯片上的核心NMI生效。NMI支持NSR的状态和溢出标志。这是可以用NCR来做的

  • 通过配置NCR[NDSS]控制NMI目标中断。
  • 使用NCR[NFEE]和NCR[NREE]的2:0位控制NMI引脚的上升沿、下降沿中的任何一种边沿触发。每个内核的NMI引脚的边沿触发的使能下相互独立。

WKPU支持在中断被清除之前捕获每个NMI输入的第二个事件,从而减少丢失NMI事件的机会

在这里插入图片描述

上图唤醒源映射到WKPU:

  • 唤醒源0:SWT_0超时,RTC-API API唤醒
  • 唤醒源1:RTC- API RTC超时
  • 唤醒源2:从LPCMP_0、LPCMP_1或LPCMP_2轮询唤醒中断(触发模式中断)
  • 唤醒源3:RTI唤醒
  • 唤醒源4-唤醒源63:外部引脚唤醒源,WKPU[0] - WKPU[59]

如果您配置了任何或所有LPCMP_x。RRCR0[RR_EN]字段要激活,对应的CMP_x引脚必须专用于CMP_x操作。如果您不使用任何cmp,您可以使用SIUL2。MSCRx[SSS]配置引脚的数字功能。

注意:在进入任何芯片的低功耗模式之前,必须启用WKPU(通过使用MC_ME.PRTNx_COFBy_CLKEN)。

3、WKPU接口框图

WKPU支持64个可以产生中断或唤醒事件的外部唤醒源,以及2个可以产生不可屏蔽中断请求或唤醒事件的外部源。此外,它将自己的唤醒事件与其他唤醒源生成的事件结合起来,为系统提供单个唤醒。WKPU及其与其他系统组件的接口框图如下所示。
在这里插入图片描述

4、WKPU的分类

WKPU包括以下两种唤醒源:不可屏蔽中断、外部中断

4.1、不可屏蔽中断

  • 2个NMI源
  • 2个模拟故障滤波器
  • 每个核心独立的中断目标:

​ (1)不可屏蔽中断

​ (2)关键中断

  • 激活(上升/下降)边缘选择控制事件
  • 可配置从NMI源触发系统唤醒

4.2、外部唤醒/中断

  • 中断源的一个系统中断向量
  • 64个模拟故障滤波器
  • 独立中断屏蔽
  • 边缘检测
  • 可配置所有中断源来触发系统唤醒

5、WKPU具体功能描述

5.1、不可屏蔽中断

  • WKPU支持在中断被清除之前捕获每个NMI输入的第二个事件,从而减少丢失NMI事件的机会,尽管它创建了一个溢出条件。
  • 每个NMI通过一个可绕过的模拟故障滤波器
  • NMI:Non Maskable Interrup 不可屏蔽中断

5.2、NMI管理

  • 每个NMI可以独立启用或禁用。这可以使用单个NCR寄存器来执行,该寄存器将给定NMI的所有配置位包含在单个字节中(参见NMI配置寄存器(NCR))。
  • 定义为NMI的后可以由用户配置为识别具有上升沿有效、下降沿有效或上升沿下降沿都有效的中断。
  • 不应该禁用两种边沿触发,会导致检测不到到中断
  • 通过配置NCR[NREEn]和NCR[NFEEn]位,用户可以控制NMI的激活边缘。

注意:复位后,NREE和NFEE设为“0”;因此,复位后NMI功能被禁用,必须通过软件显式启用。

  • 在pad的NMI功能启用后,pad不能重新配置以覆盖或禁用NMI。

  • NMI目标中断由用户通过NCR[NDSSn]位的配置来控制。

  • 每个NMI都支持一个状态标志和一个超限标志,它们位于NSR寄存器中(参见NMI状态标志寄存器(NSR))。该寄存器是一个write-1清除寄存器类型,防止无意中覆盖同一寄存器中的其他标志。当检测到NMI事件时,状态标志置位。每当检测到NMI事件并且状态标志置位(即状态标志尚未清除)时,就会设置超限标志。

  • 通过向NSR寄存器中相应的溢出位写入’1’来清除溢出标志。如果状态位被清除,溢出位仍是置位,则挂起的中断未被清除。

  • 在NMI ISR期间,在从NMI唤醒芯片时,对ECC保护的内存的任何写操作都必须具有正确的ECC。

5.3、外部中断

  • WKPU支持2个中断向量到芯片的中断控制器。每个中断向量可以支持来自设备垫的外部中断源的数量,所有向量的总数等于外部中断源的数量。每个外部中断源被精确地分配给一个中断向量。中断向量分配是顺序的,因此一个中断向量用于外部中断源0到N-1,另一个中断向量用于N到N+M-1,以此类推。
  • 外部中断垫使用的向量的优先级是根据平台和中断控制器的优先级设置的,但是每个中断组的pad分配可以由芯片独立配置。
  • 外部中断线有一个应用于它们的数字故障滤波器。

5.4、外部中断管理

  • 每个中断都可以独立地启用或禁用。这可以使用单个卷起的寄存器(中断请求启用寄存器(IRER))来执行。定义为外部中断的垫可以由用户配置,以识别具有活动上升沿、活动下降沿或两个边都是活动的中断。
  • IRQ边缘触发方式由用户通过配置寄存器WIREER和WIFEER来控制
  • 每个外部中断支持一个单独的标志,它保存在标志寄存器WISR中。这个寄存器是一个clear-write- by- 1寄存器类型(W1C),防止无意中覆盖同一寄存器中的其他标志。

注意:向IREE[x]和IFEE[x]写入’0’将完全禁用该pad的外部中断功能(也就是说,在该pad的任何活动上都不会产生系统唤醒或中断)

6、WKPU初始化信息

本节讨论以下特性的初始化:

  • 故障滤波器和pad的配置
  • NMI不可屏蔽中断

6.1、故障滤波器和pad的配置

  • 当NMI被禁用时,应该执行故障过滤器控制和pad配置。这是为了避免由配置过程引起的故障错误触发。
  • 当使能故障滤波器时,不要使能上升沿/下降沿事件位,即NCR[NREE]、NCR[NFEE]、NCR[RREE]和NCR[RFEE]位在同一个寄存器写入

6.2、NMI不可屏蔽中断

如果NMI的IBE由NMI配置寄存器(NCR)的NFEE或NREE字段控制,当NMI中断引脚首次启用时,可能会得到一个假中断标志。您必须按照以下顺序在NMI引脚上的上升沿事件中启用NMI中断:

  • 写1到 NCR[NFEE0] , NCR[NFEE1]
  • 写1到 NCR[NREE0] , NCR[NREE1]
  • 写0到 NCR[NFEE0] , NCR[NFEE1]

如果NMI的IBE被绑定为1,则不会出现错误中断

7、WKPU内存映射和寄存器

部分保留寄存器读为零,写没有影响。当试图访问完全保留的寄存器空间时,会产生传输错误。外部pad控制寄存器的字段长度取决于芯片中实现的WKPU通道的数量。

WKPU 基地址: 402B_4000h

偏移量寄存器宽度(位)访问权限复位值
0hNMI Status Flag Register (NSR)32W1C0000_0000h
8hNMI Configuration Register (NCR)32RW6060_0000h
14hWakeup/Interrupt Status Flag Register (WISR)32W1C0000_0000h
18hInterrupt Request Enable Register (IRER)32RW0000_0000h
1ChWakeup Request Enable Register (WRER)32RW0000_0000h
28hWakeup/Interrupt Rising-Edge Event Enable Register (WIREER)32RW0000_0000h
2ChWakeup/Interrupt Falling-Edge Event Enable Register (WIFEER)32RW0000_0000h
30hWakeup/Interrupt Filter Enable Register (WIFER)32RW0000_0000h
54hWakeup/Interrupt Status Flag Register (WISR_64)32W1C0000_0000h
58hInterrupt Request Enable Register (IRER_64)32RW0000_0000h
5ChWakeup Request Enable Register (WRER_64)32RW0000_0000h
68hWakeup/Interrupt Rising-Edge Event Enable Register (WIREER_64)32RW0000_0000h
6ChWakeup/Interrupt Falling-Edge Event Enable Register (WIFEER_64)32RW0000_0000h
70hWakeup/Interrupt Filter Enable Register (WIFER_64)32RW0000_0000h

拓展知识:

1、pin、pad的区别

PIN指芯片封装好后的管脚,即用户看到的管脚;
PAD是硅片的管脚,是封装在芯片内部的,用户看不到。PAD到PIN之间还有一段导线连接的。

2、W1C寄存器

W1C:Write 1 to clear,这是具有sticky特性的某一bit需要做的操作。比如当处理器运行到某一个状态导致某寄存器的某一位被置位,而该位正好具有sticky(粘滞性),那么这个1就会一直保持,哪怕触发置位的事件已经完成。将该位清零的方法就是往这位做写1操作,即W1C。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值