<?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>S32 SDK中的主题 Re: SPC5748G peripheral init fails</title>
    <link>https://community.nxp.com/t5/S32-SDK/SPC5748G-peripheral-init-fails/m-p/1154113#M1913</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;try to check Mode Entry module status registers to know more about transition status and if clock sources and peripherals clocks are active.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BR, Petr&lt;/P&gt;</description>
    <pubDate>Wed, 16 Sep 2020 10:46:23 GMT</pubDate>
    <dc:creator>PetrS</dc:creator>
    <dc:date>2020-09-16T10:46:23Z</dc:date>
    <item>
      <title>SPC5748G peripheral init fails</title>
      <link>https://community.nxp.com/t5/S32-SDK/SPC5748G-peripheral-init-fails/m-p/1149290#M1860</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I'm developing my SPC5748G board using S32DS with Processor Expert&lt;/P&gt;&lt;P&gt;After I read linflexd_uart_echo_mpc5748g sample code in S32DS then copy values for my project.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When I start debugging, peripheral can not get clock because of mode change timeout.&lt;/P&gt;&lt;P&gt;Mode Change is called in&amp;nbsp;CLOCK_SYS_ConfigureMcMe when clock init&lt;/P&gt;&lt;P&gt;On my board, S_MTRANS bit never change into 0. Here's part of SDK.&lt;/P&gt;&lt;LI-CODE lang="c"&gt;static inline bool MC_ME_GetTransitionStatus(const MC_ME_Type * base)
{
        return (base-&amp;gt;GS &amp;amp; MC_ME_GS_S_MTRANS_MASK) == 0U;
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I checked ST's SPC5Studio SPC56xx SDK from another project&lt;/P&gt;&lt;P&gt;On that SDK, it checks&amp;nbsp;MC_ME_IS's I_MTC bit instead of looking MTRANS bit.&lt;/P&gt;&lt;P&gt;So I modified S32 SDK to checking I_MTC bit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then system clock was good(160mhz), peripheral clock was fine and peripheral driver also could get clock fine.&lt;/P&gt;&lt;P&gt;But when it write LINFLEX Control Register on driver init, fault interrupt occurs.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's the problem line&lt;/P&gt;&lt;LI-CODE lang="c"&gt;static inline void LINFLEXD_EnterInitMode(LINFlexD_Type *base)
{
    uint32_t regValTemp;

    regValTemp = base-&amp;gt;LINCR1;
    regValTemp &amp;amp;= ~(LINFlexD_LINCR1_SLEEP_MASK);
    regValTemp |= LINFlexD_LINCR1_INIT(1UL);
    base-&amp;gt;LINCR1 = regValTemp;                // Fail on this line
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Same problem on Timer Driver&lt;/P&gt;&lt;LI-CODE lang="c"&gt;static inline void PIT_EnableTimer(PIT_Type * const base,
                                   const uint8_t timerType)
{
#if FEATURE_PIT_HAS_RTI_CHANNEL
    if (timerType != 0U)
    {
        base-&amp;gt;MCR &amp;amp;= ~PIT_MCR_MDIS_RTI_MASK;
    }
    else
#endif
    {
        (void)timerType;
        base-&amp;gt;MCR &amp;amp;= ~PIT_MCR_MDIS_MASK;      // fail on this line
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is my board's clock summary( 0hz are omitted )&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Clock sources
SIRC clock [Hz] 128000 128kHz
FIRC clock [Hz] 16000000 16MHz
SXOSC clock [Hz] 32000 32kHz
FXOSC clock [Hz] 32000000 32MHz
PLL_PHIO clock [Hz] 160000000 160MHz
PLL_PHI1 clock [Hz] 80000000 80MHz
SIRC undivided clock [Hz] 128000 128kHz
FIRC undivided clock [Hz] 16000000 16MHz
SXOSC undivided clock [Hz] 32000 32kHz
FXOSC undivided clock [Hz] 32000000 32MHz
ENET_RMII clock [Hz] 50000000 50MHz

System clocks
SYS clock [Hz] 160000000 160MHZ
S160 clock [Hz] 160000000 160MHz
S80 clock [Hz] 80000000 80MHZ
S40 clock [Hz] 40000000 40MHz
F40 clock [Hz] 40000000 40MHz
F80 clock [Hz] 80000000 80MHz
FS80 clock [Hz] 80000000 80MHZ
F20 clock [Hz] 20000000 20MHz

Peripheral clocks
DMAO_CLK [Hz] 80000000 80MHZ
DMAMUXO_CLK [Hz] 80000000 80MHz
DMAMUX1_CLK [Hz] 80000000 80MHz
LINO_CLK [Hz] 40000000 40MHz
LIN1_CLK [Hz] 80000000 80MHz
LIN2_CLK [Hz] 80000000 80MHz
LIN3_CLK [Hz] 80000000 80MHz
LIN4_CLK [Hz] 80000000 80MHz
LINS_CLK [Hz] 80000000 80MHz
LIN6_CLK [Hz] 80000000 80MHz
LIN7_CLK [Hz] 80000000 80MHz
LINS_CLK [Hz] 80000000 80MHz
LIN9_CLK [Hz] 80000000 80MHz
LIN10_CLK [Hz] 80000000 80MHz
LIN11_CLK [Hz] 80000000 80MHz
LIN12_CLK [Hz] 80000000 80MHz
LIN13_CLK [Hz] 80000000 80MHz
LIN14_CLK [Hz] 80000000 80MHz
LIN15_CLK [Hz] 80000000 80MHz
LIN16_CLK [Hz] 80000000 80MHz
LIN17_CLK [Hz] 80000000 80MHz
PITRTIO_CLK [Hz] 32000000 32MHz
PITO_CLK [Hz] 40000000 40MHz&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's main code&lt;/P&gt;&lt;LI-CODE lang="c"&gt;int main(void)
{
  /* Write your local variable definition here */

  /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
  #ifdef PEX_RTOS_INIT
    PEX_RTOS_INIT();                   /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */
  #endif
  /*** End of Processor Expert internal initialization.                    ***/

  /* Write your code here */
  /* For example: for(;;) { } */

	/* Clock Init */
	CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT, g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);
	CLOCK_SYS_UpdateConfiguration(0, CLOCK_MANAGER_POLICY_AGREEMENT);

	PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr);

#if 0
	LINFLEXD_UART_DRV_Init(INST_LINFLEXD_UART1, &amp;amp;linflexd_uart1_State, &amp;amp;linflexd_uart1_InitConfig0);
	LINFLEXD_UART_DRV_SendDataBlocking(INST_LINFLEXD_UART1, (uint8_t*)"hello, World!\r\n", 15U, 500U);
#endif

#if 0	
	PIT_DRV_Init(INST_PIT1, &amp;amp;pit1_InitConfig );
	PIT_DRV_InitChannel(INST_PIT1, &amp;amp;pit1_ChnConfig0);
	PIT_DRV_StartChannel(INST_PIT1, pit1_ChnConfig0.hwChannel);

	OSIF_TimeDelay(0);
#endif
	for(;;)
	{
		  PINS_DRV_TogglePins(PTB, 0xC);
		  delay_ms(50);
	}

  /*** Don't write any code pass this line, or it will be deleted during code generation. ***/
  /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/
  #ifdef PEX_RTOS_START
    PEX_RTOS_START();                  /* Startup of the selected RTOS. Macro is defined by the RTOS component. */
  #endif
  /*** End of RTOS startup code.  ***/
  /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
  for(;;) {
    if(exit_code != 0) {
      break;
    }
  }
  return exit_code;
  /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please have mercy on me&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;</description>
      <pubDate>Sun, 06 Sep 2020 07:50:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32-SDK/SPC5748G-peripheral-init-fails/m-p/1149290#M1860</guid>
      <dc:creator>Dong-il</dc:creator>
      <dc:date>2020-09-06T07:50:50Z</dc:date>
    </item>
    <item>
      <title>Re: SPC5748G peripheral init fails</title>
      <link>https://community.nxp.com/t5/S32-SDK/SPC5748G-peripheral-init-fails/m-p/1154113#M1913</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;try to check Mode Entry module status registers to know more about transition status and if clock sources and peripherals clocks are active.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BR, Petr&lt;/P&gt;</description>
      <pubDate>Wed, 16 Sep 2020 10:46:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32-SDK/SPC5748G-peripheral-init-fails/m-p/1154113#M1913</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2020-09-16T10:46:23Z</dc:date>
    </item>
  </channel>
</rss>

