0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MIMXRT1172 SNVS模式Wakeup唤醒

li1756686189 来源:嵌入式 MCU 2023-03-31 09:32 次阅读

802f49be-cf11-11ed-bfe3-dac502259ad0.png

80527b1e-cf11-11ed-bfe3-dac502259ad0.png

80763306-cf11-11ed-bfe3-dac502259ad0.png

当 I.MXRT1170进入 SNVS模式,所有的电源域除了 SNVS域以外都会关闭,功耗最低达到uA级,这意味着 ROM将会在唤醒后运行。ROM会使用SPI模式读命令,Octal Flash会在 OCR(Octal读)模式。在进入 SNVS模式前复位 Octal Flash芯片,或者将设置 RT1170进入SNVS模式的代码放在RAM中运行,使用 POR引脚作为复位信号复位 Octal Flash,使用BOOT ROM 去复位 Octal Flash。

809d2f42-cf11-11ed-bfe3-dac502259ad0.png

80c064ee-cf11-11ed-bfe3-dac502259ad0.png

80e42488-cf11-11ed-bfe3-dac502259ad0.png

WAKEUP引脚默认内部是输入上拉的,大约在 35k左右。

80fd1f24-cf11-11ed-bfe3-dac502259ad0.png

811b9ea4-cf11-11ed-bfe3-dac502259ad0.png

唤醒引脚是一个 GPIO,由 SNVS 电源域供电配置为唤醒源。唤醒引脚会将 PMIC_ON_REQ为高电平,请求主SOC上电以退出SNVS模式。

813bfff0-cf11-11ed-bfe3-dac502259ad0.png

请求主SoC电源状态改变的硬件ON/OFF按钮输入信号。在OFF模式下与GND的短暂连接会导致内部电源管理状态机将状态更改为ON。在ON模式下,与GND短暂连接会产生中断(与GND大约5秒或更长时间)会导致强制OFF。

唤醒引脚会将PMIC_ON_REQ 设置为高,而不是翻转。

815857f4-cf11-11ed-bfe3-dac502259ad0.png

此外除了 GPIO唤醒外,也可以通过内部 RTC唤醒,相关参考代码如下。

#include "fsl_device_registers.h"

#include "fsl_debug_console.h"

#include "pin_mux.h"

#include "clock_config.h"

#include "board.h"

#include "fsl_snvs_hp.h"

void GPC_EnableWakeupSource(uint32_t irq)

{

GPC_CM_EnableIrqWakeup(GPC_CPU_MODE_CTRL_0, irq, true);

}

void gpc_configure_lprtc_wakeup(uint32_t time_length){

SNVS->LPCR &= ~SNVS_LPCR_SRTC_ENV_MASK;

while ((SNVS->LPCR & SNVS_LPCR_SRTC_ENV_MASK))

{ }

/* 禁止 SRTC 告警中断*/

SNVS->LPCR &= ~SNVS_LPCR_LPTA_EN_MASK;

while ((SNVS->LPCR & SNVS_LPCR_LPTA_EN_MASK))

{}

SNVS->LPSRTCMR = 0x00;

SNVS->LPSRTCLR = 0x00;

SNVS->LPTAR = time_length;

EnableIRQ(SNVS_HP_NON_TZ_IRQn);

SNVS->LPCR |= SNVS_LPCR_SRTC_ENV_MASK | SNVS_LPCR_LPTA_EN_MASK;

while (!(SNVS->LPCR & SNVS_LPCR_LPTA_EN_MASK))

{ } /* 使能 GPC 中断*/

GPC_EnableWakeupSource(SNVS_HP_NON_TZ_IRQn);

}

void SNVS_HP_NON_TZ_IRQHandler(void)

{

// if (SNVS_HP_RTC_GetStatusFlags(SNVS) & kSNVS_RTC_AlarmInterruptFlag)

// {

// SNVS_HP_RTC_ClearStatusFlags(SNVS, kSNVS_RTC_AlarmInterruptFlag);

// }

//

// SNVS_HP_RTC_GetEnabledInterrupts(SNVS);

//SNVS->LPSR &= ~(1<<30);

SNVS->LPSR |= 0x1;

SDK_ISR_EXIT_BARRIER;

}

int main(void)

{

char ch;

BOARD_ConfigMPU();

BOARD_InitPins();

BOARD_BootClockRUN();

BOARD_InitDebugConsole();

PRINTF("hello world. ");

GETCHAR();

gpc_configure_lprtc_wakeup(5);

SNVS->LPCR |= SNVS_LPCR_TOP_MASK;

while(1);

}

SNVS唤醒源可以是:GPIO唤醒引脚;RTC唤醒;POR。通常,使用SRC->SRSR[ipp_reset_b]来检测POR复位。但测试后,即使使用WAKEUP引脚退出SNVS模式,SRC->SRSR[ipp_reset_b]仍为1,与退出SNVS方式的按键复位相同。那么,在退出SNVS模式后,有其他方法可以检测细节唤醒源吗?主要需要知道从SNVS低功耗模式唤醒,而不仅仅是从电源POR唤醒。

从SOC的角度来看,POR或SNVS唤醒复位相同。因此,无论POR或使用WAKEUP引脚退出SNVS模式,SRC->SRSR[ipp_reset_b]始终为1。一种可以知道从SNVS或POR唤醒的解决方案是使用SNVS_LP GPR寄存器作为标志。例如:

1.将1写入LPGPR0;2.SOC进入SNVS低功耗模式;3.当SOC启动时,读取LPGPR0。4.如果LPGPR0=0,则为POR。如果LPGPR0=1,则从SNVS低功耗模式唤醒。

操作方法如下:通过SNVS LP控制寄存器中的GPR_Z_DIS位禁用GPR归零。使用SNVS->LPCR |= 1<<24;操作代码。如果不执行这个代码,直接写入 LPGPR寄存器是无效的。

818f6ece-cf11-11ed-bfe3-dac502259ad0.png

81bd212a-cf11-11ed-bfe3-dac502259ad0.png

81f5052c-cf11-11ed-bfe3-dac502259ad0.png

从 SNVS唤醒到 PMIC_ON_REQ输出大约是 0.1ms的时间,如下图所示。对于用户来说,需要考虑PMIC_ON_REQ 到外部电源之间的时间间隔,上电顺序的时间间隔这取决于外部电路,尤其是复位IC。

823861d2-cf11-11ed-bfe3-dac502259ad0.png

2) PMIC_ON_REQ 输出使能外部的电源,这个时间间隔取决于外部电路,对于EVK来说大约需要40ms。

8257e26e-cf11-11ed-bfe3-dac502259ad0.png

通电后,关于上电顺序的时间间隔大约是SOC复位到第一个MCU指令,大约为8ms。82796e20-cf11-11ed-bfe3-dac502259ad0.png

从唤醒按键释放到处理器 MCU 执行指令大约需要260或270毫秒!这是因为开发板外部复位电路给了非常充裕的时间来释放复位。

1)外部GPIO输入触发和PMIC_ON_REQ输出

例如,这将使PMIC使能信号上升。从SNVS唤醒引脚输入到PMIC_ON_REQ输出大约需要0.1ms。

2) 电源上电(取决于系统)

2.1 ) PMIC_ON_REQ 输出以启用外部加电.

例如,PMIC启用DCDC_3v3。这可能需要一些时间,从6毫秒(测量值)到40毫秒。

2.2 ) 复位释放

在EVK中,复位监控IC将等待大量时间来解除MCU复位。例如,260ms。该延迟是确保所有电源域已经达到稳定的最安全裕度。

3) 复位后的MCU引导时间

这将需要 6~7ms(考虑到在GPIO切换之前一直在测量,测量时间为9ms)。希望在20毫秒动力CAN或者 100毫秒车身CAN 要求更短的时间内从SNVS中唤醒并执行代码。应该注意电源上电序列!例如,确保调整外部复位电路复位的时间。此外,与其他电源模式相比,SNVS不会占用最大的延迟。MCU 将简单地从复位中恢复!会发现系统可能需要更长的恢复时间,但这是因为外部电源再次通电(包括复位)。

82a14a8a-cf11-11ed-bfe3-dac502259ad0.png

对于wakeup唤醒电平要求:

82c6dfe8-cf11-11ed-bfe3-dac502259ad0.png

支持低电平,高电平,上升沿,下降沿唤醒。

82fc90fc-cf11-11ed-bfe3-dac502259ad0.png

当器件从SNVS模式唤醒时,用户可以知道系统从SNVS方式恢复的另外一种方法。试图检查SRC和SRSR,但找不到任何适合此要求的标志。使用SNVS-GPR32,当发生篡改事件时不会清除。还有一个锁定位控制,可以用来阻止位修改,直到重新上电。

832b60e4-cf11-11ed-bfe3-dac502259ad0.png

RT1170在内部处理上电序列,LPSR LDO将在开启DCDC之前启用。LPSR_1P0必须在DCDC启用之前通电,唤醒流程将在内部处理此问题。(LPSR_1P0是LDO,而不是DCDC,VCC_SOC和VDDA_1V8)。

835080c2-cf11-11ed-bfe3-dac502259ad0.png

如果有唤醒异常的情况,比如VDD_SOC_IN电压一直为0的情况,这时需要检查 DCDC_PSWITCH的电压是否有从低到高变化的过程。与EVK相同的原始硬件:30k上拉电阻+0.22uF对地电容:如果3.3V系统电压没有降至0并立即通电,则无法产生1.1V内核电压。将30k电阻更改为130k,然后在这种情况下,1.1V内核电压正确启动。如果在某些情况下,3.3V系统电压不能从0V通电,例如从2V通电,那么RC延迟时间的要求是什么?

83722a92-cf11-11ed-bfe3-dac502259ad0.png    从DCDC_IN 稳定在 3V时到 DCDC-PSWITCH达到 0.5*DCDC_IN(1.5v)的延迟必须至少为1ms。如果 DCDC_IN电压短时下降,该电压不会降至0(例如仅降至2V),并立即升到3.3V,内部1.1V内核电压降至0,并且由于PSWITCH没有从0开始上升,而导致内核电压不会再次产生。这种情况在应用中是可能的,如何确保PSWITCH RC延迟时间?这个问题是由RC电路没有完全放电引起的,电源关闭,RC电路放电到低电平也需要时间,所以要使其工作,可以检测PSWITCH,确保它是0V,然后再通一次电源,它应该工作。在电压骤降的情况下,3.3V DCDC_IN到DCDC-PSWITCH之间的1ms延迟达到0.5*DCDC_IN(1.5v)就不能保证,因为3.3V DCDC _IN可能在任何电压下下降(例如>1.5v)并立即启动(这可能发生在工业现场)。

83afffac-cf11-11ed-bfe3-dac502259ad0.png

解答:上电复位,在任何条件下,都需要确保 DCDC_PSWITCH 引脚在上电前低于0.5 V。建议使用RC延迟电路来提供DCDC_IN 稳定和DCDC_PSWITCH之间的延迟,总 RC延迟应为5-40毫秒。

•DCDC_IN必须在0.3 x RC时间范围内达到最低3.0 V。

•从DCDC_IN稳定在3.0 V (最小电压)到DCDC_PSWITCH达到0.5 x DCDC_IN(1.5 V)的延迟必须至少为1 ms。DCDC_PSWITCH延迟超过1ms以打开内部DCDC。

•其他电源域的加电转换速率规格为360V/s–36KV/s。

83d9a686-cf11-11ed-bfe3-dac502259ad0.png

8402730e-cf11-11ed-bfe3-dac502259ad0.png

8485c722-cf11-11ed-bfe3-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146699
  • soc
    soc
    +关注

    关注

    38

    文章

    3750

    浏览量

    215721
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89666
  • 引脚
    +关注

    关注

    16

    文章

    1045

    浏览量

    48972
  • GPIO
    +关注

    关注

    16

    文章

    1137

    浏览量

    50596

原文标题:MIMXRT1172 SNVS模式Wakeup唤醒

文章出处:【微信号:嵌入式 MCU,微信公众号:嵌入式 MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    wince挂起和唤醒(suspend/wakeup)

    r4-r12,lr到堆栈6. 保存wakeup后的地址,MMU寄存器,进入各模式将sp和lr寄存器保存到内存RAM的某一个位置,这个位置是由config.bib指定保留的.为什么不象之前一样保存到堆栈呢
    发表于 12-02 17:30

    aducm360用wakeup timer唤醒CPU功耗增大

    如上。因为是想降低功耗,想让cpu进入低功耗模式,然后用wakeup timer 唤醒cpu。在程序中未加入唤醒定时器这部分程序时,cpu工作在模式
    发表于 02-21 13:53

    如何用WAKEUP唤醒例程?

    您好,我看到csl3.07里面的power例程都是用alarm唤醒的,我想问下如何用WAKEUP唤醒或者有没有响应的例程。我今天尝试将WU_DIR设置成OUT,但是感觉好像没有起作用。多谢!
    发表于 10-24 10:14

    STM32CubeMx配置wakeup唤醒低功耗

    任务目标配置wakeup唤醒低功耗,上电灯亮5秒后关闭,进入低功耗模式;若未进入低功耗则会灯闪烁;当按下wakeup唤醒MCU。CubeM
    发表于 08-16 08:38

    stm32的引脚wakeup有什么作用

    stm32的引脚wakeup有什么作用?唤醒MCU,比如当MCU在低功耗状态下或者休眠之类的状态下,通过引脚的Wakeup功能可以将MCU唤醒,让MCU进入正常的工作状态。低功耗
    发表于 08-16 08:15

    如何对唤醒MCU低功耗的wakeup进行配置呢

    如何对唤醒MCU低功耗的wakeup进行配置呢?其代码该怎样去完成?
    发表于 11-16 09:13

    采用RTC WakeUP的方式对STM32F4xx StandBy模式进行唤醒

    采用 RTC WakeUP 的方式进行唤醒。1 STM32F4xx 待机模式介绍  STM32F4xx 待机模式的各种特性如下所示。在待机模式
    发表于 06-13 14:44

    RTC Wakeup为什么不从睡眠模式唤醒系统STM32L431?

    您好,我正在使用 RTC 唤醒在系统处于睡眠模式时定期启动 WDG。我设置了 RTC 唤醒如下:/* RTC init function */void MX_RTC_Init(void
    发表于 12-13 08:27

    如何查询iMXRT1172 SNVS bank -ON/OFF管脚功能?

    我们在其中一个电池应用项目中使用了 iMXRT1172。在我将 iMXRT1172 置于 SNVS 模式的项目中,我们使用 ONOFF 引脚(球号:U10) 我们只想知道 ONOFF
    发表于 03-21 07:06

    如何在MIMXRT1172上实现winUSB设备驱动程序?

    我想在 MIMXRT1172 上实现 winUSB 设备驱动程序。目前正在做例程cdc_vcom_freertos,PC可以枚举MIMXRT1172作为winUSB设备,但是只能接收数据,不能发送数据。每次发送返回的状态都是忙(kStatus_USB_Busy)。
    发表于 03-23 09:15

    当VDD_SNVS使用备用电源时,IC不工作的原因?

    我有一个使用 MIMXRT1171 IC 的定制板。该系统使用 12V 电源供电,该电源为设备上的域提供其他电源,包括用于 MIMXRT1171 的 3V3,以及为 SNVS 备份域供电的纽扣电池
    发表于 05-04 07:14

    MIMXRT1051CVL5B MCU不唤醒的原因?

    我们的设计中有 MIMXRT1051CVL5B。 MCU SNVS 和 3.3V 轨在要求的范围内,时钟正常,但是当我们将 USB 主机连接到 J16 连接器或将 NXP 调试器连接到 J3 时,我们看不到连接的设备(在软件或设备管理器上)连接器。
    发表于 05-05 09:16

    DC1172A-模式

    DC1172A-模式
    发表于 04-20 19:29 0次下载
    DC<b class='flag-5'>1172</b>A-<b class='flag-5'>模式</b>

    STM32CubeMx配置WKUP(PA0)按键低功耗唤醒进入正常模式

    stm32的引脚wakeup有什么作用?唤醒MCU,比如当MCU在低功耗状态下或者休眠之类的状态下,通过引脚的Wakeup功能可以将MCU唤醒,让MCU进入正常的工作状态。低功耗
    发表于 12-07 20:21 18次下载
    STM32CubeMx配置WKUP(PA0)按键低功耗<b class='flag-5'>唤醒</b>进入正常<b class='flag-5'>模式</b>

    Wakeup events framework同步问题

    Wakeup events framework 系统处于 suspend 状态,可通过 wakeup events 唤醒。具体的 wakeup events 可以是按键按下,可以是充电
    的头像 发表于 09-11 16:17 277次阅读