<?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: S32K146 CAN cannot Enter Freeze Mode in S32K</title>
    <link>https://community.nxp.com/t5/S32K/S32K146-CAN-cannot-Enter-Freeze-Mode/m-p/2103491#M49132</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;DIV&gt;1) yes, using &lt;SPAN&gt;RTM 4.0.1&lt;/SPAN&gt; or newer the issue should not appear anymore. As long as both module and CAN PE clock are active.&lt;BR /&gt;An update follows procedure to enter Freeze mode as stated in the device RM in chapter&amp;nbsp;
&lt;DIV&gt;55.1.9.1 Freeze mode entry&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;2) you can try to add the code into your SDK version.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;BR, Petr&lt;/DIV&gt;</description>
    <pubDate>Fri, 23 May 2025 11:05:12 GMT</pubDate>
    <dc:creator>PetrS</dc:creator>
    <dc:date>2025-05-23T11:05:12Z</dc:date>
    <item>
      <title>S32K146 CAN cannot Enter Freeze Mode</title>
      <link>https://community.nxp.com/t5/S32K/S32K146-CAN-cannot-Enter-Freeze-Mode/m-p/2102788#M49095</link>
      <description>&lt;P&gt;Dears&amp;nbsp;&lt;/P&gt;&lt;P&gt;We encounter an issue when we do EMC test to S32K146, S32k146 can't&amp;nbsp;Enter Freeze Mode and MCU firmware always stop at the while loop here:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.jpg" style="width: 838px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/339229i2DE7F72DBA6B5454/image-size/large?v=v2&amp;amp;px=999" role="button" title="1.jpg" alt="1.jpg" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;1.jpg&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;in&amp;nbsp;void FLEXCAN_EnterFreezeMode(CAN_Type * base), in the&amp;nbsp;"flexcan_hw_access.c". SDK version we now use is RTM 3.0.0.&lt;/P&gt;&lt;P&gt;Compare to SDK RTM 4.0.1 we found there added much more steps than&amp;nbsp;RTM 3.0.0.&lt;/P&gt;&lt;P&gt;My question is:&lt;/P&gt;&lt;P&gt;1. If we update the SDK to RTM 4.0.1 can this issue will not exist?&lt;/P&gt;&lt;P&gt;2. Because our project will SOP soon, change SDK is not possible, how can we do to avoid stopping at while enter the&amp;nbsp;FreezeMode base on the SDK 3.0.0?&lt;/P&gt;&lt;P&gt;SDK RTM 4.0.1&amp;nbsp;enter&amp;nbsp; Freeze Mode function:&lt;/P&gt;&lt;P&gt;/*FUNCTION**********************************************************************&lt;BR /&gt;*&lt;BR /&gt;* Function Name : FLEXCAN_EnterFreezeMode&lt;BR /&gt;* Description : Enter the freeze mode.&lt;BR /&gt;*&lt;BR /&gt;*END**************************************************************************/&lt;BR /&gt;void FLEXCAN_EnterFreezeMode(CAN_Type * base)&lt;BR /&gt;{&lt;BR /&gt;bool enabled = false;&lt;/P&gt;&lt;P&gt;base-&amp;gt;MCR = (base-&amp;gt;MCR &amp;amp; ~CAN_MCR_FRZ_MASK) | CAN_MCR_FRZ(1U);&lt;BR /&gt;base-&amp;gt;MCR = (base-&amp;gt;MCR &amp;amp; ~CAN_MCR_HALT_MASK) | CAN_MCR_HALT(1U);&lt;BR /&gt;if (((base-&amp;gt;MCR &amp;amp; CAN_MCR_MDIS_MASK) &amp;gt;&amp;gt; CAN_MCR_MDIS_SHIFT) == 0U)&lt;BR /&gt;{&lt;BR /&gt;enabled = true;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;base-&amp;gt;MCR &amp;amp;= ~CAN_MCR_MDIS_MASK;&lt;BR /&gt;}&lt;BR /&gt;#if defined(ERRATA_E9595)&lt;BR /&gt;/* Check Low-Power Mode Acknowledge Cleared */&lt;BR /&gt;while (((base-&amp;gt;MCR &amp;amp; CAN_MCR_LPMACK_MASK) &amp;gt;&amp;gt; CAN_MCR_LPMACK_SHIFT) == 1U) {}&lt;BR /&gt;/* Check if is a Bus-Off Error corresponding to 1x */&lt;BR /&gt;if ((((base-&amp;gt;ESR1 &amp;amp; CAN_ESR1_FLTCONF_MASK) &amp;gt;&amp;gt; CAN_ESR1_FLTCONF_SHIFT) &amp;amp; 2U) != 0U)&lt;BR /&gt;{&lt;BR /&gt;/* Save registers before Soft Reset */&lt;BR /&gt;uint32_t tempIMSK[2],tempMCR;&lt;BR /&gt;tempIMSK[0] = base-&amp;gt;IMASK1;&lt;BR /&gt;tempIMSK[1] = base-&amp;gt;IMASK2;&lt;BR /&gt;tempMCR = base-&amp;gt;MCR;&lt;BR /&gt;/* Soft Reset FlexCan */&lt;BR /&gt;base-&amp;gt;MCR |= CAN_MCR_SOFTRST(1U);&lt;BR /&gt;while (((base-&amp;gt;MCR &amp;amp; CAN_MCR_SOFTRST_MASK) &amp;gt;&amp;gt; CAN_MCR_SOFTRST_SHIFT) != 0U) {}&lt;BR /&gt;/* Restore registers after Soft Reset */&lt;BR /&gt;base-&amp;gt;IMASK1 = tempIMSK[0];&lt;BR /&gt;base-&amp;gt;IMASK2 = tempIMSK[1];&lt;BR /&gt;base-&amp;gt;MCR = tempMCR;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;base-&amp;gt;MCR = (base-&amp;gt;MCR &amp;amp; ~CAN_MCR_HALT_MASK) | CAN_MCR_HALT(1U);&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;base-&amp;gt;TIMER = 0U;&lt;BR /&gt;uint32_t aux = 0U;&lt;/P&gt;&lt;P&gt;#if FEATURE_CAN_HAS_FD&lt;BR /&gt;/* MCR[FDEN] was reset to 0, wait for timeout */&lt;BR /&gt;if (!FLEXCAN_IsFDEnabled(base))&lt;BR /&gt;{&lt;BR /&gt;while (!FLEXCAN_GetFreezeMode(base) &amp;amp;&amp;amp; (aux &amp;lt; 180U))&lt;BR /&gt;{&lt;BR /&gt;/* Wait until finish counting 180 bit times and exit*/&lt;BR /&gt;aux = (uint32_t)base-&amp;gt;TIMER;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;while (!FLEXCAN_GetFreezeMode(base) &amp;amp;&amp;amp; (aux &amp;lt; 730U))&lt;BR /&gt;{&lt;BR /&gt;/* Wait until finish counting 730 bit times and exit*/&lt;BR /&gt;aux = (uint32_t)base-&amp;gt;TIMER;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;#else&lt;BR /&gt;while (!FLEXCAN_GetFreezeMode(base) &amp;amp;&amp;amp; (aux &amp;lt; 180U))&lt;BR /&gt;{&lt;BR /&gt;/* Wait until finish counting 180 bit times and exit*/&lt;BR /&gt;aux = (uint32_t)base-&amp;gt;TIMER;&lt;BR /&gt;}&lt;BR /&gt;#endif /* FEATURE_CAN_HAS_FD */&lt;/P&gt;&lt;P&gt;if (((base-&amp;gt;MCR &amp;amp; CAN_MCR_FRZACK_MASK) &amp;gt;&amp;gt; CAN_MCR_FRZACK_SHIFT) == 0U)&lt;BR /&gt;{&lt;BR /&gt;/* Save registers before Soft Reset */&lt;BR /&gt;uint32_t tempIMSK1, tempMCR;&lt;/P&gt;&lt;P&gt;/* Save IMASK1 value */&lt;BR /&gt;tempIMSK1 = base-&amp;gt;IMASK1;&lt;/P&gt;&lt;P&gt;#if FEATURE_CAN_MAX_MB_NUM &amp;gt; 32U&lt;BR /&gt;uint32_t tempIMSK2 = 0U;&lt;/P&gt;&lt;P&gt;if (FLEXCAN_GetMaxMbNum(base) &amp;gt; 32U)&lt;BR /&gt;{&lt;BR /&gt;/* Save IMASK2 value */&lt;BR /&gt;tempIMSK2 = base-&amp;gt;IMASK2;&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;BR /&gt;#if FEATURE_CAN_MAX_MB_NUM &amp;gt; 64U&lt;BR /&gt;uint32_t tempIMSK3 = 0U;&lt;/P&gt;&lt;P&gt;if (FLEXCAN_GetMaxMbNum(base) &amp;gt; 64U)&lt;BR /&gt;{&lt;BR /&gt;/* Save IMASK3 value */&lt;BR /&gt;tempIMSK3 = base-&amp;gt;IMASK3;&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;BR /&gt;/* Save MCR value */&lt;BR /&gt;tempMCR = base-&amp;gt;MCR;&lt;/P&gt;&lt;P&gt;/* Soft Reset FlexCan */&lt;BR /&gt;base-&amp;gt;MCR |= CAN_MCR_SOFTRST(1U);&lt;BR /&gt;while (((base-&amp;gt;MCR &amp;amp; CAN_MCR_SOFTRST_MASK) &amp;gt;&amp;gt; CAN_MCR_SOFTRST_SHIFT) != 0U) {}&lt;/P&gt;&lt;P&gt;/* Restore IMASK1 value */&lt;BR /&gt;base-&amp;gt;IMASK1 = tempIMSK1;&lt;/P&gt;&lt;P&gt;#if FEATURE_CAN_MAX_MB_NUM &amp;gt; 32U&lt;BR /&gt;if (FLEXCAN_GetMaxMbNum(base) &amp;gt; 32U)&lt;BR /&gt;{&lt;BR /&gt;/* Restore IMASK2 value */&lt;BR /&gt;base-&amp;gt;IMASK2 = tempIMSK2;&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;BR /&gt;#if FEATURE_CAN_MAX_MB_NUM &amp;gt; 64U&lt;BR /&gt;if (FLEXCAN_GetMaxMbNum(base) &amp;gt; 64U)&lt;BR /&gt;{&lt;BR /&gt;/* Restore IMASK3 value */&lt;BR /&gt;base-&amp;gt;IMASK3 = tempIMSK3;&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;/* Restore MCR value */&lt;BR /&gt;base-&amp;gt;MCR = tempMCR;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;if (false == enabled)&lt;BR /&gt;{&lt;BR /&gt;base-&amp;gt;MCR |= CAN_MCR_MDIS_MASK;&lt;BR /&gt;/* Wait until disable mode acknowledged */&lt;BR /&gt;while (((base-&amp;gt;MCR &amp;amp; CAN_MCR_LPMACK_MASK) &amp;gt;&amp;gt; CAN_MCR_LPMACK_SHIFT) == 0U) {}&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 22 May 2025 14:05:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K146-CAN-cannot-Enter-Freeze-Mode/m-p/2102788#M49095</guid>
      <dc:creator>Ali22</dc:creator>
      <dc:date>2025-05-22T14:05:53Z</dc:date>
    </item>
    <item>
      <title>Re: S32K146 CAN cannot Enter Freeze Mode</title>
      <link>https://community.nxp.com/t5/S32K/S32K146-CAN-cannot-Enter-Freeze-Mode/m-p/2103491#M49132</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;DIV&gt;1) yes, using &lt;SPAN&gt;RTM 4.0.1&lt;/SPAN&gt; or newer the issue should not appear anymore. As long as both module and CAN PE clock are active.&lt;BR /&gt;An update follows procedure to enter Freeze mode as stated in the device RM in chapter&amp;nbsp;
&lt;DIV&gt;55.1.9.1 Freeze mode entry&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;2) you can try to add the code into your SDK version.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;BR, Petr&lt;/DIV&gt;</description>
      <pubDate>Fri, 23 May 2025 11:05:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K146-CAN-cannot-Enter-Freeze-Mode/m-p/2103491#M49132</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2025-05-23T11:05:12Z</dc:date>
    </item>
  </channel>
</rss>

