<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: S32K148 - switching between RUN and VLPS in S32K</title>
    <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010121#M6089</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;A am attaching the Keil project. All the comments are in Czech, I hope that isn't a problem =)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 11 Feb 2020 12:04:45 GMT</pubDate>
    <dc:creator>tomasfrcek</dc:creator>
    <dc:date>2020-02-11T12:04:45Z</dc:date>
    <item>
      <title>S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010117#M6085</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm trying to switch the S32K148 to VLPS mode to conserve power and wake it back up to RUN mode when&amp;nbsp;the button is pressed. The SCG module is configured to run in Normal RUN mode with SOSC and SPLL clocks configured. In the initial configuration, the current firmware runs without complications.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was trying to use reference manual as much as I could, as well as information from here&amp;nbsp;&lt;A class="link-titled" href="https://www.nxp.com/docs/en/application-note/AN5425.pdf" title="https://www.nxp.com/docs/en/application-note/AN5425.pdf"&gt;https://www.nxp.com/docs/en/application-note/AN5425.pdf&lt;/A&gt;&amp;nbsp; and here&amp;nbsp;&lt;A href="https://community.nxp.com/thread/496123"&gt;changing State From VLPS to RUN and RUN to VLPS S32K148&lt;/A&gt;&amp;nbsp;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After I try to enter the VLPS, I see the consumption fall as the peripherals are disabled, but the MCU does not switch to VLPS (consumption stays at ~10mA, SMC_PMCTRL.VLPSA also set, in NVIC, only pending IRQ is RTC, which is not enabled however)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my simplified code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int main (void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WDOG_Disable();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetupClocks();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// FlexCAN0, FTM1 and LPSPI1 also used in this project.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitPeripherals();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Init Button input. PTB15 with internal pull-up and interrupt on falling edge.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PCC-&amp;gt;PCCn[PCC_PORTB_INDEX] = PCC_PCCn_CGC(1U);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; PORTB-&amp;gt;PCR[15] = PORT_PCR_PS(1) | PORT_PCR_PE(1) | PORT_PCR_MUX(1) | PORT_PCR_IRQC(10);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;NVIC_SetPriority(LPSPI1_IRQn, 1U);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;NVIC_SetPriority(CAN0_ORed_0_15_MB_IRQn, 2U);&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;NVIC_SetPriority(FTM1_Ch0_Ch1_IRQn, 3U);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;NVIC_SetPriority(PORTB_IRQn, 4U);&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;NVIC_EnableIRQ(LPSPI1_IRQn);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;NVIC_EnableIRQ(CAN0_ORed_0_15_MB_IRQn);&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;NVIC_EnableIRQ(FTM1_Ch0_Ch1_IRQn);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;NVIC_EnableIRQ(PORTB_IRQn);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (1)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (some conditions are met)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Switch to VLPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 1. Disable peripherals.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FTM1-&amp;gt;SC &amp;amp;= ~FTM_SC_CLKS_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PCC-&amp;gt;PCCn[PCC_FTM1_INDEX] &amp;amp;= ~PCC_PCCn_CGC_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPSPI1-&amp;gt;CR &amp;amp;= ~LPSPI_CR_MEN_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PCC-&amp;gt;PCCn[PCC_LPSPI1_INDEX] &amp;amp;= ~PCC_PCCn_CGC_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CAN0-&amp;gt;MCR |= CAN_MCR_MDIS(0x1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PCC-&amp;gt;PCCn[PCC_FlexCAN0_INDEX] &amp;amp;= ~PCC_PCCn_CGC_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 1. Enable SIRC and set it as system clock source.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while((SCG-&amp;gt;SIRCCSR &amp;amp; SCG_SIRCCSR_LK_MASK) != 0x0) { ; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;SIRCCSR |= SCG_SIRCCSR_SIRCEN(1U);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while ((SCG-&amp;gt;SIRCCSR &amp;amp; SCG_SIRCCSR_SIRCVLD_MASK) == 0x0) { ; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;RCCR = SCG_RCCR_SCS(2);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 2. Deactivate SOSC, SPLL and FIRC.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;SOSCCSR &amp;amp;= ~SCG_SOSCCSR_SOSCEN_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while ((SCG-&amp;gt;SOSCCSR &amp;amp; SCG_SOSCCSR_SOSCVLD_MASK) != 0x0) { ; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;SPLLCSR &amp;amp;= ~SCG_SPLLCSR_SPLLEN_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while ((SCG-&amp;gt;SPLLCSR &amp;amp; SCG_SPLLCSR_SPLLVLD_MASK) != 0x0) { ; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;FIRCCSR &amp;amp;= ~SCG_FIRCCSR_FIRCEN_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while((SCG-&amp;gt;FIRCCSR &amp;amp; SCG_FIRCCSR_FIRCVLD_MASK) != 0x0) { ; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SystemCoreClockUpdate();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 3. VLPS entry from the Application Note.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Enable SLEEPDEEP bit in the Core (Allow deep sleep modes)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SCB-&amp;gt;SCR |= S32_SCB_SCR_SLEEPDEEP_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Allow very low power run mode&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SMC-&amp;gt;PMPROT |= SMC_PMPROT_AVLP_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Select VLPS Mode&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SMC-&amp;gt;PMCTRL = SMC_PMCTRL_STOPM(0b10);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PMC-&amp;gt;REGSC |= PMC_REGSC_BIASEN_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Check if current mode is RUN mode&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(SMC-&amp;gt;PMSTAT == 0x01)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Go to deep sleep mode&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asm("WFI");&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void PORTB_IRQHandler(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if ((PORTB-&amp;gt;ISFR &amp;amp; (0x1 &amp;lt;&amp;lt; 15) != 0x0)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((SMC-&amp;gt;PMSTAT &amp;amp; SMC_PMSTAT_PMSTAT_MASK) &amp;gt;&amp;gt; SMC_PMSTAT_PMSTAT_SHIFT == 0x10)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// MCU in VLPS mode. Wake-up.&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NormalRUNmode_SPLL_MaxSpeed();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; PORTB-&amp;gt;ISFR |= 0x1 &amp;lt;&amp;lt; 15;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;EDIT1:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think I managed to enter the VLPS mode by adding some code from this example:&amp;nbsp;&lt;A href="https://community.nxp.com/docs/DOC-341788"&gt;Example S32K144 RTC VLPS S32DS.R1&lt;/A&gt;&amp;nbsp;. Current falls from 10mA to 6mA (drawn by UJA113 in our PCB I assume, I cannot confirm by debugger). Waking up however does not work.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Feb 2020 06:21:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010117#M6085</guid>
      <dc:creator>tomasfrcek</dc:creator>
      <dc:date>2020-02-11T06:21:46Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010118#M6086</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Tomas,&lt;/P&gt;&lt;P&gt;The FlexCAN can't be directly disabled:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/103294iE6535FECB2CF9CE6/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;The debugger must be disconnected and the MCU power cycled, before the MCU can enter VLPS.&lt;/P&gt;&lt;P&gt;Is the pin interrupt working in the RUN mode?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Feb 2020 09:46:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010118#M6086</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2020-02-11T09:46:45Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010119#M6087</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, Dan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for replying. I created a "mini" version of our project, just to get the mode switching working. I removed the FlexCAN functions completly, so only LPSPI (needed for UJA113 communication) and FTM remain. It didn't help however. But switching FlexCAN to Freeze mode in the "full"&amp;nbsp;version will be necessary, thank you for that information!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I downloaded the current firmware, disconnected the debugger and cycled power. After triggering the "go to sleep" event, the current falls. But after triggering the "wake-up event", nothing happens, the current value stays low.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The interrupt is working well in the RUN mode. I am using the same digital input for both "go to sleep" event (as standard button with debouncing handled) and "wake-up" event. I distinguish between the two events by checking the value of&amp;nbsp;SMC-&amp;gt;PMSTAT.PMSTAT in the interrupt handler. I didn't include the "go to sleep" and debouncing procedure in the sample code, to keep it as simple as possible.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Feb 2020 10:04:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010119#M6087</guid>
      <dc:creator>tomasfrcek</dc:creator>
      <dc:date>2020-02-11T10:04:29Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010120#M6088</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tomas,&lt;/P&gt;&lt;P&gt;Could you attach the mini test project so that I can test it?&lt;/P&gt;&lt;P&gt;Or, you can create a ticket if you don't want to share it here:&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/docs/DOC-329745"&gt;https://community.nxp.com/docs/DOC-329745&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BR, Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Feb 2020 10:55:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010120#M6088</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2020-02-11T10:55:10Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010121#M6089</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;A am attaching the Keil project. All the comments are in Czech, I hope that isn't a problem =)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Feb 2020 12:04:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010121#M6089</guid>
      <dc:creator>tomasfrcek</dc:creator>
      <dc:date>2020-02-11T12:04:45Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010122#M6090</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the project Tomas, the language is not a problem, but I don't have KEIL, so I'm not able to test it.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Nevertheless, I think the problem is that although it can wake up, it goes to VLPS again.&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Because&amp;nbsp;sleep_mode_command stays TRUE when it leaves the &lt;SPAN&gt;PORTB_IRQHandler&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;You can test it by placing this&lt;/P&gt;&lt;P&gt;if(&lt;SPAN&gt;sleep_mode_command&amp;nbsp;== TRUE&lt;/SPAN&gt;) {while(1){}}&lt;/P&gt;&lt;P&gt;at the beginning of PORTB_IRQHandler and measure the consumption or&amp;nbsp;you can&amp;nbsp;attach the debugger (without reset).&amp;nbsp;&lt;/P&gt;&lt;P&gt;You should see that&amp;nbsp;SMC_PMSTAT == 0x01 because at this point, the MCU is already in RUN not VLPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BR, Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Feb 2020 14:47:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010122#M6090</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2020-02-11T14:47:34Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010123#M6091</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am setting the&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;sleep_mode_command back to FALSE in the handler, if at the time the interrupt is set, the value&amp;nbsp;SMC-&amp;gt;PMSTAT == 0x10 (VLPS). It's at the line 160 of gpio.c.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;However, I will try to set it to FALSE just before entering the VLPS and let you know!&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Feb 2020 16:34:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010123#M6091</guid>
      <dc:creator>tomasfrcek</dc:creator>
      <dc:date>2020-02-11T16:34:02Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010124#M6092</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tomas,&lt;/P&gt;&lt;P&gt;The handler is setting the&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;sleep_mode_command back to FALSE only if&amp;nbsp;&lt;SPAN&gt;PMSTAT == 0x10 (VLPS) but the MCU is in RUN already PMSTAT = 0x01 (RUN).&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;BR, Daniel&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Feb 2020 09:04:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010124#M6092</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2020-02-12T09:04:13Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010125#M6093</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, Daniel&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I understand, that at the moment the handler gets fired while the MCU is in VLPS mode, the value of&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;PMSTAT is already 0x1 (RUN)? I tried to modify the code accordingly:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN style="color: #339966;"&gt;//&amp;nbsp;In the main loop, I switch to the VLPS mode when the conditions are met.&lt;/SPAN&gt;&lt;BR /&gt; if (sleep_mode_command == TRUE)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #339966;"&gt;// Deactivates peripherals.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if ((PCC-&amp;gt;PCCn[PCC_FTM1_INDEX] &amp;amp; PCC_PCCn_CGC_MASK) != 0x0)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FTM1-&amp;gt;SC &amp;amp;= ~FTM_SC_CLKS_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PCC-&amp;gt;PCCn[PCC_FTM1_INDEX] &amp;amp;= ~PCC_PCCn_CGC_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if ((PCC-&amp;gt;PCCn[PCC_LPSPI1_INDEX] &amp;amp; PCC_PCCn_CGC_MASK) != 0x0)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPSPI1-&amp;gt;CR &amp;amp;= ~LPSPI_CR_MEN_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PCC-&amp;gt;PCCn[PCC_LPSPI1_INDEX] &amp;amp;= ~PCC_PCCn_CGC_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #339966;"&gt;// Sets SIRC as system clock in RUN mode.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;RCCR = (&lt;SPAN&gt;SCG-&amp;gt;RCCR &amp;amp; ~SCG_RCCR_SCS_MASK) | SCG_RCCR_SCS(0x2)&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (((SCG-&amp;gt;CSR &amp;amp; &lt;SPAN&gt;SCG_RCCR_SCS_MASK&lt;/SPAN&gt;) &amp;gt;&amp;gt; &lt;SPAN&gt;SCG_RCCR_SCS_SHIFT&lt;/SPAN&gt;) != 0x2) { ; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #339966;"&gt;//&amp;nbsp;Deactivates SOSC and SPLL.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;SOSC_SetEnable(FALSE);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;SPLL_SetEnable(FALSE);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SystemCoreClockUpdate();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #339966;"&gt;//&amp;nbsp;Following section from Example S32K144 RTC VLPS S32DS.R1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(SMC-&amp;gt;PMSTAT == 0x01)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SCB-&amp;gt;SCR |= 0x06;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PMC-&amp;gt;REGSC |= (1 &amp;lt;&amp;lt; 1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SMC-&amp;gt;PMCTRL |= 0x00000002;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SMC-&amp;gt;PMPROT |= (1 &amp;lt;&amp;lt; 5);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(void)SMC-&amp;gt;PMPROT;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(SMC-&amp;gt;PMSTAT == 0x01)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asm("WFI");&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SMC-&amp;gt;PMCTRL &amp;amp; 0x8)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(SMC-&amp;gt;PMSTAT == 0x01)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asm("WFI");&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SMC-&amp;gt;PMCTRL &amp;amp; 0x8)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SCB-&amp;gt;AIRCR = 0x05FA0004;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;void PORTB_IRQHandler(void)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; if ((PORTB-&amp;gt;ISFR &amp;amp; (0x1 &amp;lt;&amp;lt; 15)) != 0x0)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (sleep_mode_command == TRUE)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep_mode_command = FALSE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #339966;"&gt;// Setting logical 1 to another output pin of PORTB, so that i can confirm, that the handler is fired in the VLPS.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PORTB-&amp;gt;PCR[22] = PORT_PCR_PE(0U) | PORT_PCR_MUX(port_io);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PTB-&amp;gt;PDDR |= 0x1 &amp;lt;&amp;lt; 22;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PTB-&amp;gt;PSOR |= 0x1 &amp;lt;&amp;lt; 22;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #339966;"&gt;// Same&amp;nbsp;initialization (except for WDOG disable) that gets called at the start of main()&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetupClocks();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IInitGPIOPins();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI_Init_Master(&amp;amp;lpspi1_system_base_chip_config);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitRegularTimer();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PORTB-&amp;gt;ISFR |= 0x1 &amp;lt;&amp;lt; 15;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;After I give the command to switch to VLPS mode, I see the current fall from 35mA to 8mA and all peripheral functions stop. I susspect that now the MCU is in VLPS, but I cannot confirm it as I loose the communication with the debugger as well at this point.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;When I cause the&amp;nbsp;PORTB_IRQHandler event, voltage at pin PTB22 goes up, which means that the handler gets fired. That probably means, that the problem is with one of the initialization functions. I tried to call the peripheral init functions, then switch them off the same way I do before switching to the VLPS and immediately re-initializing to see, if there is some sort of HardFaulting, but it worked. That means the problem is probably with the&amp;nbsp;&lt;SPAN&gt;SetupClocks() function which works well when called at the beginning of main() however.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;I am attaching the current clocks.c file, which contains the SetupClocks().&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Thank you!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Tomas&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Feb 2020 07:21:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010125#M6093</guid>
      <dc:creator>tomasfrcek</dc:creator>
      <dc:date>2020-02-13T07:21:01Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010126#M6094</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Tomas,&lt;/P&gt;&lt;P&gt;You can monitor the BUS_CLK or the CORE_CLK on a CLKOUT pin externally, you should see when the MCU stops and wakes up. This example is using it:&amp;nbsp;&lt;A href="https://community.nxp.com/docs/DOC-341788" rel="nofollow noopener noreferrer" target="_blank"&gt;Example S32K144 RTC VLPS S32DS.R1&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I haven't found anything wrong in the code, but I would recommend stepping the code in the handler once the MCU is back in RUN.&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can keep the execution in a while loop in PORTB_IRQHandler(),&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;uint32_t variable = 1;
while(variable){}&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;then attach the debugger (without reset), halt the core, clear variable and step the code.&lt;/P&gt;&lt;P&gt;You can also implement a HardFault_handler and debug the exception if there is any.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Feb 2020 12:33:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010126#M6094</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2020-02-13T12:33:57Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010127#M6095</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, Daniel,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I modified the code a little bit and assigned different pins for wake-up and go to sleep events, to mask any potential stupid errors. After powering the MCU, the LED starts to blink (FTM1 function) in regular intervals and current oscilates between ~40mA - ~50mA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After triggering the go to sleep event, current falls to ~10mA and LED stops to blink. Than I trigger the wake-up event and attach debugger without reset. After stopping the execution in the debug mode, I find myself within the PORT interrupt handler, in the infinite while loop that you suggested. PMSTAT = 1 (RUN mode) and VLPSA = 0, indicating, that the VLPS transition was correct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I let the execution run after I manually exit the infinite while, the current rises to ~20mA and the LED does not blink. When I put a breakpoint into the FTM1 handler, it gets called as expected, when I step from the handler, I get to the main loop as expected and execute the code. But any breakpoint in the main loop itself does not work. I can see the FTM1 counters work normally, but the code in the main loop apparently does not get called.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A am attaching my current code below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void PORTB_IRQHandler(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if ((PORTB-&amp;gt;ISFR &amp;amp; (0x1 &amp;lt;&amp;lt; pin_dig_0)) != 0x0)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;//&amp;nbsp;Go to sleep event detected.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;sleep_mode_command = TRUE;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;//&amp;nbsp;Deactivates the Go to sleep interrupt.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PORTB-&amp;gt;PCR[11] &amp;amp;= ~PORT_PCR_IRQC_MASK;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;// Clear interrupt.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PORTB-&amp;gt;ISFR |= 0x1 &amp;lt;&amp;lt; 11;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (sleep_mode_command == TRUE)&lt;BR /&gt; {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;// Deactivate peripherals.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if ((PCC-&amp;gt;PCCn[PCC_FTM1_INDEX] &amp;amp; PCC_PCCn_CGC_MASK) != 0x0)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FTM1-&amp;gt;SC &amp;amp;= ~FTM_SC_CLKS_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FTM1-&amp;gt;CONTROLS[0U].CnSC &amp;amp;= ~(FTM_CnSC_CHF_MASK);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PCC-&amp;gt;PCCn[PCC_FTM1_INDEX] &amp;amp;= ~PCC_PCCn_CGC_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if ((PCC-&amp;gt;PCCn[PCC_LPSPI1_INDEX] &amp;amp; PCC_PCCn_CGC_MASK) != 0x0)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPSPI1-&amp;gt;CR &amp;amp;= ~LPSPI_CR_MEN_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPSPI1-&amp;gt;SR |= 0x1 &amp;lt;&amp;lt; 1 /* RDF */;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PCC-&amp;gt;PCCn[PCC_LPSPI1_INDEX] &amp;amp;= ~PCC_PCCn_CGC_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;//&amp;nbsp;Activate WakeUp interrupt on digital pin.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;PORTC-&amp;gt;PCR[15] |= PORT_PCR_IRQC(falling_edge);&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;//&amp;nbsp;Switch to VLPS.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;VLPS_Mode();&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void VLPS_Mode(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;// Set SIRC as system clock.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;uint32_t rccr = SCG-&amp;gt;RCCR;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;rccr &amp;amp;= ~SCG_RCCR_SCS_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;rccr |= SCG_RCCR_SCS(0x2); &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;RCCR = rccr;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;&amp;nbsp;//&amp;nbsp;Wait for SIRC to be set as system clock source.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;while (((SCG-&amp;gt;CSR &amp;amp; (0xF &amp;lt;&amp;lt; 24) /* SCS */) &amp;gt;&amp;gt; 24) != 0x2 /* SIRC_CLK */) { ; }&lt;BR /&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOSC_SetEnable(FALSE);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;SPLL_SetEnable(FALSE);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SystemCoreClockUpdate();&lt;BR /&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(SMC-&amp;gt;PMSTAT == 0x01)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SCB-&amp;gt;SCR |= 0x06;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PMC-&amp;gt;REGSC |= (1 &amp;lt;&amp;lt; 1);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SMC-&amp;gt;PMCTRL |= 0x00000002;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SMC-&amp;gt;PMPROT |= (1 &amp;lt;&amp;lt; 5);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(void)SMC-&amp;gt;PMPROT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(SMC-&amp;gt;PMSTAT == 0x01)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asm("WFI");&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void PORTC_IRQHandler(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if ((PORTC-&amp;gt;ISFR &amp;amp; (0x1 &amp;lt;&amp;lt; pin_dig_1)) != 0x0)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;// Wakeup event detected.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (sleep_mode_command == TRUE)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;// Ensures that the wake up interrupt gets called only in VLPS mode - this is only secondary control as the interrupt &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// is disabled&amp;nbsp;before switching to VLPS.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (sleep_mode_command == TRUE) { ; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;// Infinite while loop for debugger entry.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep_mode_command = FALSE; &lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;// Re-initializes clocks.&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WDOG_disable();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOSC_SetEnable(TRUE);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPLL_SetEnable(TRUE);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;// SPLL as system clock source.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;RCCR = (SCG-&amp;gt;RCCR &amp;amp; ~SCG_RCCR_SCS_MASK) | SCG_RCCR_SCS(0x6);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (((SCG-&amp;gt;CSR &amp;amp; (0xF &amp;lt;&amp;lt; 24) /* SCS */) &amp;gt;&amp;gt; 24) != 0x6 /* SPLL_CLK */) { ; } &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;&amp;nbsp;//&amp;nbsp;Deactivates FIRC if it somehow gets activated after exiting the VLPS.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((SCG-&amp;gt;FIRCCSR &amp;amp; SCG_FIRCCSR_FIRCEN_MASK) != 0x0)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while((SCG-&amp;gt;FIRCCSR &amp;amp; SCG_FIRCCSR_LK_MASK) != 0x0) { ; }&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCG-&amp;gt;FIRCCSR &amp;amp;= ~SCG_FIRCCSR_FIRCEN_MASK;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while((SCG-&amp;gt;FIRCCSR &amp;amp; SCG_FIRCCSR_FIRCVLD_MASK) != 0x0) { ; }&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SystemCoreClockUpdate();&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;//&amp;nbsp;Re-initializes peripherals.&lt;/SPAN&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitGPIOPins();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI_Init_Master(&amp;amp;lpspi1_system_base_chip_config);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitRegularTimer();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #008000;"&gt;//&amp;nbsp;Clear interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; PORTC-&amp;gt;ISFR |= 0x1 &amp;lt;&amp;lt; 11;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Feb 2020 10:18:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010127#M6095</guid>
      <dc:creator>tomasfrcek</dc:creator>
      <dc:date>2020-02-17T10:18:20Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 - switching between RUN and VLPS</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010129#M6097</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, Daniel,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thank you, MCU now wakes up as expected! I also managed a work-around, calling&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;S32_SCB-&amp;gt;AIRCR = S32_SCB_AIRCR_VECTKEY(0x5FA) | S32_SCB_AIRCR_SYSRESETREQ(1);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in the wake up interrupt, causing the processor to be reset. I think it's simpler when you don't need to retain any variables and the application is not time-critical.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Feb 2020 06:19:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-switching-between-RUN-and-VLPS/m-p/1010129#M6097</guid>
      <dc:creator>tomasfrcek</dc:creator>
      <dc:date>2020-02-20T06:19:33Z</dc:date>
    </item>
  </channel>
</rss>

