0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取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電源狀態(tài)改變的硬件ON/OFF按鈕輸入信號。在OFF模式下與GND的短暫連接會導致內部電源管理狀態(tài)機將狀態(tài)更改為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模式后,有其他方法可以檢測細節(jié)喚醒源嗎?主要需要知道從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;操作代碼。如果不執(zhí)行這個代碼,直接寫入 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 執(zhí)行指令大約需要260或270毫秒!這是因為開發(fā)板外部復位電路給了非常充裕的時間來釋放復位。

1)外部GPIO輸入觸發(fā)和PMIC_ON_REQ輸出

例如,這將使PMIC使能信號上升。從SNVS喚醒引腳輸入到PMIC_ON_REQ輸出大約需要0.1ms。

2) 電源上電(取決于系統(tǒng))

2.1 ) PMIC_ON_REQ 輸出以啟用外部加電.

例如,PMIC啟用DCDC_3v3。這可能需要一些時間,從6毫秒(測量值)到40毫秒。

2.2 ) 復位釋放

在EVK中,復位監(jiān)控IC將等待大量時間來解除MCU復位。例如,260ms。該延遲是確保所有電源域已經達到穩(wěn)定的最安全裕度。

3) 復位后的MCU引導時間

這將需要 6~7ms(考慮到在GPIO切換之前一直在測量,測量時間為9ms)。希望在20毫秒動力CAN或者 100毫秒車身CAN 要求更短的時間內從SNVS中喚醒并執(zhí)行代碼。應該注意電源上電序列!例如,確保調整外部復位電路復位的時間。此外,與其他電源模式相比,SNVS不會占用最大的延遲。MCU 將簡單地從復位中恢復!會發(fā)現系統(tǒng)可能需要更長的恢復時間,但這是因為外部電源再次通電(包括復位)。

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

對于wakeup喚醒電平要求:

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

支持低電平,高電平,上升沿,下降沿喚醒。

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

當器件從SNVS模式喚醒時,用戶可以知道系統(tǒng)從SNVS方式恢復的另外一種方法。試圖檢查SRC和SRSR,但找不到任何適合此要求的標志。使用SNVS-GPR32,當發(fā)生篡改事件時不會清除。還有一個鎖定位控制,可以用來阻止位修改,直到重新上電。

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系統(tǒng)電壓沒有降至0并立即通電,則無法產生1.1V內核電壓。將30k電阻更改為130k,然后在這種情況下,1.1V內核電壓正確啟動。如果在某些情況下,3.3V系統(tǒng)電壓不能從0V通電,例如從2V通電,那么RC延遲時間的要求是什么?

83722a92-cf11-11ed-bfe3-dac502259ad0.png????從DCDC_IN 穩(wěn)定在 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)并立即啟動(這可能發(fā)生在工業(yè)現場)。

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

解答:上電復位,在任何條件下,都需要確保 DCDC_PSWITCH 引腳在上電前低于0.5 V。建議使用RC延遲電路來提供DCDC_IN 穩(wěn)定和DCDC_PSWITCH之間的延遲,總 RC延遲應為5-40毫秒。

?DCDC_IN必須在0.3 x RC時間范圍內達到最低3.0 V。

?從DCDC_IN穩(wěn)定在3.0 V (最小電壓)到DCDC_PSWITCH達到0.5 x DCDC_IN(1.5 V)的延遲必須至少為1 ms。DCDC_PSWITCH延遲超過1ms以打開內部DCDC。

?其他電源域的加電轉換速率規(guī)格為360V/s–36KV/s。

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

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

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1598

    瀏覽量

    147339
  • soc
    soc
    +關注

    關注

    38

    文章

    4021

    瀏覽量

    217033
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1669

    瀏覽量

    90735
  • 引腳
    +關注

    關注

    16

    文章

    1132

    瀏覽量

    49742
  • GPIO
    +關注

    關注

    16

    文章

    1175

    瀏覽量

    51515

原文標題:MIMXRT1172 SNVS模式Wakeup喚醒

文章出處:【微信號:嵌入式 MCU,微信公眾號:嵌入式 MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32L431RCT6關機模式使用Wakeup喚醒遇到的疑問求解

    關機模式WAKEUP喚醒,根據官方例程序。(所有資料都是配置的PA0)。 代碼如下: GPIO_InitStruct.Pin = EXTI0_Pin|EXTI2_Pin;//PA0
    發(fā)表于 07-03 07:11

    wince掛起和喚醒(suspend/wakeup)

    r4-r12,lr到堆棧6. 保存wakeup后的地址,MMU寄存器,進入各模式將sp和lr寄存器保存到內存RAM的某一個位置,這個位置是由config.bib指定保留的.為什么不象之前一樣保存到堆棧呢
    發(fā)表于 12-02 17:30

    aducm360用wakeup timer喚醒CPU功耗增大

    如上。因為是想降低功耗,想讓cpu進入低功耗模式,然后用wakeup timer 喚醒cpu。在程序中未加入喚醒定時器這部分程序時,cpu工作在模式
    發(fā)表于 02-21 13:53

    如何用WAKEUP喚醒例程?

    您好,我看到csl3.07里面的power例程都是用alarm喚醒的,我想問下如何用WAKEUP喚醒或者有沒有響應的例程。我今天嘗試將WU_DIR設置成OUT,但是感覺好像沒有起作用。多謝!
    發(fā)表于 10-24 10:14

    STM32CubeMx配置wakeup喚醒低功耗

    任務目標配置wakeup喚醒低功耗,上電燈亮5秒后關閉,進入低功耗模式;若未進入低功耗則會燈閃爍;當按下wakeup喚醒MCU。CubeM
    發(fā)表于 08-16 08:38

    stm32的引腳wakeup有什么作用

    stm32的引腳wakeup有什么作用?喚醒MCU,比如當MCU在低功耗狀態(tài)下或者休眠之類的狀態(tài)下,通過引腳的Wakeup功能可以將MCU喚醒,讓MCU進入正常的工作狀態(tài)。低功耗
    發(fā)表于 08-16 08:15

    采用RTC WakeUP的方式對STM32F4xx StandBy模式進行喚醒

    采用 RTC WakeUP 的方式進行喚醒。1 STM32F4xx 待機模式介紹??STM32F4xx 待機模式的各種特性如下所示。在待機模式
    發(fā)表于 06-13 14:44

    RTC Wakeup為什么不從睡眠模式喚醒系統(tǒng)STM32L431?

    您好,我正在使用 RTC 喚醒在系統(tǒng)處于睡眠模式時定期啟動 WDG。我設置了 RTC 喚醒如下:/* RTC init function */void MX_RTC_Init(void
    發(fā)表于 12-13 08:27

    如何查詢iMXRT1172 SNVS bank -ON/OFF管腳功能?

    我們在其中一個電池應用項目中使用了 iMXRT1172。在我將 iMXRT1172 置于 SNVS 模式的項目中,我們使用 ONOFF 引腳(球號:U10) 我們只想知道 ONOFF
    發(fā)表于 03-21 07:06

    如何在MIMXRT1172上實現winUSB設備驅動程序?

    我想在 MIMXRT1172 上實現 winUSB 設備驅動程序。目前正在做例程cdc_vcom_freertos,PC可以枚舉MIMXRT1172作為winUSB設備,但是只能接收數據,不能發(fā)送數據。每次發(fā)送返回的狀態(tài)都是忙(kStatus_USB_Busy)。
    發(fā)表于 03-23 09:15

    當VDD_SNVS使用備用電源時,IC不工作的原因?

    我有一個使用 MIMXRT1171 IC 的定制板。該系統(tǒng)使用 12V 電源供電,該電源為設備上的域提供其他電源,包括用于 MIMXRT1171 的 3V3,以及為 SNVS 備份域供電的紐扣電池
    發(fā)表于 05-04 07:14

    MIMXRT1051CVL5B MCU不喚醒的原因?

    我們的設計中有 MIMXRT1051CVL5B。 MCU SNVS 和 3.3V 軌在要求的范圍內,時鐘正常,但是當我們將 USB 主機連接到 J16 連接器或將 NXP 調試器連接到 J3 時,我們看不到連接的設備(在軟件或設備管理器上)連接器。
    發(fā)表于 05-05 09:16

    DC1172A-模式

    DC1172A-模式
    發(fā)表于 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在低功耗狀態(tài)下或者休眠之類的狀態(tài)下,通過引腳的Wakeup功能可以將MCU喚醒,讓MCU進入正常的工作狀態(tài)。低功耗
    發(fā)表于 12-07 20:21 ?21次下載
    STM32CubeMx配置WKUP(PA0)按鍵低功耗<b class='flag-5'>喚醒</b>進入正常<b class='flag-5'>模式</b>

    Wakeup events framework同步問題

    Wakeup events framework 系統(tǒng)處于 suspend 狀態(tài),可通過 wakeup events 喚醒。具體的 wakeup events 可以是按鍵按下,可以是充電
    的頭像 發(fā)表于 09-11 16:17 ?400次閱讀