MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Clock Driver

Overview

The MCUXpresso SDK provides APIs for MCUXpresso SDK devices' clock operation.

Files

file  fsl_clock.h
 

Data Structures

struct  clock_usb_pll_config_t
 PLL configuration for USB. More...
 
struct  clock_sys_pll_config_t
 PLL configuration for System. More...
 
struct  clock_audio_pll_config_t
 PLL configuration for AUDIO and VIDEO. More...
 
struct  clock_enet_pll_config_t
 PLL configuration for ENET. More...
 

Macros

#define FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL   0
 Configure whether driver controls clock. More...
 
#define CCSR_OFFSET   0x0C
 CCM registers offset.
 
#define PLL_SYS_OFFSET   0x30
 CCM Analog registers offset.
 
#define CCM_ANALOG_TUPLE(reg, shift)   (((reg & 0xFFFU) << 16U) | (shift))
 CCM ANALOG tuple macros to map corresponding registers and bit fields.
 
#define CLKPN_FREQ   0U
 clock1PN frequency.
 
#define ADC_CLOCKS
 Clock ip name array for ADC. More...
 
#define AOI_CLOCKS
 Clock ip name array for AOI. More...
 
#define DCDC_CLOCKS
 Clock ip name array for DCDC. More...
 
#define DCP_CLOCKS
 Clock ip name array for DCP. More...
 
#define DMAMUX_CLOCKS
 Clock ip name array for DMAMUX_CLOCKS. More...
 
#define EDMA_CLOCKS
 Clock ip name array for DMA. More...
 
#define EWM_CLOCKS
 Clock ip name array for EWM. More...
 
#define FLEXIO_CLOCKS
 Clock ip name array for FLEXIO. More...
 
#define FLEXRAM_CLOCKS
 Clock ip name array for FLEXRAM. More...
 
#define FLEXSPI_CLOCKS
 Clock ip name array for FLEXSPI. More...
 
#define GPIO_CLOCKS
 Clock ip name array for GPIO. More...
 
#define GPT_CLOCKS
 Clock ip name array for GPT. More...
 
#define KPP_CLOCKS
 Clock ip name array for KPP. More...
 
#define LPI2C_CLOCKS
 Clock ip name array for LPI2C. More...
 
#define LPSPI_CLOCKS
 Clock ip name array for LPSPI. More...
 
#define LPUART_CLOCKS
 Clock ip name array for LPUART. More...
 
#define OCRAM_EXSC_CLOCKS
 Clock ip name array for OCRAM EXSC. More...
 
#define PIT_CLOCKS
 Clock ip name array for PIT. More...
 
#define PWM_CLOCKS
 Clock ip name array for PWM. More...
 
#define RTWDOG_CLOCKS
 Clock ip name array for RTWDOG. More...
 
#define SAI_CLOCKS
 Clock ip name array for SAI. More...
 
#define TRNG_CLOCKS
 Clock ip name array for TRNG. More...
 
#define WDOG_CLOCKS
 Clock ip name array for WDOG. More...
 
#define SPDIF_CLOCKS
 Clock ip name array for SPDIF. More...
 
#define XBARA_CLOCKS
 Clock ip name array for XBARA. More...
 
#define kCLOCK_CoreSysClk   kCLOCK_CpuClk
 For compatible with other platforms without CCM. More...
 
#define CLOCK_GetCoreSysClkFreq   CLOCK_GetCpuClkFreq
 For compatible with other platforms without CCM. More...
 

Enumerations

enum  clock_name_t {
  kCLOCK_CpuClk = 0x0U,
  kCLOCK_CoreClk = 0x1U,
  kCLOCK_IpgClk = 0x2U,
  kCLOCK_PerClk = 0x3U,
  kCLOCK_OscClk = 0x4U,
  kCLOCK_RtcClk = 0x5U,
  kCLOCK_Usb1PllClk = 0x6U,
  kCLOCK_Usb1PllPfd0Clk = 0x7U,
  kCLOCK_Usb1PllPfd1Clk = 0x8U,
  kCLOCK_Usb1PllPfd2Clk = 0x9U,
  kCLOCK_Usb1PllPfd3Clk = 0xAU,
  kCLOCK_SysPllClk = 0xBU,
  kCLOCK_SysPllPfd0Clk = 0xCU,
  kCLOCK_SysPllPfd1Clk = 0xDU,
  kCLOCK_SysPllPfd2Clk = 0xEU,
  kCLOCK_SysPllPfd3Clk = 0xFU,
  kCLOCK_EnetPll500MClk = 0x10U,
  kCLOCK_AudioPllClk = 0x11U
}
 Clock name used to get clock frequency. More...
 
enum  clock_ip_name_t { ,
  kCLOCK_Aips_tz1 = (0U << 8U) | CCM_CCGR0_CG0_SHIFT,
  kCLOCK_Aips_tz2 = (0U << 8U) | CCM_CCGR0_CG1_SHIFT,
  kCLOCK_Mqs = (0U << 8U) | CCM_CCGR0_CG2_SHIFT,
  kCLOCK_FlexSpiExsc = (0U << 8U) | CCM_CCGR0_CG3_SHIFT,
  kCLOCK_Sim_m_clk_r = (0U << 8U) | CCM_CCGR0_CG4_SHIFT,
  kCLOCK_Dcp = (0U << 8U) | CCM_CCGR0_CG5_SHIFT,
  kCLOCK_Lpuart3 = (0U << 8U) | CCM_CCGR0_CG6_SHIFT,
  kCLOCK_Trace = (0U << 8U) | CCM_CCGR0_CG11_SHIFT,
  kCLOCK_Gpt2 = (0U << 8U) | CCM_CCGR0_CG12_SHIFT,
  kCLOCK_Gpt2S = (0U << 8U) | CCM_CCGR0_CG13_SHIFT,
  kCLOCK_Lpuart2 = (0U << 8U) | CCM_CCGR0_CG14_SHIFT,
  kCLOCK_Gpio2 = (0U << 8U) | CCM_CCGR0_CG15_SHIFT,
  kCLOCK_Lpspi1 = (1U << 8U) | CCM_CCGR1_CG0_SHIFT,
  kCLOCK_Lpspi2 = (1U << 8U) | CCM_CCGR1_CG1_SHIFT,
  kCLOCK_Pit = (1U << 8U) | CCM_CCGR1_CG6_SHIFT,
  kCLOCK_Adc1 = (1U << 8U) | CCM_CCGR1_CG8_SHIFT,
  kCLOCK_Gpt1 = (1U << 8U) | CCM_CCGR1_CG10_SHIFT,
  kCLOCK_Gpt1S = (1U << 8U) | CCM_CCGR1_CG11_SHIFT,
  kCLOCK_Lpuart4 = (1U << 8U) | CCM_CCGR1_CG12_SHIFT,
  kCLOCK_Gpio1 = (1U << 8U) | CCM_CCGR1_CG13_SHIFT,
  kCLOCK_Csu = (1U << 8U) | CCM_CCGR1_CG14_SHIFT,
  kCLOCK_Gpio5 = (1U << 8U) | CCM_CCGR1_CG15_SHIFT,
  kCLOCK_OcramExsc = (2U << 8U) | CCM_CCGR2_CG0_SHIFT,
  kCLOCK_IomuxcSnvs = (2U << 8U) | CCM_CCGR2_CG2_SHIFT,
  kCLOCK_Lpi2c1 = (2U << 8U) | CCM_CCGR2_CG3_SHIFT,
  kCLOCK_Lpi2c2 = (2U << 8U) | CCM_CCGR2_CG4_SHIFT,
  kCLOCK_Ocotp = (2U << 8U) | CCM_CCGR2_CG6_SHIFT,
  kCLOCK_Xbar1 = (2U << 8U) | CCM_CCGR2_CG11_SHIFT,
  kCLOCK_Aoi = (3U << 8U) | CCM_CCGR3_CG4_SHIFT,
  kCLOCK_Ewm0 = (3U << 8U) | CCM_CCGR3_CG7_SHIFT,
  kCLOCK_Wdog1 = (3U << 8U) | CCM_CCGR3_CG8_SHIFT,
  kCLOCK_FlexRam = (3U << 8U) | CCM_CCGR3_CG9_SHIFT,
  kCLOCK_IomuxcSnvsGpr = (3U << 8U) | CCM_CCGR3_CG15_SHIFT,
  kCLOCK_Sim_m7_clk_r = (4U << 8U) | CCM_CCGR4_CG0_SHIFT,
  kCLOCK_Iomuxc = (4U << 8U) | CCM_CCGR4_CG1_SHIFT,
  kCLOCK_IomuxcGpr = (4U << 8U) | CCM_CCGR4_CG2_SHIFT,
  kCLOCK_SimM7 = (4U << 8U) | CCM_CCGR4_CG4_SHIFT,
  kCLOCK_SimM = (4U << 8U) | CCM_CCGR4_CG6_SHIFT,
  kCLOCK_SimEms = (4U << 8U) | CCM_CCGR4_CG7_SHIFT,
  kCLOCK_Pwm1 = (4U << 8U) | CCM_CCGR4_CG8_SHIFT,
  kCLOCK_Dma_ps = (4U << 8U) | CCM_CCGR4_CG15_SHIFT,
  kCLOCK_Rom = (5U << 8U) | CCM_CCGR5_CG0_SHIFT,
  kCLOCK_Flexio1 = (5U << 8U) | CCM_CCGR5_CG1_SHIFT,
  kCLOCK_Wdog3 = (5U << 8U) | CCM_CCGR5_CG2_SHIFT,
  kCLOCK_Dma = (5U << 8U) | CCM_CCGR5_CG3_SHIFT,
  kCLOCK_Kpp = (5U << 8U) | CCM_CCGR5_CG4_SHIFT,
  kCLOCK_Wdog2 = (5U << 8U) | CCM_CCGR5_CG5_SHIFT,
  kCLOCK_Spdif = (5U << 8U) | CCM_CCGR5_CG7_SHIFT,
  kCLOCK_Sai1 = (5U << 8U) | CCM_CCGR5_CG9_SHIFT,
  kCLOCK_Sai3 = (5U << 8U) | CCM_CCGR5_CG11_SHIFT,
  kCLOCK_Lpuart1 = (5U << 8U) | CCM_CCGR5_CG12_SHIFT,
  kCLOCK_SnvsHp = (5U << 8U) | CCM_CCGR5_CG14_SHIFT,
  kCLOCK_SnvsLp = (5U << 8U) | CCM_CCGR5_CG15_SHIFT,
  kCLOCK_UsbOh3 = (6U << 8U) | CCM_CCGR6_CG0_SHIFT,
  kCLOCK_Dcdc = (6U << 8U) | CCM_CCGR6_CG3_SHIFT,
  kCLOCK_FlexSpi = (6U << 8U) | CCM_CCGR6_CG5_SHIFT,
  kCLOCK_Trng = (6U << 8U) | CCM_CCGR6_CG6_SHIFT,
  kCLOCK_SimPer = (6U << 8U) | CCM_CCGR6_CG10_SHIFT,
  kCLOCK_Anadig = (6U << 8U) | CCM_CCGR6_CG11_SHIFT
}
 CCM CCGR gate control for each module independently. More...
 
enum  clock_osc_t {
  kCLOCK_RcOsc = 0U,
  kCLOCK_XtalOsc = 1U
}
 OSC 24M sorce select. More...
 
enum  clock_gate_value_t {
  kCLOCK_ClockNotNeeded = 0U,
  kCLOCK_ClockNeededRun = 1U,
  kCLOCK_ClockNeededRunWait = 3U
}
 Clock gate value. More...
 
enum  clock_mode_t {
  kCLOCK_ModeRun = 0U,
  kCLOCK_ModeWait = 1U,
  kCLOCK_ModeStop = 2U
}
 System clock mode. More...
 
enum  clock_mux_t {
  kCLOCK_Pll3SwMux,
  kCLOCK_PeriphMux,
  kCLOCK_PrePeriphMux,
  kCLOCK_TraceMux,
  kCLOCK_PeriphClk2Mux,
  kCLOCK_LpspiMux,
  kCLOCK_FlexspiMux,
  kCLOCK_FlexspiSrcMux,
  kCLOCK_Sai3Mux,
  kCLOCK_Sai1Mux,
  kCLOCK_PerclkMux,
  kCLOCK_Flexio1Mux,
  kCLOCK_UartMux,
  kCLOCK_SpdifMux,
  kCLOCK_Lpi2cMux
}
 MUX control names for clock mux setting. More...
 
enum  clock_div_t {
  kCLOCK_AhbDiv,
  kCLOCK_IpgDiv,
  kCLOCK_LpspiDiv,
  kCLOCK_FlexspiDiv,
  kCLOCK_PerclkDiv,
  kCLOCK_AdcDiv,
  kCLOCK_TraceDiv,
  kCLOCK_UartDiv,
  kCLOCK_Flexio1Div,
  kCLOCK_Sai3PreDiv,
  kCLOCK_Sai3Div,
  kCLOCK_Flexio1PreDiv,
  kCLOCK_Sai1PreDiv,
  kCLOCK_Sai1Div,
  kCLOCK_Spdif0PreDiv,
  kCLOCK_Spdif0Div,
  kCLOCK_Lpi2cDiv
}
 DIV control names for clock div setting. More...
 
enum  clock_usb_src_t {
  kCLOCK_Usb480M = 0,
  kCLOCK_UsbSrcUnused = (int)0xFFFFFFFFU
}
 USB clock source definition. More...
 
enum  clock_usb_phy_src_t { kCLOCK_Usbphy480M = 0 }
 Source of the USB HS PHY. More...
 
enum  _clock_pll_clk_src {
  kCLOCK_PllClkSrc24M = 0U,
  kCLOCK_PllSrcClkPN = 1U
}
 PLL clock source, bypass cloco source also. More...
 
enum  clock_pll_t {
  kCLOCK_PllSys = CCM_ANALOG_TUPLE(PLL_SYS_OFFSET, CCM_ANALOG_PLL_SYS_ENABLE_SHIFT),
  kCLOCK_PllUsb1 = CCM_ANALOG_TUPLE(PLL_USB1_OFFSET, CCM_ANALOG_PLL_USB1_ENABLE_SHIFT),
  kCLOCK_PllAudio = CCM_ANALOG_TUPLE(PLL_AUDIO_OFFSET, CCM_ANALOG_PLL_AUDIO_ENABLE_SHIFT),
  kCLOCK_PllEnet500M = CCM_ANALOG_TUPLE(PLL_ENET_OFFSET, CCM_ANALOG_PLL_ENET_ENET_500M_REF_EN_SHIFT)
}
 PLL name. More...
 
enum  clock_pfd_t {
  kCLOCK_Pfd0 = 0U,
  kCLOCK_Pfd1 = 1U,
  kCLOCK_Pfd2 = 2U,
  kCLOCK_Pfd3 = 3U
}
 PLL PFD name. More...
 

Functions

static void CLOCK_SetMux (clock_mux_t mux, uint32_t value)
 Set CCM MUX node to certain value. More...
 
static uint32_t CLOCK_GetMux (clock_mux_t mux)
 Get CCM MUX value. More...
 
static void CLOCK_SetDiv (clock_div_t divider, uint32_t value)
 Set CCM DIV node to certain value. More...
 
static uint32_t CLOCK_GetDiv (clock_div_t divider)
 Get CCM DIV node value. More...
 
static void CLOCK_ControlGate (clock_ip_name_t name, clock_gate_value_t value)
 Control the clock gate for specific IP. More...
 
static void CLOCK_EnableClock (clock_ip_name_t name)
 Enable the clock for specific IP. More...
 
static void CLOCK_DisableClock (clock_ip_name_t name)
 Disable the clock for specific IP. More...
 
static void CLOCK_SetMode (clock_mode_t mode)
 Setting the low power mode that system will enter on next assertion of dsm_request signal. More...
 
static uint32_t CLOCK_GetOscFreq (void)
 Gets the OSC clock frequency. More...
 
uint32_t CLOCK_GetCoreFreq (void)
 Gets the CORE clock frequency. More...
 
uint32_t CLOCK_GetIpgFreq (void)
 Gets the IPG clock frequency. More...
 
uint32_t CLOCK_GetPerClkFreq (void)
 Gets the PER clock frequency. More...
 
uint32_t CLOCK_GetFreq (clock_name_t name)
 Gets the clock frequency for a specific clock name. More...
 
static uint32_t CLOCK_GetCpuClkFreq (void)
 Get the CCM CPU/core/system frequency. More...
 
bool CLOCK_EnableUsbhs0Clock (clock_usb_src_t src, uint32_t freq)
 Enable USB HS clock. More...
 

Variables

volatile uint32_t g_xtalFreq
 External XTAL (24M OSC/SYSOSC) clock frequency. More...
 
volatile uint32_t g_rtcXtalFreq
 External RTC XTAL (32K OSC) clock frequency. More...
 

Driver version

#define FSL_CLOCK_DRIVER_VERSION   (MAKE_VERSION(2, 3, 0))
 CLOCK driver version 2.3.0. More...
 
#define CCM_ANALOG_PLL_BYPASS_SHIFT   (16U)
 
#define CCM_ANALOG_PLL_BYPASS_SHIFT   (16U)
 
#define CCM_ANALOG_PLL_BYPASS_CLK_SRC_MASK   (0xC000U)
 
#define CCM_ANALOG_PLL_BYPASS_CLK_SRC_MASK   (0xC000U)
 
#define CCM_ANALOG_PLL_BYPASS_CLK_SRC_SHIFT   (14U)
 
#define CCM_ANALOG_PLL_BYPASS_CLK_SRC_SHIFT   (14U)
 
#define SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY   (500000000UL)
 

OSC operations

void CLOCK_InitExternalClk (bool bypassXtalOsc)
 Initialize the external 24MHz clock. More...
 
void CLOCK_DeinitExternalClk (void)
 Deinitialize the external 24MHz clock. More...
 
void CLOCK_SwitchOsc (clock_osc_t osc)
 Switch the OSC. More...
 
static uint32_t CLOCK_GetRtcFreq (void)
 Gets the RTC clock frequency. More...
 
static void CLOCK_SetXtalFreq (uint32_t freq)
 Set the XTAL (24M OSC) frequency based on board setting. More...
 
static void CLOCK_SetRtcXtalFreq (uint32_t freq)
 Set the RTC XTAL (32K OSC) frequency based on board setting. More...
 
void CLOCK_InitRcOsc24M (void)
 Initialize the RC oscillator 24MHz clock.
 
void CLOCK_DeinitRcOsc24M (void)
 Power down the RCOSC 24M clock.
 

Data Structure Documentation

struct clock_usb_pll_config_t

Data Fields

uint8_t loopDivider
 PLL loop divider. More...
 
uint8_t src
 Pll clock source, reference _clock_pll_clk_src.
 

Field Documentation

uint8_t clock_usb_pll_config_t::loopDivider

0 - Fout=Fref*20; 1 - Fout=Fref*22

struct clock_sys_pll_config_t

Data Fields

uint8_t loopDivider
 PLL loop divider. More...
 
uint32_t numerator
 30 bit numerator of fractional loop divider. More...
 
uint32_t denominator
 30 bit denominator of fractional loop divider
 
uint8_t src
 Pll clock source, reference _clock_pll_clk_src.
 
uint16_t ss_stop
 Stop value to get frequency change. More...
 
uint8_t ss_enable
 Enable spread spectrum modulation.
 
uint16_t ss_step
 Step value to get frequency change step. More...
 

Field Documentation

uint8_t clock_sys_pll_config_t::loopDivider

Intended to be 1 (528M). 0 - Fout=Fref*20; 1 - Fout=Fref*22

uint32_t clock_sys_pll_config_t::numerator
uint16_t clock_sys_pll_config_t::ss_stop
uint16_t clock_sys_pll_config_t::ss_step
struct clock_audio_pll_config_t

Data Fields

uint8_t loopDivider
 PLL loop divider. More...
 
uint8_t postDivider
 Divider after the PLL, should only be 1, 2, 4, 8, 16. More...
 
uint32_t numerator
 30 bit numerator of fractional loop divider. More...
 
uint32_t denominator
 30 bit denominator of fractional loop divider
 
uint8_t src
 Pll clock source, reference _clock_pll_clk_src.
 

Field Documentation

uint8_t clock_audio_pll_config_t::loopDivider

Valid range for DIV_SELECT divider value: 27~54.

uint8_t clock_audio_pll_config_t::postDivider
uint32_t clock_audio_pll_config_t::numerator
struct clock_enet_pll_config_t

Data Fields

bool enableClkOutput
 Power on and enable PLL clock output for ENET0 (ref_enetpll0). More...
 
bool enableClkOutput500M
 Power on and enable PLL clock output for ENET (ref_enetpll500M). More...
 
bool enableClkOutput25M
 Power on and enable PLL clock output for ENET1 (ref_enetpll1). More...
 
uint8_t loopDivider
 Controls the frequency of the ENET0 reference clock. More...
 
uint8_t src
 Pll clock source, reference _clock_pll_clk_src.
 

Field Documentation

bool clock_enet_pll_config_t::enableClkOutput
bool clock_enet_pll_config_t::enableClkOutput500M
bool clock_enet_pll_config_t::enableClkOutput25M
uint8_t clock_enet_pll_config_t::loopDivider

b00 25MHz b01 50MHz b10 100MHz (not 50% duty cycle) b11 125MHz

Macro Definition Documentation

#define FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL   0

When set to 0, peripheral drivers will enable clock in initialize function and disable clock in de-initialize function. When set to 1, peripheral driver will not control the clock, application could control the clock out of the driver.

Note
All drivers share this feature switcher. If it is set to 1, application should handle clock enable and disable for all drivers.
#define FSL_CLOCK_DRIVER_VERSION   (MAKE_VERSION(2, 3, 0))
#define ADC_CLOCKS
Value:
{ \
kCLOCK_IpInvalid, kCLOCK_Adc1 \
}
CCGR1, CG8.
Definition: fsl_clock.h:338
#define AOI_CLOCKS
Value:
{ \
}
CCGR3, CG0, Reserved.
Definition: fsl_clock.h:365
#define DCDC_CLOCKS
Value:
{ \
}
CCGR6, CG3.
Definition: fsl_clock.h:408
#define DCP_CLOCKS
Value:
{ \
}
CCGR0, CG5.
Definition: fsl_clock.h:325
#define DMAMUX_CLOCKS
Value:
{ \
}
CCGR5, CG3.
Definition: fsl_clock.h:393
#define EDMA_CLOCKS
Value:
{ \
}
CCGR5, CG3.
Definition: fsl_clock.h:393
#define EWM_CLOCKS
Value:
{ \
}
CCGR3, CG7.
Definition: fsl_clock.h:368
#define FLEXIO_CLOCKS
Value:
{ \
kCLOCK_IpInvalid, kCLOCK_Flexio1 \
}
CCGR5, CG1.
Definition: fsl_clock.h:391
#define FLEXRAM_CLOCKS
Value:
{ \
}
CCGR3, CG9.
Definition: fsl_clock.h:370
#define FLEXSPI_CLOCKS
Value:
{ \
}
CCGR6, CG5.
Definition: fsl_clock.h:409
#define GPIO_CLOCKS
Value:
{ \
kCLOCK_IpInvalid, kCLOCK_Gpio1, kCLOCK_Gpio2, kCLOCK_IpInvalid, kCLOCK_IpInvalid, kCLOCK_Gpio5 \
}
CCGR0, CG15.
Definition: fsl_clock.h:331
CCGR1, CG15.
Definition: fsl_clock.h:344
CCGR1, CG13.
Definition: fsl_clock.h:342
#define GPT_CLOCKS
Value:
{ \
kCLOCK_IpInvalid, kCLOCK_Gpt1, kCLOCK_Gpt2 \
}
CCGR0, CG12.
Definition: fsl_clock.h:328
CCGR1, CG10.
Definition: fsl_clock.h:339
#define KPP_CLOCKS
Value:
{ \
}
CCGR5, CG4.
Definition: fsl_clock.h:394
#define LPI2C_CLOCKS
Value:
{ \
kCLOCK_IpInvalid, kCLOCK_Lpi2c1, kCLOCK_Lpi2c2 \
}
CCGR2, CG3.
Definition: fsl_clock.h:350
CCGR2, CG4.
Definition: fsl_clock.h:351
#define LPSPI_CLOCKS
Value:
{ \
kCLOCK_IpInvalid, kCLOCK_Lpspi1, kCLOCK_Lpspi2 \
}
CCGR1, CG0.
Definition: fsl_clock.h:334
CCGR1, CG1.
Definition: fsl_clock.h:335
#define LPUART_CLOCKS
Value:
{ \
}
CCGR5, CG12.
Definition: fsl_clock.h:402
CCGR0, CG14.
Definition: fsl_clock.h:330
CCGR0, CG6.
Definition: fsl_clock.h:326
CCGR1, CG12.
Definition: fsl_clock.h:341
#define OCRAM_EXSC_CLOCKS
Value:
{ \
}
CCGR2, CG0.
Definition: fsl_clock.h:347
#define PIT_CLOCKS
Value:
{ \
}
CCGR1, CG6.
Definition: fsl_clock.h:336
#define PWM_CLOCKS
Value:
{ \
{kCLOCK_IpInvalid, kCLOCK_IpInvalid, kCLOCK_IpInvalid, kCLOCK_IpInvalid}, \
{ \
} \
}
CCGR4, CG8.
Definition: fsl_clock.h:382
#define RTWDOG_CLOCKS
Value:
{ \
}
CCGR5, CG2.
Definition: fsl_clock.h:392
#define SAI_CLOCKS
Value:
{ \
kCLOCK_IpInvalid, kCLOCK_Sai1, kCLOCK_IpInvalid, kCLOCK_Sai3 \
}
CCGR5, CG9.
Definition: fsl_clock.h:399
CCGR5, CG11.
Definition: fsl_clock.h:401
#define TRNG_CLOCKS
Value:
{ \
}
CCGR6, CG6.
Definition: fsl_clock.h:410
#define WDOG_CLOCKS
Value:
{ \
kCLOCK_IpInvalid, kCLOCK_Wdog1, kCLOCK_Wdog2 \
}
CCGR3, CG8.
Definition: fsl_clock.h:369
CCGR5, CG5.
Definition: fsl_clock.h:395
#define SPDIF_CLOCKS
Value:
{ \
}
CCGR5, CG7.
Definition: fsl_clock.h:397
#define XBARA_CLOCKS
Value:
{ \
}
CCGR2, CG11.
Definition: fsl_clock.h:357
#define kCLOCK_CoreSysClk   kCLOCK_CpuClk
#define CLOCK_GetCoreSysClkFreq   CLOCK_GetCpuClkFreq

Enumeration Type Documentation

Enumerator
kCLOCK_CpuClk 

CPU clock.

kCLOCK_CoreClk 

CORE clock.

kCLOCK_IpgClk 

IPG clock.

kCLOCK_PerClk 

PER clock.

kCLOCK_OscClk 

OSC clock selected by PMU_LOWPWR_CTRL[OSC_SEL].

kCLOCK_RtcClk 

RTC clock.

(RTCCLK)

kCLOCK_Usb1PllClk 

USB1PLLCLK.

kCLOCK_Usb1PllPfd0Clk 

USB1PLLPDF0CLK.

kCLOCK_Usb1PllPfd1Clk 

USB1PLLPFD1CLK.

kCLOCK_Usb1PllPfd2Clk 

USB1PLLPFD2CLK.

kCLOCK_Usb1PllPfd3Clk 

USB1PLLPFD3CLK.

kCLOCK_SysPllClk 

SYSPLLCLK.

kCLOCK_SysPllPfd0Clk 

SYSPLLPDF0CLK.

kCLOCK_SysPllPfd1Clk 

SYSPLLPFD1CLK.

kCLOCK_SysPllPfd2Clk 

SYSPLLPFD2CLK.

kCLOCK_SysPllPfd3Clk 

SYSPLLPFD3CLK.

kCLOCK_EnetPll500MClk 

Enet PLLCLK ref_enetpll500M.

kCLOCK_AudioPllClk 

Audio PLLCLK.

Enumerator
kCLOCK_Aips_tz1 

CCGR0, CG0.

kCLOCK_Aips_tz2 

CCGR0, CG1.

kCLOCK_Mqs 

CCGR0, CG2.

kCLOCK_FlexSpiExsc 

CCGR0, CG3.

kCLOCK_Sim_m_clk_r 

CCGR0, CG4.

kCLOCK_Dcp 

CCGR0, CG5.

kCLOCK_Lpuart3 

CCGR0, CG6.

kCLOCK_Trace 

CCGR0, CG11.

kCLOCK_Gpt2 

CCGR0, CG12.

kCLOCK_Gpt2S 

CCGR0, CG13.

kCLOCK_Lpuart2 

CCGR0, CG14.

kCLOCK_Gpio2 

CCGR0, CG15.

kCLOCK_Lpspi1 

CCGR1, CG0.

kCLOCK_Lpspi2 

CCGR1, CG1.

kCLOCK_Pit 

CCGR1, CG6.

CCGR1, CG7, Reserved

kCLOCK_Adc1 

CCGR1, CG8.

kCLOCK_Gpt1 

CCGR1, CG10.

kCLOCK_Gpt1S 

CCGR1, CG11.

kCLOCK_Lpuart4 

CCGR1, CG12.

kCLOCK_Gpio1 

CCGR1, CG13.

kCLOCK_Csu 

CCGR1, CG14.

kCLOCK_Gpio5 

CCGR1, CG15.

kCLOCK_OcramExsc 

CCGR2, CG0.

CCGR2, CG1, Reserved

kCLOCK_IomuxcSnvs 

CCGR2, CG2.

kCLOCK_Lpi2c1 

CCGR2, CG3.

kCLOCK_Lpi2c2 

CCGR2, CG4.

kCLOCK_Ocotp 

CCGR2, CG6.

CCGR2, CG7, Reserved CCGR2, CG8, Reserved CCGR2, CG9, Reserved CCGR2, CG10, Reserved

kCLOCK_Xbar1 

CCGR2, CG11.

CCGR2, CG12, Reserved CCGR2, CG13, Reserved CCGR2, CG14, Reserved CCGR2, CG15, Reserved

kCLOCK_Aoi 

CCGR3, CG0, Reserved.

CCGR3, CG4 CCGR3, CG5, Reserved CCGR3, CG6, Reserved

kCLOCK_Ewm0 

CCGR3, CG7.

kCLOCK_Wdog1 

CCGR3, CG8.

kCLOCK_FlexRam 

CCGR3, CG9.

CCGR3, CG14, Reserved

kCLOCK_IomuxcSnvsGpr 

CCGR3, CG15.

kCLOCK_Sim_m7_clk_r 

CCGR4, CG0.

kCLOCK_Iomuxc 

CCGR4, CG1.

kCLOCK_IomuxcGpr 

CCGR4, CG2.

CCGR4, CG3, Reserved

kCLOCK_SimM7 

CCGR4, CG4.

kCLOCK_SimM 

CCGR4, CG6.

kCLOCK_SimEms 

CCGR4, CG7.

kCLOCK_Pwm1 

CCGR4, CG8.

CCGR4, CG10, Reserved CCGR4, CG11, Reserved CCGR4, CG12, Reserved CCGR4, CG14, Reserved

kCLOCK_Dma_ps 

CCGR4, CG15,.

kCLOCK_Rom 

CCGR5, CG0.

kCLOCK_Flexio1 

CCGR5, CG1.

kCLOCK_Wdog3 

CCGR5, CG2.

kCLOCK_Dma 

CCGR5, CG3.

kCLOCK_Kpp 

CCGR5, CG4.

kCLOCK_Wdog2 

CCGR5, CG5.

CCGR5, CG6, Reserved

kCLOCK_Spdif 

CCGR5, CG7.

CCGR5, CG8, Reserved

kCLOCK_Sai1 

CCGR5, CG9.

CCGR5, CG10, Reserved

kCLOCK_Sai3 

CCGR5, CG11.

kCLOCK_Lpuart1 

CCGR5, CG12.

kCLOCK_SnvsHp 

CCGR5, CG14.

kCLOCK_SnvsLp 

CCGR5, CG15.

kCLOCK_UsbOh3 

CCGR6, CG0.

kCLOCK_Dcdc 

CCGR6, CG3.

kCLOCK_FlexSpi 

CCGR6, CG5.

kCLOCK_Trng 

CCGR6, CG6.

CCGR6, CG9, Reserved

kCLOCK_SimPer 

CCGR6, CG10.

kCLOCK_Anadig 

CCGR6, CG11.

CCGR6, CG13, Reserved CCGR6, CG15, Reserved

Enumerator
kCLOCK_RcOsc 

On chip OSC.

kCLOCK_XtalOsc 

24M Xtal OSC

Enumerator
kCLOCK_ClockNotNeeded 

Clock is off during all modes.

kCLOCK_ClockNeededRun 

Clock is on in run mode, but off in WAIT and STOP modes.

kCLOCK_ClockNeededRunWait 

Clock is on during all modes, except STOP mode.

Enumerator
kCLOCK_ModeRun 

Remain in run mode.

kCLOCK_ModeWait 

Transfer to wait mode.

kCLOCK_ModeStop 

Transfer to stop mode.

These constants define the mux control names for clock mux setting.

  • 0:7: REG offset to CCM_BASE in bytes.
  • 8:15: Root clock setting bit field shift.
  • 16:31: Root clock setting bit field width.
Enumerator
kCLOCK_Pll3SwMux 

pll3_sw_clk mux name

kCLOCK_PeriphMux 

periph mux name

kCLOCK_PrePeriphMux 

pre-periph mux name

kCLOCK_TraceMux 

trace mux name

kCLOCK_PeriphClk2Mux 

periph clock2 mux name

kCLOCK_LpspiMux 

lpspi mux name

kCLOCK_FlexspiMux 

flexspi mux name

kCLOCK_FlexspiSrcMux 

flexspi SRC mux name

kCLOCK_Sai3Mux 

sai3 mux name

kCLOCK_Sai1Mux 

sai1 mux name

kCLOCK_PerclkMux 

perclk mux name

kCLOCK_Flexio1Mux 

flexio1 mux name

kCLOCK_UartMux 

uart mux name

kCLOCK_SpdifMux 

spdif mux name

kCLOCK_Lpi2cMux 

lpi2c mux name

These constants define div control names for clock div setting.

  • 0:7: REG offset to CCM_BASE in bytes.
  • 8:15: Root clock setting bit field shift.
  • 16:31: Root clock setting bit field width.
Enumerator
kCLOCK_AhbDiv 

ahb div name

kCLOCK_IpgDiv 

ipg div name

kCLOCK_LpspiDiv 

lpspi div name

kCLOCK_FlexspiDiv 

flexspi div name

kCLOCK_PerclkDiv 

perclk div name

kCLOCK_AdcDiv 

perclk div name

kCLOCK_TraceDiv 

trace div name

kCLOCK_UartDiv 

uart div name

kCLOCK_Flexio1Div 

flexio1 pre div name

kCLOCK_Sai3PreDiv 

sai3 pre div name

kCLOCK_Sai3Div 

sai3 div name

kCLOCK_Flexio1PreDiv 

flexio1 pre div name

kCLOCK_Sai1PreDiv 

sai1 pre div name

kCLOCK_Sai1Div 

sai1 div name

kCLOCK_Spdif0PreDiv 

spdif pre div name

kCLOCK_Spdif0Div 

spdif div name

kCLOCK_Lpi2cDiv 

lpi2c div name

Enumerator
kCLOCK_Usb480M 

Use 480M.

kCLOCK_UsbSrcUnused 

Used when the function does not care the clock source.

Enumerator
kCLOCK_Usbphy480M 

Use 480M.

Enumerator
kCLOCK_PllClkSrc24M 

Pll clock source 24M.

kCLOCK_PllSrcClkPN 

Pll clock source CLK1_P and CLK1_N.

Enumerator
kCLOCK_PllSys 

PLL SYS.

kCLOCK_PllUsb1 

PLL USB1.

kCLOCK_PllAudio 

PLL Audio.

kCLOCK_PllEnet500M 

PLL ENET.

Enumerator
kCLOCK_Pfd0 

PLL PFD0.

kCLOCK_Pfd1 

PLL PFD1.

kCLOCK_Pfd2 

PLL PFD2.

kCLOCK_Pfd3 

PLL PFD3.

Function Documentation

static void CLOCK_SetMux ( clock_mux_t  mux,
uint32_t  value 
)
inlinestatic
Parameters
muxWhich mux node to set, see clock_mux_t.
valueClock mux value to set, different mux has different value range.
static uint32_t CLOCK_GetMux ( clock_mux_t  mux)
inlinestatic
Parameters
muxWhich mux node to get, see clock_mux_t.
Returns
Clock mux value.
static void CLOCK_SetDiv ( clock_div_t  divider,
uint32_t  value 
)
inlinestatic
Parameters
dividerWhich div node to set, see clock_div_t.
valueClock div value to set, different divider has different value range.
static uint32_t CLOCK_GetDiv ( clock_div_t  divider)
inlinestatic
Parameters
dividerWhich div node to get, see clock_div_t.
static void CLOCK_ControlGate ( clock_ip_name_t  name,
clock_gate_value_t  value 
)
inlinestatic
Parameters
nameWhich clock to enable, see clock_ip_name_t.
valueClock gate value to set, see clock_gate_value_t.
static void CLOCK_EnableClock ( clock_ip_name_t  name)
inlinestatic
Parameters
nameWhich clock to enable, see clock_ip_name_t.
static void CLOCK_DisableClock ( clock_ip_name_t  name)
inlinestatic
Parameters
nameWhich clock to disable, see clock_ip_name_t.
static void CLOCK_SetMode ( clock_mode_t  mode)
inlinestatic
Parameters
modeWhich mode to enter, see clock_mode_t.
static uint32_t CLOCK_GetOscFreq ( void  )
inlinestatic

This function will return the external XTAL OSC frequency if it is selected as the source of OSC, otherwise internal 24MHz RC OSC frequency will be returned.

Parameters
oscOSC type to get frequency.
Returns
Clock frequency; If the clock is invalid, returns 0.
uint32_t CLOCK_GetCoreFreq ( void  )
Returns
The CORE clock frequency value in hertz.
uint32_t CLOCK_GetIpgFreq ( void  )
Returns
The IPG clock frequency value in hertz.
uint32_t CLOCK_GetPerClkFreq ( void  )
Returns
The PER clock frequency value in hertz.
uint32_t CLOCK_GetFreq ( clock_name_t  name)

This function checks the current clock configurations and then calculates the clock frequency for a specific clock name defined in clock_name_t.

Parameters
clockNameClock names defined in clock_name_t
Returns
Clock frequency value in hertz
static uint32_t CLOCK_GetCpuClkFreq ( void  )
inlinestatic
Returns
Clock frequency; If the clock is invalid, returns 0.
void CLOCK_InitExternalClk ( bool  bypassXtalOsc)

This function supports two modes:

  1. Use external crystal oscillator.
  2. Bypass the external crystal oscillator, using input source clock directly.

After this function, please call CLOCK_SetXtal0Freq to inform clock driver the external clock frequency.

Parameters
bypassXtalOscPass in true to bypass the external crystal oscillator.
Note
This device does not support bypass external crystal oscillator, so the input parameter should always be false.
void CLOCK_DeinitExternalClk ( void  )

This function disables the external 24MHz clock.

After this function, please call CLOCK_SetXtal0Freq to set external clock frequency to 0.

void CLOCK_SwitchOsc ( clock_osc_t  osc)

This function switches the OSC source for SoC.

Parameters
oscOSC source to switch to.
static uint32_t CLOCK_GetRtcFreq ( void  )
inlinestatic
Returns
Clock frequency; If the clock is invalid, returns 0.
static void CLOCK_SetXtalFreq ( uint32_t  freq)
inlinestatic
Parameters
freqThe XTAL input clock frequency in Hz.
static void CLOCK_SetRtcXtalFreq ( uint32_t  freq)
inlinestatic
Parameters
freqThe RTC XTAL input clock frequency in Hz.
bool CLOCK_EnableUsbhs0Clock ( clock_usb_src_t  src,
uint32_t  freq 
)

This function only enables the access to USB HS prepheral, upper layer should first call the CLOCK_EnableUsbhs0PhyPllClock to enable the PHY clock to use USB HS.

Parameters
srcUSB HS does not care about the clock source, here must be kCLOCK_UsbSrcUnused.
freqUSB HS does not care about the clock source, so this parameter is ignored.
Return values
trueThe clock is set successfully.
falseThe clock source is invalid to get proper USB HS clock.

Variable Documentation

volatile uint32_t g_xtalFreq

The XTAL (24M OSC/SYSOSC) clock frequency in Hz, when the clock is setup, use the function CLOCK_SetXtalFreq to set the value in to clock driver. For example, if XTAL is 24MHz,

* CLOCK_InitExternalClk(false); // Setup the 24M OSC/SYSOSC
* CLOCK_SetXtalFreq(240000000); // Set the XTAL value to clock driver.
*
volatile uint32_t g_rtcXtalFreq

The RTC XTAL (32K OSC) clock frequency in Hz, when the clock is setup, use the function CLOCK_SetRtcXtalFreq to set the value in to clock driver.