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