MCUXpresso SDK API Reference Manual  Rev 2.13.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.

The clock driver supports:

Files

file  fsl_clock.h
 

Data Structures

struct  pll_config_t
 PLL configuration structure. More...
 
struct  pll_setup_t
 PLL0 setup structure This structure can be used to pre-build a PLL setup configuration at run-time and quickly set the PLL to the configuration. More...
 

Macros

#define FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL   0
 Configure whether driver controls clock. More...
 
#define CLOCK_USR_CFG_PLL_CONFIG_CACHE_COUNT   2U
 User-defined the size of cache for CLOCK_PllGetConfig() function. More...
 
#define ROM_CLOCKS
 Clock ip name array for ROM. More...
 
#define SRAM_CLOCKS
 Clock ip name array for SRAM. More...
 
#define FLASH_CLOCKS
 Clock ip name array for FLASH. More...
 
#define FMC_CLOCKS
 Clock ip name array for FMC. More...
 
#define INPUTMUX_CLOCKS
 Clock ip name array for INPUTMUX. More...
 
#define IOCON_CLOCKS
 Clock ip name array for IOCON. More...
 
#define GPIO_CLOCKS
 Clock ip name array for GPIO. More...
 
#define PINT_CLOCKS
 Clock ip name array for PINT. More...
 
#define GINT_CLOCKS
 Clock ip name array for GINT. More...
 
#define DMA_CLOCKS
 Clock ip name array for DMA. More...
 
#define CRC_CLOCKS
 Clock ip name array for CRC. More...
 
#define WWDT_CLOCKS
 Clock ip name array for WWDT. More...
 
#define RTC_CLOCKS
 Clock ip name array for RTC. More...
 
#define MAILBOX_CLOCKS
 Clock ip name array for Mailbox. More...
 
#define LPADC_CLOCKS
 Clock ip name array for LPADC. More...
 
#define MRT_CLOCKS
 Clock ip name array for MRT. More...
 
#define OSTIMER_CLOCKS
 Clock ip name array for OSTIMER. More...
 
#define SCT_CLOCKS
 Clock ip name array for SCT0. More...
 
#define MCAN_CLOCKS
 Clock ip name array for MCAN. More...
 
#define UTICK_CLOCKS
 Clock ip name array for UTICK. More...
 
#define FLEXCOMM_CLOCKS
 Clock ip name array for FLEXCOMM. More...
 
#define LPUART_CLOCKS
 Clock ip name array for LPUART. More...
 
#define BI2C_CLOCKS
 Clock ip name array for BI2C. More...
 
#define LPSPI_CLOCKS
 Clock ip name array for LSPI. More...
 
#define FLEXI2S_CLOCKS
 Clock ip name array for FLEXI2S. More...
 
#define CTIMER_CLOCKS
 Clock ip name array for CTIMER. More...
 
#define EZHA_CLOCKS
 Clock ip name array for EZHA.
 
#define EZHB_CLOCKS
 Clock ip name array for EZHB.
 
#define COMP_CLOCKS
 Clock ip name array for COMP.
 
#define USB1CLK_CLOCKS
 Clock ip name array for USB1CLK. More...
 
#define FREQME_CLOCKS
 Clock ip name array for FREQME. More...
 
#define USBRAM_CLOCKS
 Clock ip name array for USBRAM. More...
 
#define CDOG_CLOCKS
 Clock ip name array for CDOG. More...
 
#define RNG_CLOCKS
 Clock ip name array for RNG. More...
 
#define USBHMR0_CLOCKS
 Clock ip name array for USBHMR0. More...
 
#define USBHSL0_CLOCKS
 Clock ip name array for USBHSL0. More...
 
#define HASHCRYPT_CLOCKS
 Clock ip name array for HashCrypt. More...
 
#define PLULUT_CLOCKS
 Clock ip name array for PLULUT. More...
 
#define PUF_CLOCKS
 Clock ip name array for PUF. More...
 
#define CASPER_CLOCKS
 Clock ip name array for CASPER. More...
 
#define ANALOGCTRL_CLOCKS
 Clock ip name array for ANALOGCTRL. More...
 
#define HS_LSPI_CLOCKS
 Clock ip name array for HS_LSPI. More...
 
#define GPIO_SEC_CLOCKS
 Clock ip name array for GPIO_SEC. More...
 
#define GPIO_SEC_INT_CLOCKS
 Clock ip name array for GPIO_SEC_INT. More...
 
#define USBD_CLOCKS
 Clock ip name array for USBD. More...
 
#define USBH_CLOCKS
 Clock ip name array for USBH. More...
 
#define CLK_GATE_REG_OFFSET_SHIFT   8U
 Clock gate name used for CLOCK_EnableClock/CLOCK_DisableClock. More...
 
#define BUS_CLK   kCLOCK_BusClk
 Peripherals clock source definition. More...
 
#define CLK_ATTACH_ID(mux, sel, pos)   ((((uint32_t)(mux) << 0U) | (((uint32_t)(sel) + 1U) & 0xFU) << 8U) << ((uint32_t)(pos)*12U))
 Clock Mux Switches The encoding is as follows each connection identified is 32bits wide while 24bits are valuable starting from LSB upwards. More...
 
#define PLL_CONFIGFLAG_USEINRATE   (1U << 0U)
 PLL configuration structure flags for 'flags' field These flags control how the PLL configuration function sets up the PLL setup structure. More...
 
#define PLL_CONFIGFLAG_FORCENOFRACT   (1U << 2U)
 Force non-fractional output mode, PLL output will not use the fractional, automatic bandwidth, or SS hardware.
 
#define PLL_SETUPFLAG_POWERUP   (1U << 0U)
 PLL setup structure flags for 'flags' field These flags control how the PLL setup function sets up the PLL. More...
 
#define PLL_SETUPFLAG_WAITLOCK   (1U << 1U)
 Setup will wait for PLL lock, implies the PLL will be pwoered on.
 
#define PLL_SETUPFLAG_ADGVOLT   (1U << 2U)
 Optimize system voltage for the new PLL rate.
 
#define PLL_SETUPFLAG_USEFEEDBACKDIV2   (1U << 3U)
 Use feedback divider by 2 in divider path.
 

Enumerations

enum  clock_ip_name_t {
  kCLOCK_IpInvalid = 0U,
  kCLOCK_Rom = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 1),
  kCLOCK_Sram1 = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 3),
  kCLOCK_Sram2 = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 4),
  kCLOCK_Flash = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 7),
  kCLOCK_Fmc = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 8),
  kCLOCK_InputMux = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 11),
  kCLOCK_Iocon = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 13),
  kCLOCK_Gpio0 = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 14),
  kCLOCK_Gpio1 = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 15),
  kCLOCK_Pint = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 18),
  kCLOCK_Gint = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 19),
  kCLOCK_Dma0 = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 20),
  kCLOCK_Crc = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 21),
  kCLOCK_Wwdt = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 22),
  kCLOCK_Rtc = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 23),
  kCLOCK_Mailbox = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 26),
  kCLOCK_Adc0 = CLK_GATE_DEFINE(AHB_CLK_CTRL0, 27),
  kCLOCK_Mrt = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 0),
  kCLOCK_OsTimer0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 1),
  kCLOCK_Sct0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 2),
  kCLOCK_Mcan = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 7),
  kCLOCK_Utick0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 10),
  kCLOCK_FlexComm0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 11),
  kCLOCK_FlexComm1 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 12),
  kCLOCK_FlexComm2 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 13),
  kCLOCK_FlexComm3 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 14),
  kCLOCK_FlexComm4 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 15),
  kCLOCK_FlexComm5 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 16),
  kCLOCK_FlexComm6 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 17),
  kCLOCK_FlexComm7 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 18),
  kCLOCK_MinUart0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 11),
  kCLOCK_MinUart1 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 12),
  kCLOCK_MinUart2 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 13),
  kCLOCK_MinUart3 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 14),
  kCLOCK_MinUart4 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 15),
  kCLOCK_MinUart5 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 16),
  kCLOCK_MinUart6 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 17),
  kCLOCK_MinUart7 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 18),
  kCLOCK_LSpi0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 11),
  kCLOCK_LSpi1 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 12),
  kCLOCK_LSpi2 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 13),
  kCLOCK_LSpi3 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 14),
  kCLOCK_LSpi4 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 15),
  kCLOCK_LSpi5 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 16),
  kCLOCK_LSpi6 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 17),
  kCLOCK_LSpi7 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 18),
  kCLOCK_BI2c0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 11),
  kCLOCK_BI2c1 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 12),
  kCLOCK_BI2c2 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 13),
  kCLOCK_BI2c3 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 14),
  kCLOCK_BI2c4 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 15),
  kCLOCK_BI2c5 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 16),
  kCLOCK_BI2c6 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 17),
  kCLOCK_BI2c7 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 18),
  kCLOCK_FlexI2s0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 11),
  kCLOCK_FlexI2s1 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 12),
  kCLOCK_FlexI2s2 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 13),
  kCLOCK_FlexI2s3 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 14),
  kCLOCK_FlexI2s4 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 15),
  kCLOCK_FlexI2s5 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 16),
  kCLOCK_FlexI2s6 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 17),
  kCLOCK_FlexI2s7 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 18),
  kCLOCK_Timer2 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 22),
  kCLOCK_Usbd0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 25),
  kCLOCK_Timer0 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 26),
  kCLOCK_Timer1 = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 27),
  kCLOCK_Ezha = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 30),
  kCLOCK_Ezhb = CLK_GATE_DEFINE(AHB_CLK_CTRL1, 31),
  kCLOCK_Dma1 = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 1),
  kCLOCK_Comp = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 2),
  kCLOCK_Usbh1 = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 4),
  kCLOCK_Usbd1 = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 5),
  kCLOCK_UsbRam1 = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 6),
  kCLOCK_Usb1Clk = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 7),
  kCLOCK_Freqme = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 8),
  kCLOCK_Cdog = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 11),
  kCLOCK_Rng = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 13),
  kCLOCK_Sysctl = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 15),
  kCLOCK_Usbhmr0 = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 16),
  kCLOCK_Usbhsl0 = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 17),
  kCLOCK_HashCrypt = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 18),
  kCLOCK_PluLut = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 20),
  kCLOCK_Timer3 = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 21),
  kCLOCK_Timer4 = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 22),
  kCLOCK_Puf = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 23),
  kCLOCK_Casper = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 24),
  kCLOCK_AnalogCtrl = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 27),
  kCLOCK_Hs_Lspi = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 28),
  kCLOCK_Gpio_Sec = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 29),
  kCLOCK_Gpio_Sec_Int = CLK_GATE_DEFINE(AHB_CLK_CTRL2, 30)
}
 Clock gate name used for CLOCK_EnableClock/CLOCK_DisableClock. More...
 
enum  clock_name_t {
  kCLOCK_CoreSysClk,
  kCLOCK_BusClk,
  kCLOCK_ClockOut,
  kCLOCK_FroHf,
  kCLOCK_Pll1Out,
  kCLOCK_Mclk,
  kCLOCK_Fro12M,
  kCLOCK_Fro1M,
  kCLOCK_ExtClk,
  kCLOCK_Pll0Out,
  kCLOCK_FlexI2S
}
 Clock name used to get clock frequency. More...
 
enum  clock_attach_id_t {
  kFRO12M_to_MAIN_CLK = MUX_A(CM_MAINCLKSELA, 0) | MUX_B(CM_MAINCLKSELB, 0, 0),
  kEXT_CLK_to_MAIN_CLK = MUX_A(CM_MAINCLKSELA, 1) | MUX_B(CM_MAINCLKSELB, 0, 0),
  kFRO1M_to_MAIN_CLK = MUX_A(CM_MAINCLKSELA, 2) | MUX_B(CM_MAINCLKSELB, 0, 0),
  kFRO_HF_to_MAIN_CLK = MUX_A(CM_MAINCLKSELA, 3) | MUX_B(CM_MAINCLKSELB, 0, 0),
  kPLL0_to_MAIN_CLK = MUX_A(CM_MAINCLKSELA, 0) | MUX_B(CM_MAINCLKSELB, 1, 0),
  kPLL1_to_MAIN_CLK = MUX_A(CM_MAINCLKSELA, 0) | MUX_B(CM_MAINCLKSELB, 2, 0),
  kOSC32K_to_MAIN_CLK = MUX_A(CM_MAINCLKSELA, 0) | MUX_B(CM_MAINCLKSELB, 3, 0),
  kMAIN_CLK_to_CLKOUT = MUX_A(CM_CLKOUTCLKSEL, 0),
  kPLL0_to_CLKOUT = MUX_A(CM_CLKOUTCLKSEL, 1),
  kEXT_CLK_to_CLKOUT = MUX_A(CM_CLKOUTCLKSEL, 2),
  kFRO_HF_to_CLKOUT = MUX_A(CM_CLKOUTCLKSEL, 3),
  kFRO1M_to_CLKOUT = MUX_A(CM_CLKOUTCLKSEL, 4),
  kPLL1_to_CLKOUT = MUX_A(CM_CLKOUTCLKSEL, 5),
  kOSC32K_to_CLKOUT = MUX_A(CM_CLKOUTCLKSEL, 6),
  kNONE_to_SYS_CLKOUT = MUX_A(CM_CLKOUTCLKSEL, 7),
  kFRO12M_to_PLL0 = MUX_A(CM_PLL0CLKSEL, 0),
  kEXT_CLK_to_PLL0 = MUX_A(CM_PLL0CLKSEL, 1),
  kFRO1M_to_PLL0 = MUX_A(CM_PLL0CLKSEL, 2),
  kOSC32K_to_PLL0 = MUX_A(CM_PLL0CLKSEL, 3),
  kNONE_to_PLL0 = MUX_A(CM_PLL0CLKSEL, 7),
  kMCAN_DIV_to_MCAN = MUX_A(CM_MCANCLKSEL, 0),
  kFRO1M_to_MCAN = MUX_A(CM_MCANCLKSEL, 1),
  kOSC32K_to_MCAN = MUX_A(CM_MCANCLKSEL, 2),
  kNONE_to_MCAN = MUX_A(CM_MCANCLKSEL, 7),
  kMAIN_CLK_to_ADC_CLK = MUX_A(CM_ADCASYNCCLKSEL, 0),
  kPLL0_to_ADC_CLK = MUX_A(CM_ADCASYNCCLKSEL, 1),
  kFRO_HF_to_ADC_CLK = MUX_A(CM_ADCASYNCCLKSEL, 2),
  kEXT_CLK_to_ADC_CLK = MUX_A(CM_ADCASYNCCLKSEL, 4),
  kNONE_to_ADC_CLK = MUX_A(CM_ADCASYNCCLKSEL, 7),
  kMAIN_CLK_to_USB0_CLK = MUX_A(CM_USB0CLKSEL, 0),
  kPLL0_to_USB0_CLK = MUX_A(CM_USB0CLKSEL, 1),
  kFRO_HF_to_USB0_CLK = MUX_A(CM_USB0CLKSEL, 3),
  kPLL1_to_USB0_CLK = MUX_A(CM_USB0CLKSEL, 5),
  kNONE_to_USB0_CLK = MUX_A(CM_USB0CLKSEL, 7),
  kOSC32K_to_CLK32K = MUX_A(CM_CLK32KCLKSEL, 0),
  kFRO1MDIV_to_CLK32K = MUX_A(CM_CLK32KCLKSEL, 1),
  kNONE_to_CLK32K = MUX_A(CM_CLK32KCLKSEL, 7),
  kMAIN_CLK_to_FLEXCOMM0 = MUX_A(CM_FXCOMCLKSEL0, 0),
  kPLL0_DIV_to_FLEXCOMM0 = MUX_A(CM_FXCOMCLKSEL0, 1),
  kFRO12M_to_FLEXCOMM0 = MUX_A(CM_FXCOMCLKSEL0, 2),
  kFRO_HF_DIV_to_FLEXCOMM0 = MUX_A(CM_FXCOMCLKSEL0, 3),
  kFRO1M_to_FLEXCOMM0 = MUX_A(CM_FXCOMCLKSEL0, 4),
  kMCLK_to_FLEXCOMM0 = MUX_A(CM_FXCOMCLKSEL0, 5),
  kOSC32K_to_FLEXCOMM0 = MUX_A(CM_FXCOMCLKSEL0, 6),
  kNONE_to_FLEXCOMM0 = MUX_A(CM_FXCOMCLKSEL0, 7),
  kMAIN_CLK_to_FLEXCOMM1 = MUX_A(CM_FXCOMCLKSEL1, 0),
  kPLL0_DIV_to_FLEXCOMM1 = MUX_A(CM_FXCOMCLKSEL1, 1),
  kFRO12M_to_FLEXCOMM1 = MUX_A(CM_FXCOMCLKSEL1, 2),
  kFRO_HF_DIV_to_FLEXCOMM1 = MUX_A(CM_FXCOMCLKSEL1, 3),
  kFRO1M_to_FLEXCOMM1 = MUX_A(CM_FXCOMCLKSEL1, 4),
  kMCLK_to_FLEXCOMM1 = MUX_A(CM_FXCOMCLKSEL1, 5),
  kOSC32K_to_FLEXCOMM1 = MUX_A(CM_FXCOMCLKSEL1, 6),
  kNONE_to_FLEXCOMM1 = MUX_A(CM_FXCOMCLKSEL1, 7),
  kMAIN_CLK_to_FLEXCOMM2 = MUX_A(CM_FXCOMCLKSEL2, 0),
  kPLL0_DIV_to_FLEXCOMM2 = MUX_A(CM_FXCOMCLKSEL2, 1),
  kFRO12M_to_FLEXCOMM2 = MUX_A(CM_FXCOMCLKSEL2, 2),
  kFRO_HF_DIV_to_FLEXCOMM2 = MUX_A(CM_FXCOMCLKSEL2, 3),
  kFRO1M_to_FLEXCOMM2 = MUX_A(CM_FXCOMCLKSEL2, 4),
  kMCLK_to_FLEXCOMM2 = MUX_A(CM_FXCOMCLKSEL2, 5),
  kOSC32K_to_FLEXCOMM2 = MUX_A(CM_FXCOMCLKSEL2, 6),
  kNONE_to_FLEXCOMM2 = MUX_A(CM_FXCOMCLKSEL2, 7),
  kMAIN_CLK_to_FLEXCOMM3 = MUX_A(CM_FXCOMCLKSEL3, 0),
  kPLL0_DIV_to_FLEXCOMM3 = MUX_A(CM_FXCOMCLKSEL3, 1),
  kFRO12M_to_FLEXCOMM3 = MUX_A(CM_FXCOMCLKSEL3, 2),
  kFRO_HF_DIV_to_FLEXCOMM3 = MUX_A(CM_FXCOMCLKSEL3, 3),
  kFRO1M_to_FLEXCOMM3 = MUX_A(CM_FXCOMCLKSEL3, 4),
  kMCLK_to_FLEXCOMM3 = MUX_A(CM_FXCOMCLKSEL3, 5),
  kOSC32K_to_FLEXCOMM3 = MUX_A(CM_FXCOMCLKSEL3, 6),
  kNONE_to_FLEXCOMM3 = MUX_A(CM_FXCOMCLKSEL3, 7),
  kMAIN_CLK_to_FLEXCOMM4 = MUX_A(CM_FXCOMCLKSEL4, 0),
  kPLL0_DIV_to_FLEXCOMM4 = MUX_A(CM_FXCOMCLKSEL4, 1),
  kFRO12M_to_FLEXCOMM4 = MUX_A(CM_FXCOMCLKSEL4, 2),
  kFRO_HF_DIV_to_FLEXCOMM4 = MUX_A(CM_FXCOMCLKSEL4, 3),
  kFRO1M_to_FLEXCOMM4 = MUX_A(CM_FXCOMCLKSEL4, 4),
  kMCLK_to_FLEXCOMM4 = MUX_A(CM_FXCOMCLKSEL4, 5),
  kOSC32K_to_FLEXCOMM4 = MUX_A(CM_FXCOMCLKSEL4, 6),
  kNONE_to_FLEXCOMM4 = MUX_A(CM_FXCOMCLKSEL4, 7),
  kMAIN_CLK_to_FLEXCOMM5 = MUX_A(CM_FXCOMCLKSEL5, 0),
  kPLL0_DIV_to_FLEXCOMM5 = MUX_A(CM_FXCOMCLKSEL5, 1),
  kFRO12M_to_FLEXCOMM5 = MUX_A(CM_FXCOMCLKSEL5, 2),
  kFRO_HF_DIV_to_FLEXCOMM5 = MUX_A(CM_FXCOMCLKSEL5, 3),
  kFRO1M_to_FLEXCOMM5 = MUX_A(CM_FXCOMCLKSEL5, 4),
  kMCLK_to_FLEXCOMM5 = MUX_A(CM_FXCOMCLKSEL5, 5),
  kOSC32K_to_FLEXCOMM5 = MUX_A(CM_FXCOMCLKSEL5, 6),
  kNONE_to_FLEXCOMM5 = MUX_A(CM_FXCOMCLKSEL5, 7),
  kMAIN_CLK_to_FLEXCOMM6 = MUX_A(CM_FXCOMCLKSEL6, 0),
  kPLL0_DIV_to_FLEXCOMM6 = MUX_A(CM_FXCOMCLKSEL6, 1),
  kFRO12M_to_FLEXCOMM6 = MUX_A(CM_FXCOMCLKSEL6, 2),
  kFRO_HF_DIV_to_FLEXCOMM6 = MUX_A(CM_FXCOMCLKSEL6, 3),
  kFRO1M_to_FLEXCOMM6 = MUX_A(CM_FXCOMCLKSEL6, 4),
  kMCLK_to_FLEXCOMM6 = MUX_A(CM_FXCOMCLKSEL6, 5),
  kOSC32K_to_FLEXCOMM6 = MUX_A(CM_FXCOMCLKSEL6, 6),
  kNONE_to_FLEXCOMM6 = MUX_A(CM_FXCOMCLKSEL6, 7),
  kMAIN_CLK_to_FLEXCOMM7 = MUX_A(CM_FXCOMCLKSEL7, 0),
  kPLL0_DIV_to_FLEXCOMM7 = MUX_A(CM_FXCOMCLKSEL7, 1),
  kFRO12M_to_FLEXCOMM7 = MUX_A(CM_FXCOMCLKSEL7, 2),
  kFRO_HF_DIV_to_FLEXCOMM7 = MUX_A(CM_FXCOMCLKSEL7, 3),
  kFRO1M_to_FLEXCOMM7 = MUX_A(CM_FXCOMCLKSEL7, 4),
  kMCLK_to_FLEXCOMM7 = MUX_A(CM_FXCOMCLKSEL7, 5),
  kOSC32K_to_FLEXCOMM7 = MUX_A(CM_FXCOMCLKSEL7, 6),
  kNONE_to_FLEXCOMM7 = MUX_A(CM_FXCOMCLKSEL7, 7),
  kMAIN_CLK_to_HSLSPI = MUX_A(CM_HSLSPICLKSEL, 0),
  kPLL0_DIV_to_HSLSPI = MUX_A(CM_HSLSPICLKSEL, 1),
  kFRO12M_to_HSLSPI = MUX_A(CM_HSLSPICLKSEL, 2),
  kFRO_HF_DIV_to_HSLSPI = MUX_A(CM_HSLSPICLKSEL, 3),
  kFRO1M_to_HSLSPI = MUX_A(CM_HSLSPICLKSEL, 4),
  kOSC32K_to_HSLSPI = MUX_A(CM_HSLSPICLKSEL, 6),
  kNONE_to_HSLSPI = MUX_A(CM_HSLSPICLKSEL, 7),
  kFRO_HF_to_MCLK = MUX_A(CM_MCLKCLKSEL, 0),
  kPLL0_to_MCLK = MUX_A(CM_MCLKCLKSEL, 1),
  kNONE_to_MCLK = MUX_A(CM_MCLKCLKSEL, 7),
  kMAIN_CLK_to_SCT_CLK = MUX_A(CM_SCTCLKSEL, 0),
  kPLL0_to_SCT_CLK = MUX_A(CM_SCTCLKSEL, 1),
  kEXT_CLK_to_SCT_CLK = MUX_A(CM_SCTCLKSEL, 2),
  kFRO_HF_to_SCT_CLK = MUX_A(CM_SCTCLKSEL, 3),
  kMCLK_to_SCT_CLK = MUX_A(CM_SCTCLKSEL, 5),
  kNONE_to_SCT_CLK = MUX_A(CM_SCTCLKSEL, 7),
  kFRO32K_to_OSC32K = MUX_A(CM_RTCOSC32KCLKSEL, 0),
  kXTAL32K_to_OSC32K = MUX_A(CM_RTCOSC32KCLKSEL, 1),
  kOSC32K_to_OSTIMER = MUX_A(CM_OSTIMERCLKSEL, 0),
  kFRO1M_to_OSTIMER = MUX_A(CM_OSTIMERCLKSEL, 1),
  kMAIN_CLK_to_OSTIMER = MUX_A(CM_OSTIMERCLKSEL, 2),
  kTRACE_DIV_to_TRACE = MUX_A(CM_TRACECLKSEL, 0),
  kFRO1M_to_TRACE = MUX_A(CM_TRACECLKSEL, 1),
  kOSC32K_to_TRACE = MUX_A(CM_TRACECLKSEL, 2),
  kNONE_to_TRACE = MUX_A(CM_TRACECLKSEL, 7),
  kSYSTICK_DIV0_to_SYSTICK0 = MUX_A(CM_SYSTICKCLKSEL0, 0),
  kFRO1M_to_SYSTICK0 = MUX_A(CM_SYSTICKCLKSEL0, 1),
  kOSC32K_to_SYSTICK0 = MUX_A(CM_SYSTICKCLKSEL0, 2),
  kNONE_to_SYSTICK0 = MUX_A(CM_SYSTICKCLKSEL0, 7),
  kFRO12M_to_PLL1 = MUX_A(CM_PLL1CLKSEL, 0),
  kEXT_CLK_to_PLL1 = MUX_A(CM_PLL1CLKSEL, 1),
  kFRO1M_to_PLL1 = MUX_A(CM_PLL1CLKSEL, 2),
  kOSC32K_to_PLL1 = MUX_A(CM_PLL1CLKSEL, 3),
  kNONE_to_PLL1 = MUX_A(CM_PLL1CLKSEL, 7),
  kMAIN_CLK_to_CTIMER0 = MUX_A(CM_CTIMERCLKSEL0, 0),
  kPLL0_to_CTIMER0 = MUX_A(CM_CTIMERCLKSEL0, 1),
  kFRO_HF_to_CTIMER0 = MUX_A(CM_CTIMERCLKSEL0, 3),
  kFRO1M_to_CTIMER0 = MUX_A(CM_CTIMERCLKSEL0, 4),
  kMCLK_to_CTIMER0 = MUX_A(CM_CTIMERCLKSEL0, 5),
  kOSC32K_to_CTIMER0 = MUX_A(CM_CTIMERCLKSEL0, 6),
  kNONE_to_CTIMER0 = MUX_A(CM_CTIMERCLKSEL0, 7),
  kMAIN_CLK_to_CTIMER1 = MUX_A(CM_CTIMERCLKSEL1, 0),
  kPLL0_to_CTIMER1 = MUX_A(CM_CTIMERCLKSEL1, 1),
  kFRO_HF_to_CTIMER1 = MUX_A(CM_CTIMERCLKSEL1, 3),
  kFRO1M_to_CTIMER1 = MUX_A(CM_CTIMERCLKSEL1, 4),
  kMCLK_to_CTIMER1 = MUX_A(CM_CTIMERCLKSEL1, 5),
  kOSC32K_to_CTIMER1 = MUX_A(CM_CTIMERCLKSEL1, 6),
  kNONE_to_CTIMER1 = MUX_A(CM_CTIMERCLKSEL1, 7),
  kMAIN_CLK_to_CTIMER2 = MUX_A(CM_CTIMERCLKSEL2, 0),
  kPLL0_to_CTIMER2 = MUX_A(CM_CTIMERCLKSEL2, 1),
  kFRO_HF_to_CTIMER2 = MUX_A(CM_CTIMERCLKSEL2, 3),
  kFRO1M_to_CTIMER2 = MUX_A(CM_CTIMERCLKSEL2, 4),
  kMCLK_to_CTIMER2 = MUX_A(CM_CTIMERCLKSEL2, 5),
  kOSC32K_to_CTIMER2 = MUX_A(CM_CTIMERCLKSEL2, 6),
  kNONE_to_CTIMER2 = MUX_A(CM_CTIMERCLKSEL2, 7),
  kMAIN_CLK_to_CTIMER3 = MUX_A(CM_CTIMERCLKSEL3, 0),
  kPLL0_to_CTIMER3 = MUX_A(CM_CTIMERCLKSEL3, 1),
  kFRO_HF_to_CTIMER3 = MUX_A(CM_CTIMERCLKSEL3, 3),
  kFRO1M_to_CTIMER3 = MUX_A(CM_CTIMERCLKSEL3, 4),
  kMCLK_to_CTIMER3 = MUX_A(CM_CTIMERCLKSEL3, 5),
  kOSC32K_to_CTIMER3 = MUX_A(CM_CTIMERCLKSEL3, 6),
  kNONE_to_CTIMER3 = MUX_A(CM_CTIMERCLKSEL3, 7),
  kMAIN_CLK_to_CTIMER4 = MUX_A(CM_CTIMERCLKSEL4, 0),
  kPLL0_to_CTIMER4 = MUX_A(CM_CTIMERCLKSEL4, 1),
  kFRO_HF_to_CTIMER4 = MUX_A(CM_CTIMERCLKSEL4, 3),
  kFRO1M_to_CTIMER4 = MUX_A(CM_CTIMERCLKSEL4, 4),
  kMCLK_to_CTIMER4 = MUX_A(CM_CTIMERCLKSEL4, 5),
  kOSC32K_to_CTIMER4 = MUX_A(CM_CTIMERCLKSEL4, 6),
  kNONE_to_CTIMER4 = MUX_A(CM_CTIMERCLKSEL4, 7),
  kNONE_to_NONE = (int)0x80000000U
}
 The enumerator of clock attach Id. More...
 
enum  clock_div_name_t {
  kCLOCK_DivSystickClk0 = 0,
  kCLOCK_DivArmTrClkDiv = 2,
  kCLOCK_DivCanClk = 3,
  kCLOCK_DivFlexFrg0 = 8,
  kCLOCK_DivFlexFrg1 = 9,
  kCLOCK_DivFlexFrg2 = 10,
  kCLOCK_DivFlexFrg3 = 11,
  kCLOCK_DivFlexFrg4 = 12,
  kCLOCK_DivFlexFrg5 = 13,
  kCLOCK_DivFlexFrg6 = 14,
  kCLOCK_DivFlexFrg7 = 15,
  kCLOCK_DivAhbClk = 32,
  kCLOCK_DivClkOut = 33,
  kCLOCK_DivFrohfClk = 34,
  kCLOCK_DivWdtClk = 35,
  kCLOCK_DivAdcAsyncClk = 37,
  kCLOCK_DivUsb0Clk = 38,
  kCLOCK_DivFro1mClk = 40,
  kCLOCK_DivMClk = 43,
  kCLOCK_DivSctClk = 45,
  kCLOCK_DivPll0Clk = 49
}
 Clock dividers. More...
 
enum  ss_progmodfm_t {
  kSS_MF_512 = (0 << 20),
  kSS_MF_384 = (1 << 20),
  kSS_MF_256 = (2 << 20),
  kSS_MF_128 = (3 << 20),
  kSS_MF_64 = (4 << 20),
  kSS_MF_32 = (5 << 20),
  kSS_MF_24 = (6 << 20),
  kSS_MF_16 = (7 << 20)
}
 PLL Spread Spectrum (SS) Programmable modulation frequency See (MF) field in the PLL0SSCG1 register in the UM. More...
 
enum  ss_progmoddp_t {
  kSS_MR_K0 = (0 << 23),
  kSS_MR_K1 = (1 << 23),
  kSS_MR_K1_5 = (2 << 23),
  kSS_MR_K2 = (3 << 23),
  kSS_MR_K3 = (4 << 23),
  kSS_MR_K4 = (5 << 23),
  kSS_MR_K6 = (6 << 23),
  kSS_MR_K8 = (7 << 23)
}
 PLL Spread Spectrum (SS) Programmable frequency modulation depth See (MR) field in the PLL0SSCG1 register in the UM. More...
 
enum  ss_modwvctrl_t {
  kSS_MC_NOC = (0 << 26),
  kSS_MC_RECC = (2 << 26),
  kSS_MC_MAXC = (3 << 26)
}
 PLL Spread Spectrum (SS) Modulation waveform control See (MC) field in the PLL0SSCG1 register in the UM. More...
 
enum  pll_error_t {
  kStatus_PLL_Success = MAKE_STATUS(kStatusGroup_Generic, 0),
  kStatus_PLL_OutputTooLow = MAKE_STATUS(kStatusGroup_Generic, 1),
  kStatus_PLL_OutputTooHigh = MAKE_STATUS(kStatusGroup_Generic, 2),
  kStatus_PLL_InputTooLow = MAKE_STATUS(kStatusGroup_Generic, 3),
  kStatus_PLL_InputTooHigh = MAKE_STATUS(kStatusGroup_Generic, 4),
  kStatus_PLL_OutsideIntLimit = MAKE_STATUS(kStatusGroup_Generic, 5),
  kStatus_PLL_CCOTooLow = MAKE_STATUS(kStatusGroup_Generic, 6),
  kStatus_PLL_CCOTooHigh = MAKE_STATUS(kStatusGroup_Generic, 7)
}
 PLL status definitions. More...
 
enum  clock_usbfs_src_t {
  kCLOCK_UsbfsSrcFro = (uint32_t)kCLOCK_FroHf,
  kCLOCK_UsbfsSrcPll0 = (uint32_t)kCLOCK_Pll0Out,
  kCLOCK_UsbfsSrcMainClock = (uint32_t)kCLOCK_CoreSysClk,
  kCLOCK_UsbfsSrcPll1 = (uint32_t)kCLOCK_Pll1Out,
  kCLOCK_UsbfsSrcNone
}
 USB FS clock source definition. More...
 
enum  clock_usbhs_src_t { kCLOCK_UsbSrcUnused = 0xFFFFFFFFU }
 USBhs clock source definition. More...
 
enum  clock_usb_phy_src_t { kCLOCK_UsbPhySrcExt = 0U }
 Source of the USB HS PHY. More...
 

Functions

static void CLOCK_EnableClock (clock_ip_name_t clk)
 Enable the clock for specific IP. More...
 
static void CLOCK_DisableClock (clock_ip_name_t clk)
 Disable the clock for specific IP. More...
 
status_t CLOCK_SetupFROClocking (uint32_t iFreq)
 Initialize the Core clock to given frequency (12, 48 or 96 MHz). Turns on FRO and uses default CCO, if freq is 12000000, then high speed output is off, else high speed output is enabled. More...
 
void CLOCK_SetFLASHAccessCyclesForFreq (uint32_t system_freq_hz)
 Set the flash wait states for the input freuqency. More...
 
status_t CLOCK_SetupExtClocking (uint32_t iFreq)
 Initialize the external osc clock to given frequency. More...
 
status_t CLOCK_SetupI2SMClkClocking (uint32_t iFreq)
 Initialize the I2S MCLK clock to given frequency. More...
 
status_t CLOCK_SetupPLUClkInClocking (uint32_t iFreq)
 Initialize the PLU CLKIN clock to given frequency. More...
 
void CLOCK_AttachClk (clock_attach_id_t connection)
 Configure the clock selection muxes. More...
 
clock_attach_id_t CLOCK_GetClockAttachId (clock_attach_id_t attachId)
 Get the actual clock attach id. This fuction uses the offset in input attach id, then it reads the actual source value in the register and combine the offset to obtain an actual attach id. More...
 
void CLOCK_SetClkDiv (clock_div_name_t div_name, uint32_t divided_by_value, bool reset)
 Setup peripheral clock dividers. More...
 
void CLOCK_SetRtc1khzClkDiv (uint32_t divided_by_value)
 Setup rtc 1khz clock divider. More...
 
void CLOCK_SetRtc1hzClkDiv (uint32_t divided_by_value)
 Setup rtc 1hz clock divider. More...
 
uint32_t CLOCK_SetFlexCommClock (uint32_t id, uint32_t freq)
 Set the flexcomm output frequency. More...
 
uint32_t CLOCK_GetFlexCommInputClock (uint32_t id)
 Return Frequency of flexcomm input clock. More...
 
uint32_t CLOCK_GetFreq (clock_name_t clockName)
 Return Frequency of selected clock. More...
 
uint32_t CLOCK_GetFro12MFreq (void)
 Return Frequency of FRO 12MHz. More...
 
uint32_t CLOCK_GetFro1MFreq (void)
 Return Frequency of FRO 1MHz. More...
 
uint32_t CLOCK_GetClockOutClkFreq (void)
 Return Frequency of ClockOut. More...
 
uint32_t CLOCK_GetMCanClkFreq (void)
 Return Frequency of Can Clock. More...
 
uint32_t CLOCK_GetAdcClkFreq (void)
 Return Frequency of Adc Clock. More...
 
uint32_t CLOCK_GetUsb0ClkFreq (void)
 Return Frequency of Usb0 Clock. More...
 
uint32_t CLOCK_GetUsb1ClkFreq (void)
 Return Frequency of Usb1 Clock. More...
 
uint32_t CLOCK_GetMclkClkFreq (void)
 Return Frequency of MClk Clock. More...
 
uint32_t CLOCK_GetSctClkFreq (void)
 Return Frequency of SCTimer Clock. More...
 
uint32_t CLOCK_GetExtClkFreq (void)
 Return Frequency of External Clock. More...
 
uint32_t CLOCK_GetWdtClkFreq (void)
 Return Frequency of Watchdog. More...
 
uint32_t CLOCK_GetFroHfFreq (void)
 Return Frequency of High-Freq output of FRO. More...
 
uint32_t CLOCK_GetPll0OutFreq (void)
 Return Frequency of PLL. More...
 
uint32_t CLOCK_GetPll1OutFreq (void)
 Return Frequency of USB PLL. More...
 
uint32_t CLOCK_GetOsc32KFreq (void)
 Return Frequency of 32kHz osc. More...
 
uint32_t CLOCK_GetCoreSysClkFreq (void)
 Return Frequency of Core System. More...
 
uint32_t CLOCK_GetI2SMClkFreq (void)
 Return Frequency of I2S MCLK Clock. More...
 
uint32_t CLOCK_GetPLUClkInFreq (void)
 Return Frequency of PLU CLKIN Clock. More...
 
uint32_t CLOCK_GetFlexCommClkFreq (uint32_t id)
 Return Frequency of FlexComm Clock. More...
 
uint32_t CLOCK_GetHsLspiClkFreq (void)
 Return Frequency of High speed SPI Clock. More...
 
uint32_t CLOCK_GetCTimerClkFreq (uint32_t id)
 Return Frequency of CTimer functional Clock. More...
 
uint32_t CLOCK_GetSystickClkFreq (uint32_t id)
 Return Frequency of SystickClock. More...
 
uint32_t CLOCK_GetPLL0InClockRate (void)
 Return PLL0 input clock rate. More...
 
uint32_t CLOCK_GetPLL1InClockRate (void)
 Return PLL1 input clock rate. More...
 
uint32_t CLOCK_GetPLL0OutClockRate (bool recompute)
 Return PLL0 output clock rate. More...
 
uint32_t CLOCK_GetPLL1OutClockRate (bool recompute)
 Return PLL1 output clock rate. More...
 
__STATIC_INLINE void CLOCK_SetBypassPLL0 (bool bypass)
 Enables and disables PLL0 bypass mode. More...
 
__STATIC_INLINE void CLOCK_SetBypassPLL1 (bool bypass)
 Enables and disables PLL1 bypass mode. More...
 
__STATIC_INLINE bool CLOCK_IsPLL0Locked (void)
 Check if PLL is locked or not. More...
 
__STATIC_INLINE bool CLOCK_IsPLL1Locked (void)
 Check if PLL1 is locked or not. More...
 
void CLOCK_SetStoredPLL0ClockRate (uint32_t rate)
 Store the current PLL0 rate. More...
 
uint32_t CLOCK_GetPLL0OutFromSetup (pll_setup_t *pSetup)
 Return PLL0 output clock rate from setup structure. More...
 
uint32_t CLOCK_GetPLL1OutFromSetup (pll_setup_t *pSetup)
 Return PLL1 output clock rate from setup structure. More...
 
pll_error_t CLOCK_SetupPLL0Data (pll_config_t *pControl, pll_setup_t *pSetup)
 Set PLL0 output based on the passed PLL setup data. More...
 
pll_error_t CLOCK_SetupPLL0Prec (pll_setup_t *pSetup, uint32_t flagcfg)
 Set PLL output from PLL setup structure (precise frequency) More...
 
pll_error_t CLOCK_SetPLL0Freq (const pll_setup_t *pSetup)
 Set PLL output from PLL setup structure (precise frequency) More...
 
pll_error_t CLOCK_SetPLL1Freq (const pll_setup_t *pSetup)
 Set PLL output from PLL setup structure (precise frequency) More...
 
void CLOCK_SetupPLL0Mult (uint32_t multiply_by, uint32_t input_freq)
 Set PLL0 output based on the multiplier and input frequency. More...
 
static void CLOCK_DisableUsbDevicefs0Clock (clock_ip_name_t clk)
 Disable USB clock. More...
 
bool CLOCK_EnableUsbfs0DeviceClock (clock_usbfs_src_t src, uint32_t freq)
 Enable USB Device FS clock. More...
 
bool CLOCK_EnableUsbfs0HostClock (clock_usbfs_src_t src, uint32_t freq)
 Enable USB HOST FS clock. More...
 
bool CLOCK_EnableUsbhs0PhyPllClock (clock_usb_phy_src_t src, uint32_t freq)
 Enable USB phy clock. More...
 
bool CLOCK_EnableUsbhs0DeviceClock (clock_usbhs_src_t src, uint32_t freq)
 Enable USB Device HS clock. More...
 
bool CLOCK_EnableUsbhs0HostClock (clock_usbhs_src_t src, uint32_t freq)
 Enable USB HOST HS clock. More...
 
void CLOCK_EnableOstimer32kClock (void)
 Enable the OSTIMER 32k clock. More...
 

Driver version

#define FSL_CLOCK_DRIVER_VERSION   (MAKE_VERSION(2, 3, 7))
 CLOCK driver version 2.3.7. More...
 

Data Structure Documentation

struct pll_config_t

This structure can be used to configure the settings for a PLL setup structure. Fill in the desired configuration for the PLL and call the PLL setup function to fill in a PLL setup structure.

Data Fields

uint32_t desiredRate
 Desired PLL rate in Hz.
 
uint32_t inputRate
 PLL input clock in Hz, only used if PLL_CONFIGFLAG_USEINRATE flag is set.
 
uint32_t flags
 PLL configuration flags, Or'ed value of PLL_CONFIGFLAG_* definitions.
 
ss_progmodfm_t ss_mf
 SS Programmable modulation frequency, only applicable when not using PLL_CONFIGFLAG_FORCENOFRACT flag.
 
ss_progmoddp_t ss_mr
 SS Programmable frequency modulation depth, only applicable when not using PLL_CONFIGFLAG_FORCENOFRACT flag.
 
ss_modwvctrl_t ss_mc
 SS Modulation waveform control, only applicable when not using PLL_CONFIGFLAG_FORCENOFRACT flag.
 
bool mfDither
 false for fixed modulation frequency or true for dithering, only applicable when not using PLL_CONFIGFLAG_FORCENOFRACT flag
 
struct pll_setup_t

It can be populated with the PLL setup function. If powering up or waiting for PLL lock, the PLL input clock source should be configured prior to PLL setup.

Data Fields

uint32_t pllctrl
 PLL control register PLL0CTRL.
 
uint32_t pllndec
 PLL NDEC register PLL0NDEC.
 
uint32_t pllpdec
 PLL PDEC register PLL0PDEC.
 
uint32_t pllmdec
 PLL MDEC registers PLL0PDEC.
 
uint32_t pllsscg [2]
 PLL SSCTL registers PLL0SSCG.
 
uint32_t pllRate
 Acutal PLL rate.
 
uint32_t flags
 PLL setup flags, Or'ed value of PLL_SETUPFLAG_* definitions.
 

Macro Definition Documentation

#define FSL_CLOCK_DRIVER_VERSION   (MAKE_VERSION(2, 3, 7))
#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 CLOCK_USR_CFG_PLL_CONFIG_CACHE_COUNT   2U

Once define this MACRO to be non-zero value, CLOCK_PllGetConfig() function would cache the recent calulation and accelerate the execution to get the right settings.

#define ROM_CLOCKS
Value:
{ \
}
Clock gate name: Rom.
Definition: fsl_clock.h:325
#define SRAM_CLOCKS
Value:
{ \
}
Clock gate name: Sram1.
Definition: fsl_clock.h:327
Clock gate name: Sram2.
Definition: fsl_clock.h:329
#define FLASH_CLOCKS
Value:
{ \
}
Clock gate name: Flash.
Definition: fsl_clock.h:331
#define FMC_CLOCKS
Value:
{ \
}
Clock gate name: Fmc.
Definition: fsl_clock.h:333
#define INPUTMUX_CLOCKS
Value:
{ \
kCLOCK_InputMux0 \
}
#define IOCON_CLOCKS
Value:
{ \
}
Clock gate name: Iocon.
Definition: fsl_clock.h:337
#define GPIO_CLOCKS
Value:
{ \
}
Clock gate name: Gpio0.
Definition: fsl_clock.h:339
Clock gate name: Gpio1.
Definition: fsl_clock.h:341
#define PINT_CLOCKS
Value:
{ \
}
Clock gate name: Pint.
Definition: fsl_clock.h:343
#define GINT_CLOCKS
Value:
{ \
}
Clock gate name: Gint.
Definition: fsl_clock.h:345
#define DMA_CLOCKS
Value:
{ \
}
Clock gate name: Dma0.
Definition: fsl_clock.h:347
Clock gate name: Dma1.
Definition: fsl_clock.h:461
#define CRC_CLOCKS
Value:
{ \
}
Clock gate name: Crc.
Definition: fsl_clock.h:349
#define WWDT_CLOCKS
Value:
{ \
}
Clock gate name: Wwdt.
Definition: fsl_clock.h:351
#define RTC_CLOCKS
Value:
{ \
}
Clock gate name: Rtc.
Definition: fsl_clock.h:353
#define MAILBOX_CLOCKS
Value:
{ \
}
Clock gate name: Mailbox.
Definition: fsl_clock.h:355
#define LPADC_CLOCKS
Value:
{ \
}
Clock gate name: Adc0.
Definition: fsl_clock.h:357
#define MRT_CLOCKS
Value:
{ \
}
Clock gate name: Mrt.
Definition: fsl_clock.h:359
#define OSTIMER_CLOCKS
Value:
{ \
}
Clock gate name: OsTimer0.
Definition: fsl_clock.h:361
#define SCT_CLOCKS
Value:
{ \
}
Clock gate name: Sct0.
Definition: fsl_clock.h:363
#define MCAN_CLOCKS
Value:
{ \
}
Clock gate name: Mcan.
Definition: fsl_clock.h:365
#define UTICK_CLOCKS
Value:
{ \
}
Clock gate name: Utick0.
Definition: fsl_clock.h:367
#define FLEXCOMM_CLOCKS
Value:
{ \
}
Clock gate name: Lspi.
Definition: fsl_clock.h:499
Clock gate name: FlexComm1.
Definition: fsl_clock.h:371
Clock gate name: FlexComm2.
Definition: fsl_clock.h:373
Clock gate name: FlexComm6.
Definition: fsl_clock.h:381
Clock gate name: FlexComm5.
Definition: fsl_clock.h:379
Clock gate name: FlexComm7.
Definition: fsl_clock.h:383
Clock gate name: FlexComm0.
Definition: fsl_clock.h:369
Clock gate name: FlexComm4.
Definition: fsl_clock.h:377
Clock gate name: FlexComm3.
Definition: fsl_clock.h:375
#define LPUART_CLOCKS
Value:
{ \
}
Clock gate name: MinUart2.
Definition: fsl_clock.h:389
Clock gate name: MinUart4.
Definition: fsl_clock.h:393
Clock gate name: MinUart0.
Definition: fsl_clock.h:385
Clock gate name: MinUart7.
Definition: fsl_clock.h:399
Clock gate name: MinUart3.
Definition: fsl_clock.h:391
Clock gate name: MinUart5.
Definition: fsl_clock.h:395
Clock gate name: MinUart6.
Definition: fsl_clock.h:397
Clock gate name: MinUart1.
Definition: fsl_clock.h:387
#define BI2C_CLOCKS
Value:
{ \
}
Clock gate name: BI2c5.
Definition: fsl_clock.h:427
Clock gate name: BI2c1.
Definition: fsl_clock.h:419
Clock gate name: BI2c3.
Definition: fsl_clock.h:423
Clock gate name: BI2c2.
Definition: fsl_clock.h:421
Clock gate name: BI2c4.
Definition: fsl_clock.h:425
Clock gate name: BI2c6.
Definition: fsl_clock.h:429
Clock gate name: BI2c0.
Definition: fsl_clock.h:417
Clock gate name: BI2c7.
Definition: fsl_clock.h:431
#define LPSPI_CLOCKS
Value:
{ \
}
Clock gate name: LSpi4.
Definition: fsl_clock.h:409
Clock gate name: LSpi1.
Definition: fsl_clock.h:403
Clock gate name: LSpi6.
Definition: fsl_clock.h:413
Clock gate name: LSpi5.
Definition: fsl_clock.h:411
Clock gate name: LSpi3.
Definition: fsl_clock.h:407
Clock gate name: LSpi2.
Definition: fsl_clock.h:405
Clock gate name: LSpi0.
Definition: fsl_clock.h:401
Clock gate name: LSpi7.
Definition: fsl_clock.h:415
#define FLEXI2S_CLOCKS
Value:
{ \
}
Clock gate name: FlexI2s5.
Definition: fsl_clock.h:443
Clock gate name: FlexI2s6.
Definition: fsl_clock.h:445
Clock gate name: FlexI2s7.
Definition: fsl_clock.h:447
Clock gate name: FlexI2s1.
Definition: fsl_clock.h:435
Clock gate name: FlexI2s3.
Definition: fsl_clock.h:439
Clock gate name: FlexI2s0.
Definition: fsl_clock.h:433
Clock gate name: FlexI2s2.
Definition: fsl_clock.h:437
Clock gate name: FlexI2s4.
Definition: fsl_clock.h:441
#define CTIMER_CLOCKS
Value:
{ \
}
Clock gate name: Timer3.
Definition: fsl_clock.h:489
Clock gate name: Timer1.
Definition: fsl_clock.h:455
Clock gate name: Timer2.
Definition: fsl_clock.h:449
Clock gate name: Timer0.
Definition: fsl_clock.h:453
Clock gate name: Timer4.
Definition: fsl_clock.h:491
#define USB1CLK_CLOCKS
Value:
{ \
}
Clock gate name: Usb1Clk.
Definition: fsl_clock.h:471
#define FREQME_CLOCKS
Value:
{ \
}
Clock gate name: Freqme.
Definition: fsl_clock.h:473
#define USBRAM_CLOCKS
Value:
{ \
}
Clock gate name: UsbRam1.
Definition: fsl_clock.h:469
#define CDOG_CLOCKS
Value:
{ \
}
Clock gate name: Cdog.
Definition: fsl_clock.h:475
#define RNG_CLOCKS
Value:
{ \
}
Clock gate name: Rng.
Definition: fsl_clock.h:477
#define USBHMR0_CLOCKS
Value:
{ \
}
Clock gate name: Usbhmr0.
Definition: fsl_clock.h:481
#define USBHSL0_CLOCKS
Value:
{ \
}
Clock gate name: Usbhsl0.
Definition: fsl_clock.h:483
#define HASHCRYPT_CLOCKS
Value:
{ \
}
Clock gate name: HashCrypt.
Definition: fsl_clock.h:485
#define PLULUT_CLOCKS
Value:
{ \
}
Clock gate name: PluLut.
Definition: fsl_clock.h:487
#define PUF_CLOCKS
Value:
{ \
}
Clock gate name: Puf.
Definition: fsl_clock.h:493
#define CASPER_CLOCKS
Value:
{ \
}
Clock gate name: Casper.
Definition: fsl_clock.h:495
#define ANALOGCTRL_CLOCKS
Value:
{ \
}
Clock gate name: AnalogCtrl.
Definition: fsl_clock.h:497
#define HS_LSPI_CLOCKS
Value:
{ \
}
Clock gate name: Lspi.
Definition: fsl_clock.h:499
#define GPIO_SEC_CLOCKS
Value:
{ \
}
Clock gate name: GPIO Sec.
Definition: fsl_clock.h:501
#define GPIO_SEC_INT_CLOCKS
Value:
{ \
}
Clock gate name: GPIO SEC Int.
Definition: fsl_clock.h:503
#define USBD_CLOCKS
Value:
{ \
}
Clock gate name: Usbh1.
Definition: fsl_clock.h:465
Clock gate name: Usbd0.
Definition: fsl_clock.h:451
Clock gate name: Usbd1.
Definition: fsl_clock.h:467
#define USBH_CLOCKS
Value:
{ \
}
Clock gate name: Usbh1.
Definition: fsl_clock.h:465
#define CLK_GATE_REG_OFFSET_SHIFT   8U
#define BUS_CLK   kCLOCK_BusClk
#define CLK_ATTACH_ID (   mux,
  sel,
  pos 
)    ((((uint32_t)(mux) << 0U) | (((uint32_t)(sel) + 1U) & 0xFU) << 8U) << ((uint32_t)(pos)*12U))

[4 bits for choice, 0 means invalid choice] [8 bits mux ID]*

#define PLL_CONFIGFLAG_USEINRATE   (1U << 0U)


When the PLL_CONFIGFLAG_USEINRATE flag is selected, the 'InputRate' field in the configuration structure must be assigned with the expected PLL frequency. If the PLL_CONFIGFLAG_USEINRATE is not used, 'InputRate' is ignored in the configuration function and the driver will determine the PLL rate from the currently selected PLL source. This flag might be used to configure the PLL input clock more accurately when using the WDT oscillator or a more dyanmic CLKIN source.

When the PLL_CONFIGFLAG_FORCENOFRACT flag is selected, the PLL hardware for the automatic bandwidth selection, Spread Spectrum (SS) support, and fractional M-divider are not used.
Flag to use InputRate in PLL configuration structure for setup

#define PLL_SETUPFLAG_POWERUP   (1U << 0U)

Setup will power on the PLL after setup

Enumeration Type Documentation

Enumerator
kCLOCK_IpInvalid 

Invalid Ip Name.

kCLOCK_Rom 

Clock gate name: Rom.

kCLOCK_Sram1 

Clock gate name: Sram1.

kCLOCK_Sram2 

Clock gate name: Sram2.

kCLOCK_Flash 

Clock gate name: Flash.

kCLOCK_Fmc 

Clock gate name: Fmc.

kCLOCK_InputMux 

Clock gate name: InputMux.

kCLOCK_Iocon 

Clock gate name: Iocon.

kCLOCK_Gpio0 

Clock gate name: Gpio0.

kCLOCK_Gpio1 

Clock gate name: Gpio1.

kCLOCK_Pint 

Clock gate name: Pint.

kCLOCK_Gint 

Clock gate name: Gint.

kCLOCK_Dma0 

Clock gate name: Dma0.

kCLOCK_Crc 

Clock gate name: Crc.

kCLOCK_Wwdt 

Clock gate name: Wwdt.

kCLOCK_Rtc 

Clock gate name: Rtc.

kCLOCK_Mailbox 

Clock gate name: Mailbox.

kCLOCK_Adc0 

Clock gate name: Adc0.

kCLOCK_Mrt 

Clock gate name: Mrt.

kCLOCK_OsTimer0 

Clock gate name: OsTimer0.

kCLOCK_Sct0 

Clock gate name: Sct0.

kCLOCK_Mcan 

Clock gate name: Mcan.

kCLOCK_Utick0 

Clock gate name: Utick0.

kCLOCK_FlexComm0 

Clock gate name: FlexComm0.

kCLOCK_FlexComm1 

Clock gate name: FlexComm1.

kCLOCK_FlexComm2 

Clock gate name: FlexComm2.

kCLOCK_FlexComm3 

Clock gate name: FlexComm3.

kCLOCK_FlexComm4 

Clock gate name: FlexComm4.

kCLOCK_FlexComm5 

Clock gate name: FlexComm5.

kCLOCK_FlexComm6 

Clock gate name: FlexComm6.

kCLOCK_FlexComm7 

Clock gate name: FlexComm7.

kCLOCK_MinUart0 

Clock gate name: MinUart0.

kCLOCK_MinUart1 

Clock gate name: MinUart1.

kCLOCK_MinUart2 

Clock gate name: MinUart2.

kCLOCK_MinUart3 

Clock gate name: MinUart3.

kCLOCK_MinUart4 

Clock gate name: MinUart4.

kCLOCK_MinUart5 

Clock gate name: MinUart5.

kCLOCK_MinUart6 

Clock gate name: MinUart6.

kCLOCK_MinUart7 

Clock gate name: MinUart7.

kCLOCK_LSpi0 

Clock gate name: LSpi0.

kCLOCK_LSpi1 

Clock gate name: LSpi1.

kCLOCK_LSpi2 

Clock gate name: LSpi2.

kCLOCK_LSpi3 

Clock gate name: LSpi3.

kCLOCK_LSpi4 

Clock gate name: LSpi4.

kCLOCK_LSpi5 

Clock gate name: LSpi5.

kCLOCK_LSpi6 

Clock gate name: LSpi6.

kCLOCK_LSpi7 

Clock gate name: LSpi7.

kCLOCK_BI2c0 

Clock gate name: BI2c0.

kCLOCK_BI2c1 

Clock gate name: BI2c1.

kCLOCK_BI2c2 

Clock gate name: BI2c2.

kCLOCK_BI2c3 

Clock gate name: BI2c3.

kCLOCK_BI2c4 

Clock gate name: BI2c4.

kCLOCK_BI2c5 

Clock gate name: BI2c5.

kCLOCK_BI2c6 

Clock gate name: BI2c6.

kCLOCK_BI2c7 

Clock gate name: BI2c7.

kCLOCK_FlexI2s0 

Clock gate name: FlexI2s0.

kCLOCK_FlexI2s1 

Clock gate name: FlexI2s1.

kCLOCK_FlexI2s2 

Clock gate name: FlexI2s2.

kCLOCK_FlexI2s3 

Clock gate name: FlexI2s3.

kCLOCK_FlexI2s4 

Clock gate name: FlexI2s4.

kCLOCK_FlexI2s5 

Clock gate name: FlexI2s5.

kCLOCK_FlexI2s6 

Clock gate name: FlexI2s6.

kCLOCK_FlexI2s7 

Clock gate name: FlexI2s7.

kCLOCK_Timer2 

Clock gate name: Timer2.

kCLOCK_Usbd0 

Clock gate name: Usbd0.

kCLOCK_Timer0 

Clock gate name: Timer0.

kCLOCK_Timer1 

Clock gate name: Timer1.

kCLOCK_Ezha 

Clock gate name: Ezha.

kCLOCK_Ezhb 

Clock gate name: Ezhb.

kCLOCK_Dma1 

Clock gate name: Dma1.

kCLOCK_Comp 

Clock gate name: Comp.

kCLOCK_Usbh1 

Clock gate name: Usbh1.

kCLOCK_Usbd1 

Clock gate name: Usbd1.

kCLOCK_UsbRam1 

Clock gate name: UsbRam1.

kCLOCK_Usb1Clk 

Clock gate name: Usb1Clk.

kCLOCK_Freqme 

Clock gate name: Freqme.

kCLOCK_Cdog 

Clock gate name: Cdog.

kCLOCK_Rng 

Clock gate name: Rng.

kCLOCK_Sysctl 

Clock gate name: Sysctl.

kCLOCK_Usbhmr0 

Clock gate name: Usbhmr0.

kCLOCK_Usbhsl0 

Clock gate name: Usbhsl0.

kCLOCK_HashCrypt 

Clock gate name: HashCrypt.

kCLOCK_PluLut 

Clock gate name: PluLut.

kCLOCK_Timer3 

Clock gate name: Timer3.

kCLOCK_Timer4 

Clock gate name: Timer4.

kCLOCK_Puf 

Clock gate name: Puf.

kCLOCK_Casper 

Clock gate name: Casper.

kCLOCK_AnalogCtrl 

Clock gate name: AnalogCtrl.

kCLOCK_Hs_Lspi 

Clock gate name: Lspi.

kCLOCK_Gpio_Sec 

Clock gate name: GPIO Sec.

kCLOCK_Gpio_Sec_Int 

Clock gate name: GPIO SEC Int.

Enumerator
kCLOCK_CoreSysClk 

Core/system clock (aka MAIN_CLK)

kCLOCK_BusClk 

Bus clock (AHB clock)

kCLOCK_ClockOut 

CLOCKOUT.

kCLOCK_FroHf 

FRO48/96.

kCLOCK_Pll1Out 

PLL1 Output.

kCLOCK_Mclk 

MCLK.

kCLOCK_Fro12M 

FRO12M.

kCLOCK_Fro1M 

FRO1M.

kCLOCK_ExtClk 

External Clock.

kCLOCK_Pll0Out 

PLL0 Output.

kCLOCK_FlexI2S 

FlexI2S clock.

Enumerator
kFRO12M_to_MAIN_CLK 

Attach FRO12M to MAIN_CLK.

kEXT_CLK_to_MAIN_CLK 

Attach EXT_CLK to MAIN_CLK.

kFRO1M_to_MAIN_CLK 

Attach FRO1M to MAIN_CLK.

kFRO_HF_to_MAIN_CLK 

Attach FRO_HF to MAIN_CLK.

kPLL0_to_MAIN_CLK 

Attach PLL0 to MAIN_CLK.

kPLL1_to_MAIN_CLK 

Attach PLL1 to MAIN_CLK.

kOSC32K_to_MAIN_CLK 

Attach OSC32K to MAIN_CLK.

kMAIN_CLK_to_CLKOUT 

Attach MAIN_CLK to CLKOUT.

kPLL0_to_CLKOUT 

Attach PLL0 to CLKOUT.

kEXT_CLK_to_CLKOUT 

Attach EXT_CLK to CLKOUT.

kFRO_HF_to_CLKOUT 

Attach FRO_HF to CLKOUT.

kFRO1M_to_CLKOUT 

Attach FRO1M to CLKOUT.

kPLL1_to_CLKOUT 

Attach PLL1 to CLKOUT.

kOSC32K_to_CLKOUT 

Attach OSC32K to CLKOUT.

kNONE_to_SYS_CLKOUT 

Attach NONE to SYS_CLKOUT.

kFRO12M_to_PLL0 

Attach FRO12M to PLL0.

kEXT_CLK_to_PLL0 

Attach EXT_CLK to PLL0.

kFRO1M_to_PLL0 

Attach FRO1M to PLL0.

kOSC32K_to_PLL0 

Attach OSC32K to PLL0.

kNONE_to_PLL0 

Attach NONE to PLL0.

kMCAN_DIV_to_MCAN 

Attach MCAN_DIV to MCAN.

kFRO1M_to_MCAN 

Attach FRO1M to MCAN.

kOSC32K_to_MCAN 

Attach OSC32K to MCAN.

kNONE_to_MCAN 

Attach NONE to MCAN.

kMAIN_CLK_to_ADC_CLK 

Attach MAIN_CLK to ADC_CLK.

kPLL0_to_ADC_CLK 

Attach PLL0 to ADC_CLK.

kFRO_HF_to_ADC_CLK 

Attach FRO_HF to ADC_CLK.

kEXT_CLK_to_ADC_CLK 

Attach EXT_CLK to ADC_CLK.

kNONE_to_ADC_CLK 

Attach NONE to ADC_CLK.

kMAIN_CLK_to_USB0_CLK 

Attach MAIN_CLK to USB0_CLK.

kPLL0_to_USB0_CLK 

Attach PLL0 to USB0_CLK.

kFRO_HF_to_USB0_CLK 

Attach FRO_HF to USB0_CLK.

kPLL1_to_USB0_CLK 

Attach PLL1 to USB0_CLK.

kNONE_to_USB0_CLK 

Attach NONE to USB0_CLK.

kOSC32K_to_CLK32K 

Attach OSC32K to CLK32K.

kFRO1MDIV_to_CLK32K 

Attach FRO1MDIV to CLK32K.

kNONE_to_CLK32K 

Attach NONE to CLK32K.

kMAIN_CLK_to_FLEXCOMM0 

Attach MAIN_CLK to FLEXCOMM0.

kPLL0_DIV_to_FLEXCOMM0 

Attach PLL0_DIV to FLEXCOMM0.

kFRO12M_to_FLEXCOMM0 

Attach FRO12M to FLEXCOMM0.

kFRO_HF_DIV_to_FLEXCOMM0 

Attach FRO_HF_DIV to FLEXCOMM0.

kFRO1M_to_FLEXCOMM0 

Attach FRO1M to FLEXCOMM0.

kMCLK_to_FLEXCOMM0 

Attach MCLK to FLEXCOMM0.

kOSC32K_to_FLEXCOMM0 

Attach OSC32K to FLEXCOMM0.

kNONE_to_FLEXCOMM0 

Attach NONE to FLEXCOMM0.

kMAIN_CLK_to_FLEXCOMM1 

Attach MAIN_CLK to FLEXCOMM1.

kPLL0_DIV_to_FLEXCOMM1 

Attach PLL0_DIV to FLEXCOMM1.

kFRO12M_to_FLEXCOMM1 

Attach FRO12M to FLEXCOMM1.

kFRO_HF_DIV_to_FLEXCOMM1 

Attach FRO_HF_DIV to FLEXCOMM1.

kFRO1M_to_FLEXCOMM1 

Attach FRO1M to FLEXCOMM1.

kMCLK_to_FLEXCOMM1 

Attach MCLK to FLEXCOMM1.

kOSC32K_to_FLEXCOMM1 

Attach OSC32K to FLEXCOMM1.

kNONE_to_FLEXCOMM1 

Attach NONE to FLEXCOMM1.

kMAIN_CLK_to_FLEXCOMM2 

Attach MAIN_CLK to FLEXCOMM2.

kPLL0_DIV_to_FLEXCOMM2 

Attach PLL0_DIV to FLEXCOMM2.

kFRO12M_to_FLEXCOMM2 

Attach FRO12M to FLEXCOMM2.

kFRO_HF_DIV_to_FLEXCOMM2 

Attach FRO_HF_DIV to FLEXCOMM2.

kFRO1M_to_FLEXCOMM2 

Attach FRO1M to FLEXCOMM2.

kMCLK_to_FLEXCOMM2 

Attach MCLK to FLEXCOMM2.

kOSC32K_to_FLEXCOMM2 

Attach OSC32K to FLEXCOMM2.

kNONE_to_FLEXCOMM2 

Attach NONE to FLEXCOMM2.

kMAIN_CLK_to_FLEXCOMM3 

Attach MAIN_CLK to FLEXCOMM3.

kPLL0_DIV_to_FLEXCOMM3 

Attach PLL0_DIV to FLEXCOMM3.

kFRO12M_to_FLEXCOMM3 

Attach FRO12M to FLEXCOMM3.

kFRO_HF_DIV_to_FLEXCOMM3 

Attach FRO_HF_DIV to FLEXCOMM3.

kFRO1M_to_FLEXCOMM3 

Attach FRO1M to FLEXCOMM3.

kMCLK_to_FLEXCOMM3 

Attach MCLK to FLEXCOMM3.

kOSC32K_to_FLEXCOMM3 

Attach OSC32K to FLEXCOMM3.

kNONE_to_FLEXCOMM3 

Attach NONE to FLEXCOMM3.

kMAIN_CLK_to_FLEXCOMM4 

Attach MAIN_CLK to FLEXCOMM4.

kPLL0_DIV_to_FLEXCOMM4 

Attach PLL0_DIV to FLEXCOMM4.

kFRO12M_to_FLEXCOMM4 

Attach FRO12M to FLEXCOMM4.

kFRO_HF_DIV_to_FLEXCOMM4 

Attach FRO_HF_DIV to FLEXCOMM4.

kFRO1M_to_FLEXCOMM4 

Attach FRO1M to FLEXCOMM4.

kMCLK_to_FLEXCOMM4 

Attach MCLK to FLEXCOMM4.

kOSC32K_to_FLEXCOMM4 

Attach OSC32K to FLEXCOMM4.

kNONE_to_FLEXCOMM4 

Attach NONE to FLEXCOMM4.

kMAIN_CLK_to_FLEXCOMM5 

Attach MAIN_CLK to FLEXCOMM5.

kPLL0_DIV_to_FLEXCOMM5 

Attach PLL0_DIV to FLEXCOMM5.

kFRO12M_to_FLEXCOMM5 

Attach FRO12M to FLEXCOMM5.

kFRO_HF_DIV_to_FLEXCOMM5 

Attach FRO_HF_DIV to FLEXCOMM5.

kFRO1M_to_FLEXCOMM5 

Attach FRO1M to FLEXCOMM5.

kMCLK_to_FLEXCOMM5 

Attach MCLK to FLEXCOMM5.

kOSC32K_to_FLEXCOMM5 

Attach OSC32K to FLEXCOMM5.

kNONE_to_FLEXCOMM5 

Attach NONE to FLEXCOMM5.

kMAIN_CLK_to_FLEXCOMM6 

Attach MAIN_CLK to FLEXCOMM6.

kPLL0_DIV_to_FLEXCOMM6 

Attach PLL0_DIV to FLEXCOMM6.

kFRO12M_to_FLEXCOMM6 

Attach FRO12M to FLEXCOMM6.

kFRO_HF_DIV_to_FLEXCOMM6 

Attach FRO_HF_DIV to FLEXCOMM6.

kFRO1M_to_FLEXCOMM6 

Attach FRO1M to FLEXCOMM6.

kMCLK_to_FLEXCOMM6 

Attach MCLK to FLEXCOMM6.

kOSC32K_to_FLEXCOMM6 

Attach OSC32K to FLEXCOMM6.

kNONE_to_FLEXCOMM6 

Attach NONE to FLEXCOMM6.

kMAIN_CLK_to_FLEXCOMM7 

Attach MAIN_CLK to FLEXCOMM7.

kPLL0_DIV_to_FLEXCOMM7 

Attach PLL0_DIV to FLEXCOMM7.

kFRO12M_to_FLEXCOMM7 

Attach FRO12M to FLEXCOMM7.

kFRO_HF_DIV_to_FLEXCOMM7 

Attach FRO_HF_DIV to FLEXCOMM7.

kFRO1M_to_FLEXCOMM7 

Attach FRO1M to FLEXCOMM7.

kMCLK_to_FLEXCOMM7 

Attach MCLK to FLEXCOMM7.

kOSC32K_to_FLEXCOMM7 

Attach OSC32K to FLEXCOMM7.

kNONE_to_FLEXCOMM7 

Attach NONE to FLEXCOMM7.

kMAIN_CLK_to_HSLSPI 

Attach MAIN_CLK to HSLSPI.

kPLL0_DIV_to_HSLSPI 

Attach PLL0_DIV to HSLSPI.

kFRO12M_to_HSLSPI 

Attach FRO12M to HSLSPI.

kFRO_HF_DIV_to_HSLSPI 

Attach FRO_HF_DIV to HSLSPI.

kFRO1M_to_HSLSPI 

Attach FRO1M to HSLSPI.

kOSC32K_to_HSLSPI 

Attach OSC32K to HSLSPI.

kNONE_to_HSLSPI 

Attach NONE to HSLSPI.

kFRO_HF_to_MCLK 

Attach FRO_HF to MCLK.

kPLL0_to_MCLK 

Attach PLL0 to MCLK.

kNONE_to_MCLK 

Attach NONE to MCLK.

kMAIN_CLK_to_SCT_CLK 

Attach MAIN_CLK to SCT_CLK.

kPLL0_to_SCT_CLK 

Attach PLL0 to SCT_CLK.

kEXT_CLK_to_SCT_CLK 

Attach EXT_CLK to SCT_CLK.

kFRO_HF_to_SCT_CLK 

Attach FRO_HF to SCT_CLK.

kMCLK_to_SCT_CLK 

Attach MCLK to SCT_CLK.

kNONE_to_SCT_CLK 

Attach NONE to SCT_CLK.

kFRO32K_to_OSC32K 

Attach FRO32K to OSC32K.

kXTAL32K_to_OSC32K 

Attach XTAL32K to OSC32K.

kOSC32K_to_OSTIMER 

Attach OSC32K to OSTIMER.

kFRO1M_to_OSTIMER 

Attach FRO1M to OSTIMER.

kMAIN_CLK_to_OSTIMER 

Attach MAIN_CLK to OSTIMER.

kTRACE_DIV_to_TRACE 

Attach TRACE_DIV to TRACE.

kFRO1M_to_TRACE 

Attach FRO1M to TRACE.

kOSC32K_to_TRACE 

Attach OSC32K to TRACE.

kNONE_to_TRACE 

Attach NONE to TRACE.

kSYSTICK_DIV0_to_SYSTICK0 

Attach SYSTICK_DIV0 to SYSTICK0.

kFRO1M_to_SYSTICK0 

Attach FRO1M to SYSTICK0.

kOSC32K_to_SYSTICK0 

Attach OSC32K to SYSTICK0.

kNONE_to_SYSTICK0 

Attach NONE to SYSTICK0.

kFRO12M_to_PLL1 

Attach FRO12M to PLL1.

kEXT_CLK_to_PLL1 

Attach EXT_CLK to PLL1.

kFRO1M_to_PLL1 

Attach FRO1M to PLL1.

kOSC32K_to_PLL1 

Attach OSC32K to PLL1.

kNONE_to_PLL1 

Attach NONE to PLL1.

kMAIN_CLK_to_CTIMER0 

Attach MAIN_CLK to CTIMER0.

kPLL0_to_CTIMER0 

Attach PLL0 to CTIMER0.

kFRO_HF_to_CTIMER0 

Attach FRO_HF to CTIMER0.

kFRO1M_to_CTIMER0 

Attach FRO1M to CTIMER0.

kMCLK_to_CTIMER0 

Attach MCLK to CTIMER0.

kOSC32K_to_CTIMER0 

Attach OSC32K to CTIMER0.

kNONE_to_CTIMER0 

Attach NONE to CTIMER0.

kMAIN_CLK_to_CTIMER1 

Attach MAIN_CLK to CTIMER1.

kPLL0_to_CTIMER1 

Attach PLL0 to CTIMER1.

kFRO_HF_to_CTIMER1 

Attach FRO_HF to CTIMER1.

kFRO1M_to_CTIMER1 

Attach FRO1M to CTIMER1.

kMCLK_to_CTIMER1 

Attach MCLK to CTIMER1.

kOSC32K_to_CTIMER1 

Attach OSC32K to CTIMER1.

kNONE_to_CTIMER1 

Attach NONE to CTIMER1.

kMAIN_CLK_to_CTIMER2 

Attach MAIN_CLK to CTIMER2.

kPLL0_to_CTIMER2 

Attach PLL0 to CTIMER2.

kFRO_HF_to_CTIMER2 

Attach FRO_HF to CTIMER2.

kFRO1M_to_CTIMER2 

Attach FRO1M to CTIMER2.

kMCLK_to_CTIMER2 

Attach MCLK to CTIMER2.

kOSC32K_to_CTIMER2 

Attach OSC32K to CTIMER2.

kNONE_to_CTIMER2 

Attach NONE to CTIMER2.

kMAIN_CLK_to_CTIMER3 

Attach MAIN_CLK to CTIMER3.

kPLL0_to_CTIMER3 

Attach PLL0 to CTIMER3.

kFRO_HF_to_CTIMER3 

Attach FRO_HF to CTIMER3.

kFRO1M_to_CTIMER3 

Attach FRO1M to CTIMER3.

kMCLK_to_CTIMER3 

Attach MCLK to CTIMER3.

kOSC32K_to_CTIMER3 

Attach OSC32K to CTIMER3.

kNONE_to_CTIMER3 

Attach NONE to CTIMER3.

kMAIN_CLK_to_CTIMER4 

Attach MAIN_CLK to CTIMER4.

kPLL0_to_CTIMER4 

Attach PLL0 to CTIMER4.

kFRO_HF_to_CTIMER4 

Attach FRO_HF to CTIMER4.

kFRO1M_to_CTIMER4 

Attach FRO1M to CTIMER4.

kMCLK_to_CTIMER4 

Attach MCLK to CTIMER4.

kOSC32K_to_CTIMER4 

Attach OSC32K to CTIMER4.

kNONE_to_CTIMER4 

Attach NONE to CTIMER4.

kNONE_to_NONE 

Attach NONE to NONE.

Enumerator
kCLOCK_DivSystickClk0 

Systick Clk0 Divider.

kCLOCK_DivArmTrClkDiv 

Arm Tr Clk Div Divider.

kCLOCK_DivCanClk 

Can Clock Divider.

kCLOCK_DivFlexFrg0 

Flex Frg0 Divider.

kCLOCK_DivFlexFrg1 

Flex Frg1 Divider.

kCLOCK_DivFlexFrg2 

Flex Frg2 Divider.

kCLOCK_DivFlexFrg3 

Flex Frg3 Divider.

kCLOCK_DivFlexFrg4 

Flex Frg4 Divider.

kCLOCK_DivFlexFrg5 

Flex Frg5 Divider.

kCLOCK_DivFlexFrg6 

Flex Frg6 Divider.

kCLOCK_DivFlexFrg7 

Flex Frg7 Divider.

kCLOCK_DivAhbClk 

Ahb Clock Divider.

kCLOCK_DivClkOut 

Clk Out Divider.

kCLOCK_DivFrohfClk 

Frohf Clock Divider.

kCLOCK_DivWdtClk 

Wdt Clock Divider.

kCLOCK_DivAdcAsyncClk 

Adc Async Clock Divider.

kCLOCK_DivUsb0Clk 

Usb0 Clock Divider.

kCLOCK_DivFro1mClk 

Fro1m Clock Divider.

kCLOCK_DivMClk 

I2S MCLK Clock Divider.

kCLOCK_DivSctClk 

Sct Clock Divider.

kCLOCK_DivPll0Clk 

PLL clock divider.

Enumerator
kSS_MF_512 

Nss = 512 (fm ? 3.9 - 7.8 kHz)

kSS_MF_384 

Nss ?= 384 (fm ? 5.2 - 10.4 kHz)

kSS_MF_256 

Nss = 256 (fm ? 7.8 - 15.6 kHz)

kSS_MF_128 

Nss = 128 (fm ? 15.6 - 31.3 kHz)

kSS_MF_64 

Nss = 64 (fm ? 32.3 - 64.5 kHz)

kSS_MF_32 

Nss = 32 (fm ? 62.5- 125 kHz)

kSS_MF_24 

Nss ?= 24 (fm ? 83.3- 166.6 kHz)

kSS_MF_16 

Nss = 16 (fm ? 125- 250 kHz)

Enumerator
kSS_MR_K0 

k = 0 (no spread spectrum)

kSS_MR_K1 

k = 1

kSS_MR_K1_5 

k = 1.5

kSS_MR_K2 

k = 2

kSS_MR_K3 

k = 3

kSS_MR_K4 

k = 4

kSS_MR_K6 

k = 6

kSS_MR_K8 

k = 8


Compensation for low pass filtering of the PLL to get a triangular modulation at the output of the PLL, giving a flat frequency spectrum.

Enumerator
kSS_MC_NOC 

no compensation

kSS_MC_RECC 

recommended setting

kSS_MC_MAXC 

max.

compensation

Enumerator
kStatus_PLL_Success 

PLL operation was successful.

kStatus_PLL_OutputTooLow 

PLL output rate request was too low.

kStatus_PLL_OutputTooHigh 

PLL output rate request was too high.

kStatus_PLL_InputTooLow 

PLL input rate is too low.

kStatus_PLL_InputTooHigh 

PLL input rate is too high.

kStatus_PLL_OutsideIntLimit 

Requested output rate isn't possible.

kStatus_PLL_CCOTooLow 

Requested CCO rate isn't possible.

kStatus_PLL_CCOTooHigh 

Requested CCO rate isn't possible.

Enumerator
kCLOCK_UsbfsSrcFro 

Use FRO 96 MHz.

kCLOCK_UsbfsSrcPll0 

Use PLL0 output.

kCLOCK_UsbfsSrcMainClock 

Use Main clock.

kCLOCK_UsbfsSrcPll1 

Use PLL1 clock.

kCLOCK_UsbfsSrcNone 

this may be selected in order to reduce power when no output is needed.

Enumerator
kCLOCK_UsbSrcUnused 

Used when the function does not care the clock source.

Enumerator
kCLOCK_UsbPhySrcExt 

Use external crystal.

Function Documentation

static void CLOCK_EnableClock ( clock_ip_name_t  clk)
inlinestatic
Parameters
clk: Clock to be enabled.
Returns
Nothing
static void CLOCK_DisableClock ( clock_ip_name_t  clk)
inlinestatic
Parameters
clk: Clock to be Disabled.
Returns
Nothing
status_t CLOCK_SetupFROClocking ( uint32_t  iFreq)
Parameters
iFreq: Desired frequency (must be one of CLK_FRO_12MHZ or CLK_FRO_48MHZ or CLK_FRO_96MHZ)
Returns
returns success or fail status.
void CLOCK_SetFLASHAccessCyclesForFreq ( uint32_t  system_freq_hz)
Parameters
system_freq_hz: Input frequency
Returns
Nothing
status_t CLOCK_SetupExtClocking ( uint32_t  iFreq)
Parameters
iFreq: Desired frequency (must be equal to exact rate in Hz)
Returns
returns success or fail status.
status_t CLOCK_SetupI2SMClkClocking ( uint32_t  iFreq)
Parameters
iFreq: Desired frequency (must be equal to exact rate in Hz)
Returns
returns success or fail status.
status_t CLOCK_SetupPLUClkInClocking ( uint32_t  iFreq)
Parameters
iFreq: Desired frequency (must be equal to exact rate in Hz)
Returns
returns success or fail status.
void CLOCK_AttachClk ( clock_attach_id_t  connection)
Parameters
connection: Clock to be configured.
Returns
Nothing
clock_attach_id_t CLOCK_GetClockAttachId ( clock_attach_id_t  attachId)
Parameters
attachId: Clock attach id to get.
Returns
Clock source value.
void CLOCK_SetClkDiv ( clock_div_name_t  div_name,
uint32_t  divided_by_value,
bool  reset 
)
Parameters
div_name: Clock divider name
divided_by_value,:Value to be divided
reset: Whether to reset the divider counter.
Returns
Nothing
void CLOCK_SetRtc1khzClkDiv ( uint32_t  divided_by_value)
Parameters
divided_by_value,:Value to be divided
Returns
Nothing
void CLOCK_SetRtc1hzClkDiv ( uint32_t  divided_by_value)
Parameters
divided_by_value,:Value to be divided
Returns
Nothing
uint32_t CLOCK_SetFlexCommClock ( uint32_t  id,
uint32_t  freq 
)
Parameters
id: flexcomm instance id
freq: output frequency
Returns
0 : the frequency range is out of range. 1 : switch successfully.
uint32_t CLOCK_GetFlexCommInputClock ( uint32_t  id)
Parameters
id: flexcomm instance id
Returns
Frequency value
uint32_t CLOCK_GetFreq ( clock_name_t  clockName)
Returns
Frequency of selected clock
uint32_t CLOCK_GetFro12MFreq ( void  )
Returns
Frequency of FRO 12MHz
uint32_t CLOCK_GetFro1MFreq ( void  )
Returns
Frequency of FRO 1MHz
uint32_t CLOCK_GetClockOutClkFreq ( void  )
Returns
Frequency of ClockOut
uint32_t CLOCK_GetMCanClkFreq ( void  )
Returns
Frequency of Can.
uint32_t CLOCK_GetAdcClkFreq ( void  )
Returns
Frequency of Adc.
uint32_t CLOCK_GetUsb0ClkFreq ( void  )
Returns
Frequency of Usb0 Clock.
uint32_t CLOCK_GetUsb1ClkFreq ( void  )
Returns
Frequency of Usb1 Clock.
uint32_t CLOCK_GetMclkClkFreq ( void  )
Returns
Frequency of MClk Clock.
uint32_t CLOCK_GetSctClkFreq ( void  )
Returns
Frequency of SCTimer Clock.
uint32_t CLOCK_GetExtClkFreq ( void  )
Returns
Frequency of External Clock. If no external clock is used returns 0.
uint32_t CLOCK_GetWdtClkFreq ( void  )
Returns
Frequency of Watchdog
uint32_t CLOCK_GetFroHfFreq ( void  )
Returns
Frequency of High-Freq output of FRO
uint32_t CLOCK_GetPll0OutFreq ( void  )
Returns
Frequency of PLL
uint32_t CLOCK_GetPll1OutFreq ( void  )
Returns
Frequency of PLL
uint32_t CLOCK_GetOsc32KFreq ( void  )
Returns
Frequency of 32kHz osc
uint32_t CLOCK_GetCoreSysClkFreq ( void  )
Returns
Frequency of Core System
uint32_t CLOCK_GetI2SMClkFreq ( void  )
Returns
Frequency of I2S MCLK Clock
uint32_t CLOCK_GetPLUClkInFreq ( void  )
Returns
Frequency of PLU CLKIN Clock
uint32_t CLOCK_GetFlexCommClkFreq ( uint32_t  id)
Returns
Frequency of FlexComm Clock
uint32_t CLOCK_GetHsLspiClkFreq ( void  )
Returns
Frequency of High speed SPI Clock
uint32_t CLOCK_GetCTimerClkFreq ( uint32_t  id)
Returns
Frequency of CTimer functional Clock
uint32_t CLOCK_GetSystickClkFreq ( uint32_t  id)
Returns
Frequency of Systick Clock
uint32_t CLOCK_GetPLL0InClockRate ( void  )
Returns
PLL0 input clock rate
uint32_t CLOCK_GetPLL1InClockRate ( void  )
Returns
PLL1 input clock rate
uint32_t CLOCK_GetPLL0OutClockRate ( bool  recompute)
Parameters
recompute: Forces a PLL rate recomputation if true
Returns
PLL0 output clock rate
Note
The PLL rate is cached in the driver in a variable as the rate computation function can take some time to perform. It is recommended to use 'false' with the 'recompute' parameter.
uint32_t CLOCK_GetPLL1OutClockRate ( bool  recompute)
Parameters
recompute: Forces a PLL rate recomputation if true
Returns
PLL1 output clock rate
Note
The PLL rate is cached in the driver in a variable as the rate computation function can take some time to perform. It is recommended to use 'false' with the 'recompute' parameter.
__STATIC_INLINE void CLOCK_SetBypassPLL0 ( bool  bypass)

bypass : true to bypass PLL0 (PLL0 output = PLL0 input, false to disable bypass

Returns
PLL0 output clock rate
__STATIC_INLINE void CLOCK_SetBypassPLL1 ( bool  bypass)

bypass : true to bypass PLL1 (PLL1 output = PLL1 input, false to disable bypass

Returns
PLL1 output clock rate
__STATIC_INLINE bool CLOCK_IsPLL0Locked ( void  )
Returns
true if the PLL is locked, false if not locked
__STATIC_INLINE bool CLOCK_IsPLL1Locked ( void  )
Returns
true if the PLL1 is locked, false if not locked
void CLOCK_SetStoredPLL0ClockRate ( uint32_t  rate)
Parameters
rate,:Current rate of the PLL0
Returns
Nothing
uint32_t CLOCK_GetPLL0OutFromSetup ( pll_setup_t pSetup)
Parameters
pSetup: Pointer to a PLL setup structure
Returns
System PLL output clock rate the setup structure will generate
uint32_t CLOCK_GetPLL1OutFromSetup ( pll_setup_t pSetup)
Parameters
pSetup: Pointer to a PLL setup structure
Returns
PLL0 output clock rate the setup structure will generate
pll_error_t CLOCK_SetupPLL0Data ( pll_config_t pControl,
pll_setup_t pSetup 
)
Parameters
pControl: Pointer to populated PLL control structure to generate setup with
pSetup: Pointer to PLL setup structure to be filled
Returns
PLL_ERROR_SUCCESS on success, or PLL setup error code
Note
Actual frequency for setup may vary from the desired frequency based on the accuracy of input clocks, rounding, non-fractional PLL mode, etc.
pll_error_t CLOCK_SetupPLL0Prec ( pll_setup_t pSetup,
uint32_t  flagcfg 
)
Parameters
pSetup: Pointer to populated PLL setup structure
flagcfg: Flag configuration for PLL config structure
Returns
PLL_ERROR_SUCCESS on success, or PLL setup error code
Note
This function will power off the PLL, setup the PLL with the new setup data, and then optionally powerup the PLL, wait for PLL lock, and adjust system voltages to the new PLL rate. The function will not alter any source clocks (ie, main systen clock) that may use the PLL, so these should be setup prior to and after exiting the function.
pll_error_t CLOCK_SetPLL0Freq ( const pll_setup_t pSetup)
Parameters
pSetup: Pointer to populated PLL setup structure
Returns
kStatus_PLL_Success on success, or PLL setup error code
Note
This function will power off the PLL, setup the PLL with the new setup data, and then optionally powerup the PLL, wait for PLL lock, and adjust system voltages to the new PLL rate. The function will not alter any source clocks (ie, main systen clock) that may use the PLL, so these should be setup prior to and after exiting the function.
pll_error_t CLOCK_SetPLL1Freq ( const pll_setup_t pSetup)
Parameters
pSetup: Pointer to populated PLL setup structure
Returns
kStatus_PLL_Success on success, or PLL setup error code
Note
This function will power off the PLL, setup the PLL with the new setup data, and then optionally powerup the PLL, wait for PLL lock, and adjust system voltages to the new PLL rate. The function will not alter any source clocks (ie, main systen clock) that may use the PLL, so these should be setup prior to and after exiting the function.
void CLOCK_SetupPLL0Mult ( uint32_t  multiply_by,
uint32_t  input_freq 
)
Parameters
multiply_by: multiplier
input_freq: Clock input frequency of the PLL
Returns
Nothing
Note
Unlike the Chip_Clock_SetupSystemPLLPrec() function, this function does not disable or enable PLL power, wait for PLL lock, or adjust system voltages. These must be done in the application. The function will not alter any source clocks (ie, main systen clock) that may use the PLL, so these should be setup prior to and after exiting the function.
static void CLOCK_DisableUsbDevicefs0Clock ( clock_ip_name_t  clk)
inlinestatic

Disable USB clock.

bool CLOCK_EnableUsbfs0DeviceClock ( clock_usbfs_src_t  src,
uint32_t  freq 
)
Parameters
src: clock source
freq,:clock frequency Enable USB Device Full Speed clock.
bool CLOCK_EnableUsbfs0HostClock ( clock_usbfs_src_t  src,
uint32_t  freq 
)
Parameters
src: clock source
freq,:clock frequency Enable USB HOST Full Speed clock.
bool CLOCK_EnableUsbhs0PhyPllClock ( clock_usb_phy_src_t  src,
uint32_t  freq 
)

Enable USB phy clock.

bool CLOCK_EnableUsbhs0DeviceClock ( clock_usbhs_src_t  src,
uint32_t  freq 
)

Enable USB Device High Speed clock.

bool CLOCK_EnableUsbhs0HostClock ( clock_usbhs_src_t  src,
uint32_t  freq 
)

Enable USB HOST High Speed clock.

void CLOCK_EnableOstimer32kClock ( void  )
Returns
Nothing