void Chip_SetupXtalClocking(void) { /* Disconnect the Main PLL if it is connected already */ if (Chip_Clock_IsMainPLLConnected()) { Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT); } /* Disable the PLL if it is enabled */ if (Chip_Clock_IsMainPLLEnabled()) { Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE); } /* Enable the crystal */ if (!Chip_Clock_IsCrystalEnabled()) Chip_Clock_EnableCrystal(); while(!Chip_Clock_IsCrystalEnabled()) {} /* Set PLL0 Source to Crystal Oscillator */ Chip_Clock_SetCPUClockDiv(0); Chip_Clock_SetMainPLLSource(SYSCTL_PLLCLKSRC_MAINOSC); /* FCCO = ((15+1) * 2 * 12MHz) / (0+1) = 384MHz */ Chip_Clock_SetupPLL(SYSCTL_MAIN_PLL, 15, 0); Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE); /* 384MHz / (3+1) = 96MHz */ Chip_Clock_SetCPUClockDiv(3); while (!Chip_Clock_IsMainPLLLocked()) {} /* Wait for the PLL to Lock */ Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT); }
/* Clock and PLL initialization based on the external oscillator */ void Chip_SetupXtalClocking(void) { /* Enable the crystal */ if (!Chip_Clock_IsCrystalEnabled()) Chip_Clock_EnableCrystal(); while(!Chip_Clock_IsCrystalEnabled()) {} /* Clock the CPU from SYSCLK, in case if it is clocked by PLL0 */ Chip_Clock_SetCPUClockSource(SYSCTL_CCLKSRC_SYSCLK); /* Disable the PLL if it is enabled */ if (Chip_Clock_IsMainPLLEnabled()) { Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE); } /* It is safe to switch the PLL Source to Crystal Oscillator */ Chip_Clock_SetMainPLLSource(SYSCTL_PLLCLKSRC_MAINOSC); /* FCCO = 12MHz * (9+1) * 2 * (0+1) = 240MHz */ /* Fout = FCCO / ((0+1) * 2) = 120MHz */ Chip_Clock_SetupPLL(SYSCTL_MAIN_PLL, 9, 0); Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE); Chip_Clock_SetCPUClockDiv(1); while (!Chip_Clock_IsMainPLLLocked()) {} /* Wait for the PLL to Lock */ Chip_Clock_SetCPUClockSource(SYSCTL_CCLKSRC_MAINPLL); /* Peripheral clocking will be derived from PLL0 with a divider of 2 (60MHz) */ Chip_Clock_SetPCLKDiv(2); }
void Chip_SetupIrcClocking(void) { /* Disconnect the Main PLL if it is connected already */ if (Chip_Clock_IsMainPLLConnected()) { Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT); } /* Disable the PLL if it is enabled */ if (Chip_Clock_IsMainPLLEnabled()) { Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE); } Chip_Clock_SetCPUClockDiv(0); Chip_Clock_SetMainPLLSource(SYSCTL_PLLCLKSRC_IRC); /* FCCO = ((44+1) * 2 * 4MHz) / (0+1) = 360MHz */ Chip_Clock_SetupPLL(SYSCTL_MAIN_PLL, 44, 0); Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE); Chip_Clock_SetCPUClockDiv(2); while (!Chip_Clock_IsMainPLLLocked()) {} /* Wait for the PLL to Lock */ Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT); }
void setupClock(void) { /* Disconnect the Main PLL if it is connected already */ if (Chip_Clock_IsMainPLLConnected()) { Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT); } /* Disable the PLL if it is enabled */ if (Chip_Clock_IsMainPLLEnabled()) { Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE); } /* Enable the crystal */ if (!Chip_Clock_IsCrystalEnabled()) Chip_Clock_EnableCrystal(); while(!Chip_Clock_IsCrystalEnabled()) {} /* Set PLL0 Source to Crystal Oscillator */ Chip_Clock_SetCPUClockDiv(0); Chip_Clock_SetMainPLLSource(SYSCTL_PLLCLKSRC_MAINOSC); /* FCCO = ((19+1) * 2 * 12MHz) / (0+1) = 480MHz */ Chip_Clock_SetupPLL(SYSCTL_MAIN_PLL, 19, 0); Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE); /* 480MHz / (3+1) = 120MHz */ Chip_Clock_SetCPUClockDiv(3); while (!Chip_Clock_IsMainPLLLocked()) {} /* Wait for the PLL to Lock */ Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT); Chip_SYSCTL_SetFLASHAccess(FLASHTIM_120MHZ_CPU); }