Hello,
I do have an issue switching from HSRUN mode to RUN mode.
After the configuration of the clocks, CLOCK_GetFllFreq() return 0 and my program is not working.
Although if I start in RUN mode, CLOCK_GetFllFreq() returns the correct value.
Can you please help me figure out, what I am missing when switching from HSRUN to RUN?
Thanks in advance.
Code for RUN
void CLK_RUN(void)
{
/* Set the system clock dividers in SIM to safe value. */
CLOCK_SetSimSafeDivs();
/* Configure RTC clock including enabling RTC oscillator. */
CLOCK_CONFIG_SetRtcClock(RTC_OSC_CAP_LOAD_12PF, RTC_RTC32KCLK_PERIPHERALS_ENABLED);
/* Set MCG to FBI mode. */
CLOCK_SetInternalRefClkConfig(mcgConfig_CLK_RUN.irclkEnableMode,
mcgConfig_CLK_RUN.ircs,
mcgConfig_CLK_RUN.fcrdiv);
#if FSL_CLOCK_DRIVER_VERSION >= MAKE_VERSION(2, 2, 0)
CLOCK_SetFbiMode(mcgConfig_CLK_RUN.dmx32,
mcgConfig_CLK_RUN.drs,
CLOCK_CONFIG_FllStableDelay);
#else
CLOCK_SetFbiMode(mcgConfig_CLK_RUN.drs,
CLOCK_CONFIG_FllStableDelay);
#endif
/* Select the MCG external reference clock. */
CLOCK_SetExternalRefClkConfig(mcgConfig_CLK_RUN.oscsel);
/* Set the clock configuration in SIM module. */
CLOCK_SetSimConfig(&simConfig_CLK_RUN);
/* Set SystemCoreClock variable. */
SystemCoreClock = CLK_RUN_CORE_CLOCK;
}
Code for HSRUN
/* Set HSRUN power mode */
SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
SMC_SetPowerModeHsrun(SMC);
while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateHsrun)
{
}
/* Set the system clock dividers in SIM to safe value. */
CLOCK_SetSimSafeDivs();
/* Configure RTC clock including enabling RTC oscillator. */
CLOCK_CONFIG_SetRtcClock(RTC_OSC_CAP_LOAD_12PF, RTC_RTC32KCLK_PERIPHERALS_ENABLED);
/* Initializes OSC0 according to board configuration. */
CLOCK_InitOsc0(&oscConfig_CLK_HSRUN);
CLOCK_SetXtal0Freq(oscConfig_CLK_HSRUN.freq);
/* Configure FLL external reference divider (FRDIV). */
CLOCK_CONFIG_SetFllExtRefDiv(mcgConfig_CLK_HSRUN.frdiv);
/* Set MCG to PEE mode. */
CLOCK_BootToPeeMode(mcgConfig_CLK_HSRUN.oscsel,
kMCG_PllClkSelPll0,
&mcgConfig_CLK_HSRUN.pll0Config);
/* Set the clock configuration in SIM module. */
CLOCK_SetSimConfig(&simConfig_CLK_HSRUN);
/* Set SystemCoreClock variable. */
SystemCoreClock = CLK_HSRUN_CORE_CLOCK;
/* Enable USB FS clock. */
CLOCK_EnableUsbfs0Clock(kCLOCK_UsbSrcPll0, SIM_USB_CLK_96000000HZ);