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