![]() |
MCUXpresso SDK API Reference Manual
Rev 2.13.0
NXP Semiconductors
|
The MCUXpresso SDK provides APIs for MCUXpresso SDK devices' clock operation.
The clock driver supports:
The MCUXpresso SDK provides a peripheral clock driver for the SYSCON module of MCUXpresso SDK devices.
Clock driver provides these functions:
SYSCON clock module provides clocks, such as MCLKCLK, ADCCLK, DMICCLK, MCGFLLCLK, FXCOMCLK, WDTOSC, RTCOSC, USBCLK, and SYSPLL. The functions CLOCK_EnableClock() and CLOCK_DisableClock() enables and disables the various clocks. CLOCK_SetupFROClocking() initializes the FRO to 12 MHz, 48 MHz, or 96 MHz frequency. CLOCK_SetupPLLData(), CLOCK_SetupSystemPLLPrec(), and CLOCK_SetPLLFreq() functions are used to setup the PLL. The SYSCON clock driver provides functions to get the frequency of these clocks, such as CLOCK_GetFreq(), CLOCK_GetFro12MFreq(), CLOCK_GetExtClkFreq(), CLOCK_GetWdtOscFreq(), CLOCK_GetFroHfFreq(), CLOCK_GetPllOutFreq(), CLOCK_GetOsc32KFreq(), CLOCK_GetCoreSysClkFreq(), CLOCK_GetI2SMClkFreq(), CLOCK_GetFlexCommClkFreq, and CLOCK_GetAsyncApbClkFreq.
The SYSCON clock driver provides the function to configure the clock selected. The function CLOCK_AttachClk() is implemented for this. The function selects the clock source for a particular peripheral like MAINCLK, DMIC, FLEXCOMM, USB, ADC, and PLL.
The SYSCON clock module provides the function to setup the peripheral clock dividers. The function CLOCK_SetClkDiv() configures the CLKDIV registers for various periperals like USB, DMIC, I2S, SYSTICK, AHB, ADC, and also CLKOUT and TRACE functions.
The SYSCON clock driver provides the function CLOCK_SetFLASHAccessCyclesForFreq() that configures FLASHCFG register with a selected FLASHTIM value.
POWER_DisablePD(kPDRUNCFG_PD_FRO_EN); /*!< Ensure FRO is on so that we can switch to its 12MHz mode temporarily
Files | |
file | fsl_clock.h |
Macros | |
#define | CLOCK_FRO_SETTING_API_ROM_ADDRESS (0x0F001CD3U) |
FRO clock setting API address in ROM. More... | |
#define | CLOCK_FAIM_BASE (0x50010000U) |
FAIM base address. | |
#define | ADC_CLOCKS |
Clock ip name array for ADC. More... | |
#define | ACMP_CLOCKS |
Clock ip name array for ACMP. More... | |
#define | DAC_CLOCKS |
Clock ip name array for DAC. More... | |
#define | SWM_CLOCKS |
Clock ip name array for SWM. More... | |
#define | ROM_CLOCKS |
Clock ip name array for ROM. More... | |
#define | SRAM_CLOCKS |
Clock ip name array for SRAM. More... | |
#define | IOCON_CLOCKS |
Clock ip name array for IOCON. More... | |
#define | GPIO_CLOCKS |
Clock ip name array for GPIO. More... | |
#define | GPIO_INT_CLOCKS |
Clock ip name array for GPIO_INT. More... | |
#define | CRC_CLOCKS |
Clock ip name array for CRC. More... | |
#define | WWDT_CLOCKS |
Clock ip name array for WWDT. More... | |
#define | SCT_CLOCKS |
Clock ip name array for SCT0. More... | |
#define | I2C_CLOCKS |
Clock ip name array for I2C. More... | |
#define | USART_CLOCKS |
Clock ip name array for I2C. More... | |
#define | SPI_CLOCKS |
Clock ip name array for SPI. More... | |
#define | CAPT_CLOCKS |
Clock ip name array for CAPT. More... | |
#define | CTIMER_CLOCKS |
Clock ip name array for CTIMER. More... | |
#define | MRT_CLOCKS |
Clock ip name array for MRT. More... | |
#define | WKT_CLOCKS |
Clock ip name array for WKT. More... | |
#define | PLU_CLOCKS |
Clock ip name array for PLU. More... | |
#define | CLK_GATE_DEFINE(reg, bit) ((((reg)&0xFFU) << 8U) | ((bit)&0xFFU)) |
Internal used Clock definition only. More... | |
Enumerations | |
enum | clock_ip_name_t { kCLOCK_IpInvalid = 0U, kCLOCK_Sys = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 0U), kCLOCK_Rom = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 1U), kCLOCK_Ram0 = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 2U), kCLOCK_Flash = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 4U), kCLOCK_I2c0 = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 5U), kCLOCK_Gpio0 = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 6U), kCLOCK_Swm = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 7U), kCLOCK_Wkt = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 9U), kCLOCK_Mrt = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 10U), kCLOCK_Spi0 = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 11U), kCLOCK_Crc = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 13U), kCLOCK_Uart0 = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 14U), kCLOCK_Uart1 = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 15U), kCLOCK_Wwdt = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 17U), kCLOCK_Iocon = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 18U), kCLOCK_Acmp = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 19U), kCLOCK_I2c1 = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 21U), kCLOCK_Adc = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 24U), kCLOCK_Ctimer0 = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 25U), kCLOCK_Dac = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 27U), kCLOCK_GpioInt = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL0, 28U), kCLOCK_Capt = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL1, 0U), kCLOCK_PLU = CLK_GATE_DEFINE(SYS_AHB_CLK_CTRL1, 5U) } |
Clock gate name used for CLOCK_EnableClock/CLOCK_DisableClock. More... | |
enum | clock_name_t { kCLOCK_CoreSysClk, kCLOCK_MainClk, kCLOCK_Fro, kCLOCK_FroDiv, kCLOCK_ExtClk, kCLOCK_LPOsc, kCLOCK_Frg0 } |
Clock name used to get clock frequency. More... | |
enum | clock_select_t { kCAPT_Clk_From_Fro = CLK_MUX_DEFINE(CAPTCLKSEL, 0U), kCAPT_Clk_From_MainClk = CLK_MUX_DEFINE(CAPTCLKSEL, 1U), kCAPT_Clk_From_Fro_Div = CLK_MUX_DEFINE(CAPTCLKSEL, 3U), kCAPT_Clk_From_LPOsc = CLK_MUX_DEFINE(CAPTCLKSEL, 4U), kADC_Clk_From_Fro = CLK_MUX_DEFINE(ADCCLKSEL, 0U), kADC_Clk_From_Extclk = CLK_MUX_DEFINE(ADCCLKSEL, 1U), kUART0_Clk_From_Fro = CLK_MUX_DEFINE(UART0CLKSEL, 0U), kUART0_Clk_From_MainClk = CLK_MUX_DEFINE(UART0CLKSEL, 1U), kUART0_Clk_From_Frg0Clk = CLK_MUX_DEFINE(UART0CLKSEL, 2U), kUART0_Clk_From_Fro_Div = CLK_MUX_DEFINE(UART0CLKSEL, 4U), kUART1_Clk_From_Fro = CLK_MUX_DEFINE(UART1CLKSEL, 0U), kUART1_Clk_From_MainClk = CLK_MUX_DEFINE(UART1CLKSEL, 1U), kUART1_Clk_From_Frg0Clk = CLK_MUX_DEFINE(UART1CLKSEL, 2U), kUART1_Clk_From_Fro_Div = CLK_MUX_DEFINE(UART1CLKSEL, 4U), kI2C0_Clk_From_Fro = CLK_MUX_DEFINE(I2C0CLKSEL, 0U), kI2C0_Clk_From_MainClk = CLK_MUX_DEFINE(I2C0CLKSEL, 1U), kI2C0_Clk_From_Frg0Clk = CLK_MUX_DEFINE(I2C0CLKSEL, 2U), kI2C0_Clk_From_Fro_Div = CLK_MUX_DEFINE(I2C0CLKSEL, 4U), kI2C1_Clk_From_Fro = CLK_MUX_DEFINE(I2C1CLKSEL, 0U), kI2C1_Clk_From_MainClk = CLK_MUX_DEFINE(I2C1CLKSEL, 1U), kI2C1_Clk_From_Frg0Clk = CLK_MUX_DEFINE(I2C1CLKSEL, 2U), kI2C1_Clk_From_Fro_Div = CLK_MUX_DEFINE(I2C1CLKSEL, 4U), kSPI0_Clk_From_Fro = CLK_MUX_DEFINE(SPI0CLKSEL, 0U), kSPI0_Clk_From_MainClk = CLK_MUX_DEFINE(SPI0CLKSEL, 1U), kSPI0_Clk_From_Frg0Clk = CLK_MUX_DEFINE(SPI0CLKSEL, 2U), kSPI0_Clk_From_Fro_Div = CLK_MUX_DEFINE(SPI0CLKSEL, 4U), kFRG0_Clk_From_Fro = CLK_MUX_DEFINE(FRG[0].FRGCLKSEL, 0U), kFRG0_Clk_From_MainClk = CLK_MUX_DEFINE(FRG[0].FRGCLKSEL, 1U), kCLKOUT_From_Fro = CLK_MUX_DEFINE(CLKOUTSEL, 0U), kCLKOUT_From_MainClk = CLK_MUX_DEFINE(CLKOUTSEL, 1U), kCLKOUT_From_ExtClk = CLK_MUX_DEFINE(CLKOUTSEL, 3U), kCLKOUT_From_Lposc = CLK_MUX_DEFINE(CLKOUTSEL, 4U) } |
Clock Mux Switches CLK_MUX_DEFINE(reg, mux) reg is used to define the mux register mux is used to define the mux value. More... | |
enum | clock_divider_t { kCLOCK_DivAhbClk = CLK_DIV_DEFINE(SYSAHBCLKDIV), kCLOCK_DivAdcClk = CLK_DIV_DEFINE(ADCCLKDIV), kCLOCK_DivClkOut = CLK_DIV_DEFINE(CLKOUTDIV) } |
Clock divider. More... | |
enum | clock_fro_osc_freq_t { kCLOCK_FroOscOut18M = 18000U, kCLOCK_FroOscOut24M = 24000U, kCLOCK_FroOscOut30M = 30000U } |
fro output frequency source definition More... | |
enum | clock_main_clk_src_t { kCLOCK_MainClkSrcFro = CLK_MAIN_CLK_MUX_DEFINE(0U, 0U), kCLOCK_MainClkSrcExtClk = CLK_MAIN_CLK_MUX_DEFINE(1U, 0U), kCLOCK_MainClkSrcLPOsc = CLK_MAIN_CLK_MUX_DEFINE(2U, 0U), kCLOCK_MainClkSrcFroDiv = CLK_MAIN_CLK_MUX_DEFINE(3U, 0U) } |
PLL clock definition. More... | |
Variables | |
volatile uint32_t | g_LP_Osc_Freq |
lower power oscilltor clock frequency. More... | |
volatile uint32_t | g_Ext_Clk_Freq |
external clock frequency. More... | |
volatile uint32_t | g_Fro_Osc_Freq |
external clock frequency. More... | |
Driver version | |
#define | FSL_CLOCK_DRIVER_VERSION (MAKE_VERSION(2, 3, 3)) |
CLOCK driver version 2.3.3. More... | |
Clock gate, mux, and divider. | |
static void | CLOCK_EnableClock (clock_ip_name_t clk) |
static void | CLOCK_DisableClock (clock_ip_name_t clk) |
static void | CLOCK_Select (clock_select_t sel) |
static void | CLOCK_SetClkDivider (clock_divider_t name, uint32_t value) |
static uint32_t | CLOCK_GetClkDivider (clock_divider_t name) |
static void | CLOCK_SetCoreSysClkDiv (uint32_t value) |
void | CLOCK_SetMainClkSrc (clock_main_clk_src_t src) |
Set main clock reference source. More... | |
static void | CLOCK_SetFRGClkMul (uint32_t *base, uint32_t mul) |
Get frequency | |||
| |||
uint32_t | CLOCK_GetFRG0ClkFreq (void) | ||
Return Frequency of FRG0 Clock. More... | |||
uint32_t | CLOCK_GetMainClkFreq (void) | ||
Return Frequency of Main Clock. More... | |||
uint32_t | CLOCK_GetFroFreq (void) | ||
Return Frequency of FRO. More... | |||
static uint32_t | CLOCK_GetCoreSysClkFreq (void) | ||
Return Frequency of core. More... | |||
uint32_t | CLOCK_GetClockOutClkFreq (void) | ||
Return Frequency of ClockOut. More... | |||
uint32_t | CLOCK_GetUart0ClkFreq (void) | ||
Get UART0 frequency. More... | |||
uint32_t | CLOCK_GetUart1ClkFreq (void) | ||
Get UART1 frequency. More... | |||
uint32_t | CLOCK_GetFreq (clock_name_t clockName) | ||
Return Frequency of selected clock. More... | |||
static uint32_t | CLOCK_GetLPOscFreq (void) | ||
Get watch dog OSC frequency. More... | |||
static uint32_t | CLOCK_GetExtClkFreq (void) | ||
Get external clock frequency. More... | |||
Fractional clock operations | |||
| |||
bool | CLOCK_SetFRG0ClkFreq (uint32_t freq) | ||
Set FRG0 output frequency. More... | |||
External/internal oscillator clock operations | |
void | CLOCK_InitExtClkin (uint32_t clkInFreq) |
Init external CLK IN, select the CLKIN as the external clock source. More... | |
static void | CLOCK_DeinitLpOsc (void) |
Deinit watch dog OSC. | |
void | CLOCK_SetFroOscFreq (clock_fro_osc_freq_t freq) |
Set FRO oscillator output frequency. More... | |
#define FSL_CLOCK_DRIVER_VERSION (MAKE_VERSION(2, 3, 3)) |
#define CLOCK_FRO_SETTING_API_ROM_ADDRESS (0x0F001CD3U) |
#define ADC_CLOCKS |
#define ACMP_CLOCKS |
#define DAC_CLOCKS |
#define SWM_CLOCKS |
#define ROM_CLOCKS |
#define SRAM_CLOCKS |
#define IOCON_CLOCKS |
#define GPIO_CLOCKS |
#define GPIO_INT_CLOCKS |
#define CRC_CLOCKS |
#define WWDT_CLOCKS |
#define SCT_CLOCKS |
#define I2C_CLOCKS |
#define USART_CLOCKS |
#define SPI_CLOCKS |
#define CAPT_CLOCKS |
#define CTIMER_CLOCKS |
#define MRT_CLOCKS |
#define WKT_CLOCKS |
#define PLU_CLOCKS |
#define CLK_GATE_DEFINE | ( | reg, | |
bit | |||
) | ((((reg)&0xFFU) << 8U) | ((bit)&0xFFU)) |
enum clock_ip_name_t |
enum clock_name_t |
enum clock_select_t |
enum clock_divider_t |
enum clock_fro_osc_freq_t |
enum clock_main_clk_src_t |
void CLOCK_SetMainClkSrc | ( | clock_main_clk_src_t | src | ) |
src | Reference clock_main_clk_src_t to set the main clock source. |
uint32_t CLOCK_GetFRG0ClkFreq | ( | void | ) |
uint32_t CLOCK_GetMainClkFreq | ( | void | ) |
uint32_t CLOCK_GetFroFreq | ( | void | ) |
|
inlinestatic |
uint32_t CLOCK_GetClockOutClkFreq | ( | void | ) |
uint32_t CLOCK_GetUart0ClkFreq | ( | void | ) |
UART0 | frequency value. |
uint32_t CLOCK_GetUart1ClkFreq | ( | void | ) |
UART1 | frequency value. |
uint32_t CLOCK_GetFreq | ( | clock_name_t | clockName | ) |
|
inlinestatic |
watch | dog OSC frequency value. |
|
inlinestatic |
external | clock frequency value. |
bool CLOCK_SetFRG0ClkFreq | ( | uint32_t | freq | ) |
freq | target output frequency,freq < input and (input / freq) < 2 should be satisfy. |
true | - successfully, false - input argument is invalid. |
void CLOCK_InitExtClkin | ( | uint32_t | clkInFreq | ) |
clkInFreq | external clock in frequency. |
void CLOCK_SetFroOscFreq | ( | clock_fro_osc_freq_t | freq | ) |
Initialize the FRO clock to given frequency (18, 24 or 30 MHz).
freq | Please refer to definition of clock_fro_osc_freq_t, frequency must be one of 18000, 24000 or 30000 KHz. |
volatile uint32_t g_LP_Osc_Freq |
This variable is used to store the lower power oscillator frequency which is set by CLOCK_InitLPOsc, and it is returned by CLOCK_GetLPOscFreq.
volatile uint32_t g_Ext_Clk_Freq |
This variable is used to store the external clock frequency which is include external oscillator clock and external clk in clock frequency value, it is set by CLOCK_InitExtClkin when CLK IN is used as external clock or by CLOCK_InitSysOsc when external oscillator is used as external clock ,and it is returned by CLOCK_GetExtClkFreq.
volatile uint32_t g_Fro_Osc_Freq |
This variable is used to store the FRO osc clock frequency.