1 /*
2 * Copyright 2018,2019 NXP
3 * All rights reserved.
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7 /*
8 * How to set up clock using clock driver functions:
9 *
10 * 1. Setup clock sources.
11 *
12 * 2. Set up all dividers.
13 *
14 * 3. Set up all selectors to provide selected clocks.
15 */
16
17 /* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
18 !!GlobalInfo
19 product: Clocks v7.0
20 processor: LPC812
21 package_id: LPC812M101JDH20
22 mcu_data: ksdk2_0
23 processor_version: 0.7.1
24 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
25
26 #include "fsl_power.h"
27 #include "fsl_clock.h"
28 #include "clock_config.h"
29
30 /*******************************************************************************
31 * Definitions
32 ******************************************************************************/
33
34 /*******************************************************************************
35 * Variables
36 ******************************************************************************/
37 /* System clock frequency. */
38 extern uint32_t SystemCoreClock;
39
40 /*******************************************************************************
41 ************************ BOARD_InitBootClocks function ************************
42 ******************************************************************************/
BOARD_InitBootClocks(void)43 void BOARD_InitBootClocks(void)
44 {
45 BOARD_BootClockIRC12M();
46 }
47
48 /*******************************************************************************
49 ******************** Configuration BOARD_BootClockIRC12M **********************
50 ******************************************************************************/
51 /* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
52 !!Configuration
53 name: BOARD_BootClockIRC12M
54 called_from_default_init: true
55 outputs:
56 - {id: I2C0_clock.outFreq, value: 12 MHz}
57 - {id: LowPower_clock.outFreq, value: 10 kHz}
58 - {id: SPI0_clock.outFreq, value: 12 MHz}
59 - {id: SPI1_clock.outFreq, value: 12 MHz}
60 - {id: SYSPLL_clock.outFreq, value: 12 MHz}
61 - {id: System_clock.outFreq, value: 12 MHz}
62 - {id: divto750k_clock.outFreq, value: 750 kHz}
63 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
64
65 /*******************************************************************************
66 * Variables for BOARD_BootClockIRC12M configuration
67 ******************************************************************************/
68 /*******************************************************************************
69 * Code for BOARD_BootClockIRC12M configuration
70 ******************************************************************************/
BOARD_BootClockIRC12M(void)71 void BOARD_BootClockIRC12M(void)
72 {
73 /*!< Set up the clock sources */
74 /*!< Set up IRC */
75 POWER_DisablePD(kPDRUNCFG_PD_IRC_OUT); /*!< Ensure IRC_OUT is on */
76 POWER_DisablePD(kPDRUNCFG_PD_IRC); /*!< Ensure IRC is on */
77 POWER_DisablePD(kPDRUNCFG_PD_SYSOSC); /*!< Ensure Main osc is on */
78 CLOCK_Select(kSYSPLL_From_Irc); /*!< set IRC to pll select */
79 clock_sys_pll_t config;
80 config.src = kCLOCK_SysPllSrcIrc; /*!< set pll src */
81 config.targetFreq = 12000000U; /*!< set pll target freq */
82 CLOCK_InitSystemPll(&config); /*!< set parameters */
83 CLOCK_SetMainClkSrc(kCLOCK_MainClkSrcIrc); /*!< select IRC for main clock */
84 CLOCK_Select(kCLKOUT_From_Irc); /*!< select IRC for CLKOUT */
85 CLOCK_UpdateClkOUTsrc(); /*!< update CLKOUT src */
86 CLOCK_SetCoreSysClkDiv(1U);
87 /*!< Set SystemCoreClock variable. */
88 SystemCoreClock = BOARD_BOOTCLOCKIRC12M_CORE_CLOCK;
89 }
90
91 /*******************************************************************************
92 ******************** Configuration BOARD_BootClockPll12M **********************
93 ******************************************************************************/
94 /* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
95 !!Configuration
96 name: BOARD_BootClockPll12M
97 outputs:
98 - {id: I2C0_clock.outFreq, value: 12 MHz}
99 - {id: LowPower_clock.outFreq, value: 10 kHz}
100 - {id: SPI0_clock.outFreq, value: 12 MHz}
101 - {id: SPI1_clock.outFreq, value: 12 MHz}
102 - {id: SYSPLL_clock.outFreq, value: 12 MHz}
103 - {id: System_clock.outFreq, value: 12 MHz}
104 - {id: divto750k_clock.outFreq, value: 750 kHz}
105 settings:
106 - {id: SYSCON.MAINCLKSEL.sel, value: SYSCON.PLL}
107 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
108
109 /*******************************************************************************
110 * Variables for BOARD_BootClockPll12M configuration
111 ******************************************************************************/
112 /*******************************************************************************
113 * Code for BOARD_BootClockPll12M configuration
114 ******************************************************************************/
BOARD_BootClockPll12M(void)115 void BOARD_BootClockPll12M(void)
116 {
117 /*!< Set up the clock sources */
118 /*!< Set up IRC */
119 POWER_DisablePD(kPDRUNCFG_PD_IRC_OUT); /*!< Ensure IRC_OUT is on */
120 POWER_DisablePD(kPDRUNCFG_PD_IRC); /*!< Ensure IRC is on */
121 POWER_DisablePD(kPDRUNCFG_PD_SYSOSC); /*!< Ensure Main osc is on */
122 CLOCK_Select(kSYSPLL_From_Irc); /*!< set IRC to pll select */
123 clock_sys_pll_t config;
124 config.src = kCLOCK_SysPllSrcIrc; /*!< set pll src */
125 config.targetFreq = 12000000U; /*!< set pll target freq */
126 CLOCK_InitSystemPll(&config); /*!< set parameters */
127 CLOCK_SetMainClkSrc(kCLOCK_MainClkSrcSysPll); /*!< select pll clock for main clock */
128 CLOCK_Select(kCLKOUT_From_Irc); /*!< select IRC for CLKOUT */
129 CLOCK_UpdateClkOUTsrc(); /*!< update CLKOUT src */
130 CLOCK_SetCoreSysClkDiv(1U);
131 /*!< Set SystemCoreClock variable. */
132 SystemCoreClock = BOARD_BOOTCLOCKPLL12M_CORE_CLOCK;
133 }
134
135 /*******************************************************************************
136 ******************** Configuration BOARD_BootClockPll24M **********************
137 ******************************************************************************/
138 /* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
139 !!Configuration
140 name: BOARD_BootClockPll24M
141 outputs:
142 - {id: I2C0_clock.outFreq, value: 12 MHz}
143 - {id: LowPower_clock.outFreq, value: 10 kHz}
144 - {id: SPI0_clock.outFreq, value: 12 MHz}
145 - {id: SPI1_clock.outFreq, value: 12 MHz}
146 - {id: SYSPLL_clock.outFreq, value: 12 MHz}
147 - {id: System_clock.outFreq, value: 12 MHz}
148 - {id: divto750k_clock.outFreq, value: 750 kHz}
149 settings:
150 - {id: SYSCON.MAINCLKSEL.sel, value: SYSCON.PLL}
151 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
152
153 /*******************************************************************************
154 * Variables for BOARD_BootClockPll24M configuration
155 ******************************************************************************/
156 /*******************************************************************************
157 * Code for BOARD_BootClockPll24M configuration
158 ******************************************************************************/
BOARD_BootClockPll24M(void)159 void BOARD_BootClockPll24M(void)
160 {
161 /*!< Set up the clock sources */
162 /*!< Set up IRC */
163 POWER_DisablePD(kPDRUNCFG_PD_IRC_OUT); /*!< Ensure IRC_OUT is on */
164 POWER_DisablePD(kPDRUNCFG_PD_IRC); /*!< Ensure IRC is on */
165 POWER_DisablePD(kPDRUNCFG_PD_SYSOSC); /*!< Ensure Main osc is on */
166 CLOCK_Select(kSYSPLL_From_Irc); /*!< set IRC to pll select */
167 clock_sys_pll_t config;
168 config.src = kCLOCK_SysPllSrcIrc; /*!< set pll src */
169 config.targetFreq = 12000000U; /*!< set pll target freq */
170 CLOCK_InitSystemPll(&config); /*!< set parameters */
171 CLOCK_SetMainClkSrc(kCLOCK_MainClkSrcSysPll); /*!< select pll clock for main clock */
172 CLOCK_Select(kCLKOUT_From_Irc); /*!< select IRC for CLKOUT */
173 CLOCK_UpdateClkOUTsrc(); /*!< update CLKOUT src */
174 CLOCK_SetCoreSysClkDiv(1U);
175 /*!< Set SystemCoreClock variable. */
176 SystemCoreClock = BOARD_BOOTCLOCKPLL24M_CORE_CLOCK;
177 }
178