CMU
Detailed Description
Clock management unit (CMU) Peripheral API.
This module contains functions for the CMU peripheral of Silicon Labs 32-bit MCUs and SoCs. The CMU module controls oscillators, clocks gates, clock multiplexers, pre-scalers, calibration modules and wait-states.
Data Structures |
|
struct | CMU_DPLLInit_TypeDef |
struct | CMU_HFXOInit_TypeDef |
struct | CMU_LFXOInit_TypeDef |
Macros |
|
#define | CMU_DPLL_HFXO_TO_80MHZ |
#define | CMU_DPLL_LFXO_TO_40MHZ |
#define | CMU_DPLLINIT_DEFAULT |
#define | CMU_HFRCODPLL_MAX cmuHFRCODPLLFreq_80M0Hz |
#define | CMU_HFRCODPLL_MIN cmuHFRCODPLLFreq_1M0Hz |
#define | CMU_HFRCOEM23_MAX cmuHFRCOEM23Freq_40M0Hz |
#define | CMU_HFRCOEM23_MIN cmuHFRCOEM23Freq_1M0Hz |
#define | CMU_HFXOINIT_DEFAULT |
#define | CMU_HFXOINIT_EXTERNAL_SINE |
#define | CMU_LFXOINIT_DEFAULT |
#define | CMU_LFXOINIT_EXTERNAL_CLOCK |
#define | CMU_LFXOINIT_EXTERNAL_SINE |
Typedefs |
|
typedef uint32_t | CMU_ClkDiv_TypeDef |
Functions |
|
uint32_t | CMU_Calibrate (uint32_t cycles, CMU_Select_TypeDef ref) |
Calibrate an oscillator.
|
|
void | CMU_CalibrateConfig (uint32_t downCycles, CMU_Select_TypeDef downSel, CMU_Select_TypeDef upSel) |
Configure clock calibration.
|
|
__STATIC_INLINE void | CMU_CalibrateCont (bool enable) |
Configures continuous calibration mode.
|
|
uint32_t | CMU_CalibrateCountGet (void) |
Get calibration count value.
|
|
__STATIC_INLINE void | CMU_CalibrateStart (void) |
Starts calibration.
|
|
__STATIC_INLINE void | CMU_CalibrateStop (void) |
Stop calibration counters.
|
|
void | CMU_ClkOutPinConfig (uint32_t clkNo, CMU_Select_TypeDef sel, CMU_ClkDiv_TypeDef clkDiv, GPIO_Port_TypeDef port, unsigned int pin) |
Direct a clock to a GPIO pin.
|
|
CMU_ClkDiv_TypeDef | CMU_ClockDivGet ( CMU_Clock_TypeDef clock) |
Get clock divisor.
|
|
void | CMU_ClockDivSet ( CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div) |
Set clock divisor.
|
|
__STATIC_INLINE void | CMU_ClockEnable ( CMU_Clock_TypeDef clock, bool enable) |
Enable/disable a clock.
|
|
uint32_t | CMU_ClockFreqGet ( CMU_Clock_TypeDef clock) |
Get clock frequency for a clock point.
|
|
CMU_Select_TypeDef | CMU_ClockSelectGet ( CMU_Clock_TypeDef clock) |
Get currently selected reference clock used for a clock branch.
|
|
void | CMU_ClockSelectSet ( CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref) |
Select reference clock/oscillator used for a clock branch.
|
|
bool | CMU_DPLLLock (const CMU_DPLLInit_TypeDef *init) |
Lock the DPLL to a given frequency. The frequency is given by: Fout = Fref * (N+1) / (M+1).
|
|
__STATIC_INLINE void | CMU_DPLLUnlock (void) |
Unlock the DPLL.
|
|
CMU_HFRCODPLLFreq_TypeDef | CMU_HFRCODPLLBandGet (void) |
Get HFRCODPLL band in use.
|
|
void | CMU_HFRCODPLLBandSet ( CMU_HFRCODPLLFreq_TypeDef freq) |
Set HFRCODPLL band and the tuning value based on the value in the calibration table made during production.
|
|
CMU_HFRCOEM23Freq_TypeDef | CMU_HFRCOEM23BandGet (void) |
Get HFRCOEM23 band in use.
|
|
void | CMU_HFRCOEM23BandSet ( CMU_HFRCOEM23Freq_TypeDef freq) |
Set HFRCOEM23 band and the tuning value based on the value in the calibration table made during production.
|
|
void | CMU_HFXOInit (const CMU_HFXOInit_TypeDef *hfxoInit) |
Initialize all HFXO control registers.
|
|
__STATIC_INLINE void | CMU_IntClear (uint32_t flags) |
Clear one or more pending CMU interrupt flags.
|
|
__STATIC_INLINE void | CMU_IntDisable (uint32_t flags) |
Disable one or more CMU interrupt sources.
|
|
__STATIC_INLINE void | CMU_IntEnable (uint32_t flags) |
Enable one or more CMU interrupt sources.
|
|
__STATIC_INLINE uint32_t | CMU_IntGet (void) |
Get pending CMU interrupt sources.
|
|
__STATIC_INLINE uint32_t | CMU_IntGetEnabled (void) |
Get enabled and pending CMU interrupt flags.
|
|
__STATIC_INLINE void | CMU_IntSet (uint32_t flags) |
Set one or more pending CMU interrupt sources.
|
|
void | CMU_LFRCOSetPrecision ( CMU_Precision_TypeDef precision) |
Configure the LFRCO precision.
|
|
void | CMU_LFXOInit (const CMU_LFXOInit_TypeDef *lfxoInit) |
Initialize LFXO control registers.
|
|
__STATIC_INLINE void | CMU_Lock (void) |
Lock CMU register access in order to protect registers contents against unintended modification.
|
|
__STATIC_INLINE void | CMU_OscillatorEnable ( CMU_Osc_TypeDef osc, bool enable, bool wait) |
Enable/disable oscillator.
|
|
uint32_t | CMU_OscillatorTuningGet ( CMU_Osc_TypeDef osc) |
Get oscillator frequency tuning setting.
|
|
void | CMU_OscillatorTuningSet ( CMU_Osc_TypeDef osc, uint32_t val) |
Set the oscillator frequency tuning control.
|
|
__STATIC_INLINE uint32_t | CMU_PrescToLog2 (uint32_t presc) |
Convert prescaler dividend to a logarithmic value. It only works for even numbers equal to 2^n.
|
|
__STATIC_INLINE void | CMU_Unlock (void) |
Unlock CMU register access so that writing to registers is possible.
|
|
void | CMU_UpdateWaitStates (uint32_t freq, int vscale) |
Configure wait state settings necessary to switch to a given core clock frequency at a certain voltage scale level.
|
|
__STATIC_INLINE void | CMU_WdogLock (void) |
Lock WDOG register access in order to protect registers contents against unintended modification.
|
|
__STATIC_INLINE void | CMU_WdogUnlock (void) |
Unlock WDOG register access so that writing to registers is possible.
|
|
static void | dpllRefClkGet (uint32_t *freq, CMU_Select_TypeDef *sel) |
Get selected oscillator and frequency for
cmuClock_DPLLREFCLK
clock tree.
|
|
static void | em01GrpaClkGet (uint32_t *freq, CMU_Select_TypeDef *sel) |
Get selected oscillator and frequency for
cmuClock_EM01GRPACLK
clock tree.
|
|
static void | em23GrpaClkGet (uint32_t *freq, CMU_Select_TypeDef *sel) |
Get selected oscillator and frequency for
cmuClock_EM23GRPACLK
clock tree.
|
|
static void | em4GrpaClkGet (uint32_t *freq, CMU_Select_TypeDef *sel) |
Get selected oscillator and frequency for
cmuClock_EM4GRPACLK
clock tree.
|
|
static void | flashWaitStateControl (uint32_t coreFreq, int vscale) |
Configure flash access wait states to support the given core clock frequency and vscale level.
|
|
static uint32_t | HFRCODPLLDevinfoGet ( CMU_HFRCODPLLFreq_TypeDef freq) |
Get calibrated HFRCODPLL tuning value from Device information (DI) page for a given frequency. Calibration value is not available for all frequency bands.
|
|
static void | iadcClkGet (uint32_t *freq, CMU_Select_TypeDef *sel) |
Get selected oscillator and frequency for
cmuClock_IADCCLK
clock tree.
|
|
static void | pclkDivMax (void) |
Set maximum allowed divisor for
cmuClock_PCLK
clock tree.
|
|
static void | pclkDivOptimize (void) |
Set
cmuClock_PCLK
clock tree divisor to achieve highest possible frequency and still be within spec.
|
|
static void | rtccClkGet (uint32_t *freq, CMU_Select_TypeDef *sel) |
Get selected oscillator and frequency for
cmuClock_RTCCCLK
clock tree.
|
|
static void | waitStateMax (void) |
Set wait-states to values valid for maximum allowable core clock frequency.
|
|
static void | wdog0ClkGet (uint32_t *freq, CMU_Select_TypeDef *sel) |
Get selected oscillator and frequency for
cmuClock_WDOG0CLK
clock tree.
|
|
Macro Definition Documentation
#define CMU_DPLL_HFXO_TO_80MHZ |
DPLL initialization values for 80,000,000 Hz using HFXO as reference clock, M = 1919, N = 3999.
Definition at line
661
of file
em_cmu.h
.
Referenced by BSP_initClocks() .
#define CMU_DPLL_LFXO_TO_40MHZ |
DPLL initialization values for 39,998,805 Hz using LFXO as reference clock, M=2 and N=3661.
Definition at line
645
of file
em_cmu.h
.
Referenced by BSP_initClocks() .
#define CMU_DPLLINIT_DEFAULT |
Default configurations for DPLL initialization. When using this macro you need to modify the N and M factor and the desired frequency to match the components placed on the board.
Definition at line
678
of file
em_cmu.h
.
#define CMU_HFRCODPLL_MAX cmuHFRCODPLLFreq_80M0Hz |
HFRCODPLL minimum frequency
Definition at line
138
of file
em_cmu.h
.
#define CMU_HFRCODPLL_MIN cmuHFRCODPLLFreq_1M0Hz |
HFRCODPLL maximum frequency
Definition at line
136
of file
em_cmu.h
.
#define CMU_HFRCOEM23_MAX cmuHFRCOEM23Freq_40M0Hz |
HFRCOEM23 minimum frequency
Definition at line
158
of file
em_cmu.h
.
#define CMU_HFRCOEM23_MIN cmuHFRCOEM23Freq_1M0Hz |
HFRCOEM23 maximum frequency
Definition at line
156
of file
em_cmu.h
.
#define CMU_HFXOINIT_DEFAULT |
Default HFXO initialization values for XTAL mode.
Definition at line
582
of file
em_cmu.h
.
#define CMU_HFXOINIT_EXTERNAL_SINE |
em_cmu.h:469
em_cmu.h:424
em_cmu.h:477
Default HFXO initialization values for external sine mode.
Definition at line
606
of file
em_cmu.h
.
#define CMU_LFXOINIT_DEFAULT |
Default LFXO initialization values for XTAL mode.
Definition at line
510
of file
em_cmu.h
.
#define CMU_LFXOINIT_EXTERNAL_CLOCK |
Default LFXO initialization values for external clock mode.
Definition at line
526
of file
em_cmu.h
.
#define CMU_LFXOINIT_EXTERNAL_SINE |
Default LFXO initialization values for external sine mode.
Definition at line
542
of file
em_cmu.h
.
Typedef Documentation
typedef uint32_t CMU_ClkDiv_TypeDef |
Clock divider configuration
Definition at line
114
of file
em_cmu.h
.
Enumeration Type Documentation
enum CMU_Clock_TypeDef |
Clock points in CMU clock-tree.
Definition at line
163
of file
em_cmu.h
.
HFRCODPLL frequency bands
Definition at line
117
of file
em_cmu.h
.
HFRCOEM23 frequency bands
Definition at line
142
of file
em_cmu.h
.
HFXO core bias LSB change timeout.
Definition at line
428
of file
em_cmu.h
.
HFXO steady state timeout.
Definition at line
448
of file
em_cmu.h
.
LFXO start-up timeout delay.
Definition at line
410
of file
em_cmu.h
.
enum CMU_Osc_TypeDef |
Oscillator types.
Definition at line
330
of file
em_cmu.h
.
enum CMU_Select_TypeDef |
Selectable clock sources.
Definition at line
344
of file
em_cmu.h
.
Function Documentation
uint32_t CMU_Calibrate | ( | uint32_t |
cycles,
|
CMU_Select_TypeDef |
ref
|
||
) |
Calibrate an oscillator.
Run a calibration of a selectable reference clock againt HCLK. Please refer to the reference manual, CMU chapter, for further details.
- Note
- This function will not return until calibration measurement is completed.
- Parameters
-
[in] cycles
The number of HCLK cycles to run calibration. Increasing this number increases precision, but the calibration will take more time. [in] ref
The reference clock used to compare against HCLK.
- Returns
- The number of ticks the selected reference clock ticked while running cycles ticks of the HCLK clock.
Definition at line
794
of file
em_cmu.c
.
References CMU_CalibrateConfig() , CMU_CalibrateCountGet() , CMU_CalibrateStart() , and cmuSelect_HCLK .
void CMU_CalibrateConfig | ( | uint32_t |
downCycles,
|
CMU_Select_TypeDef |
downSel,
|
||
CMU_Select_TypeDef |
upSel
|
||
) |
Configure clock calibration.
Configure a calibration for a selectable clock source against another selectable reference clock. Refer to the reference manual, CMU chapter, for further details.
- Note
- After configuration, a call to CMU_CalibrateStart() is required, and the resulting calibration value can be read with the CMU_CalibrateCountGet() function call.
- Parameters
-
[in] downCycles
The number of downSel clock cycles to run calibration. Increasing this number increases precision, but the calibration will take more time. [in] downSel
The clock which will be counted down downCycles cycles. [in] upSel
The reference clock, the number of cycles generated by this clock will be counted and added up, the result can be given with the CMU_CalibrateCountGet() function call.
Definition at line
831
of file
em_cmu.c
.
References cmuSelect_Disabled , cmuSelect_FSRCO , cmuSelect_HCLK , cmuSelect_HFRCODPLL , cmuSelect_HFRCOEM23 , cmuSelect_HFXO , cmuSelect_LFRCO , cmuSelect_LFXO , cmuSelect_PRS , and cmuSelect_ULFRCO .
Referenced by CMU_Calibrate() .
__STATIC_INLINE void CMU_CalibrateCont | ( | bool |
enable
|
) |
Configures continuous calibration mode.
- Parameters
-
[in] enable
If true, enables continuous calibration, if false disables continuous calibration.
Definition at line
760
of file
em_cmu.h
.
References BUS_RegBitWrite() .
uint32_t CMU_CalibrateCountGet | ( | void |
|
) |
Get calibration count value.
- Note
- If continuous calibrartion mode is active, calibration busy will almost always be off, and we just need to read the value, where the normal case would be that this function call has been triggered by the CALRDY interrupt flag.
- Returns
- Calibration count, the number of UPSEL clocks (see CMU_CalibrateConfig() ) in the period of DOWNSEL oscillator clock cycles configured by a previous write operation to CMU->CALCNT.
Definition at line
955
of file
em_cmu.c
.
Referenced by CMU_Calibrate() .
__STATIC_INLINE void CMU_CalibrateStart | ( | void |
|
) |
Starts calibration.
- Note
- This call is usually invoked after CMU_CalibrateConfig() and possibly CMU_CalibrateCont() .
Definition at line
772
of file
em_cmu.h
.
Referenced by CMU_Calibrate() .
void CMU_ClkOutPinConfig | ( | uint32_t |
clkNo,
|
CMU_Select_TypeDef |
sel,
|
||
CMU_ClkDiv_TypeDef |
clkDiv,
|
||
GPIO_Port_TypeDef |
port,
|
||
unsigned int |
pin
|
||
) |
Direct a clock to a GPIO pin.
- Parameters
-
[in] clkNo
Selects between CLKOUT0, CLKOUT1 or CLKOUT2 outputs. Use values 0,1or 2. [in] sel
Select clock source. [in] clkDiv
Select a clock divisor (1..32). Only applicable when cmuSelect_EXPCLK is slexted as clock source. [in] port
GPIO port. [in] pin
GPIO pin.
- Note
- Refer to the reference manual and the datasheet for details on which GPIO port/pins that are available.
Definition at line
990
of file
em_cmu.c
.
References cmuSelect_Disabled , cmuSelect_EXPCLK , cmuSelect_FSRCO , cmuSelect_HCLK , cmuSelect_HFRCODPLL , cmuSelect_HFRCOEM23 , cmuSelect_HFXO , cmuSelect_LFRCO , cmuSelect_LFXO , cmuSelect_ULFRCO , GPIO_PinModeSet() , gpioModeDisabled , and gpioModePushPull .
CMU_ClkDiv_TypeDef CMU_ClockDivGet | ( | CMU_Clock_TypeDef |
clock
|
) |
Get clock divisor.
- Parameters
-
[in] clock
Clock point to get divisor for. Notice that not all clock points have a divisors. Please refer to CMU overview in reference manual.
- Returns
-
The current clock point divisor. 1 is returned if
clock
specifies a clock point without divisor.
Definition at line
1093
of file
em_cmu.c
.
References cmuClock_CORE , cmuClock_EXPCLK , cmuClock_HCLK , cmuClock_PCLK , and cmuClock_TRACECLK .
Referenced by CMU_ClockFreqGet() , CMU_DPLLLock() , flashWaitStateControl() , and UDELAY_Calibrate() .
void CMU_ClockDivSet | ( | CMU_Clock_TypeDef |
clock,
|
CMU_ClkDiv_TypeDef |
div
|
||
) |
Set clock divisor.
- Parameters
-
[in] clock
Clock point to set divisor for. Notice that not all clock points have a divisor, please refer to CMU overview in the reference manual. [in] div
The clock divisor to use.
Definition at line
1159
of file
em_cmu.c
.
References CMU_UpdateWaitStates() , cmuClock_CORE , cmuClock_EXPCLK , cmuClock_HCLK , cmuClock_PCLK , cmuClock_TRACECLK , pclkDivMax() , pclkDivOptimize() , SystemCoreClockGet() , and waitStateMax() .
Referenced by CAPLESENSE_setupCMU() , CMU_DPLLLock() , pclkDivMax() , pclkDivOptimize() , RETARGET_SerialInit() , RTCDRV_Init() , SegmentLCD_Init() , and UDELAY_Calibrate() .
__STATIC_INLINE void CMU_ClockEnable | ( | CMU_Clock_TypeDef |
clock,
|
bool |
enable
|
||
) |
Enable/disable a clock.
- Note
- This is a dummy function to solve backward compatibility issues.
- Parameters
-
[in] clock
The clock to enable/disable. [in] enable
- true - enable specified clock.
- false - disable specified clock.
Definition at line
746
of file
em_cmu.h
.
Referenced by adcInit() , BOARD_init() , BSP_BccDeInit() , BSP_BccInit() , BSP_BusControlModeSet() , BSP_EbiInit() , BSP_initBoard() , BSP_McuBoard_Init() , CAPLESENSE_setupCMU() , CAPSENSE_Init() , DMADRV_DeInit() , ezradio_hal_GpioInit() , gpioInit() , I2CSPM_Init() , ICM20648_spiInit() , initEbiCommon() , initGpio() , LDMA_DeInit() , LDMA_Init() , MIC_init() , MICROSD_Init() , MICROSD_PowerOff() , MICROSD_PowerOn() , mscEccReadWriteExistingDma() , MSDD_Init() , RETARGET_SerialInit() , RTCDRV_DeInit() , RTCDRV_Init() , SegmentLCD_Disable() , SegmentLCD_Init() , SPI_TFT_Init() , SPIDRV_DeInit() , SPIDRV_Init() , TOUCH_Init() , UARTDRV_DeInit() , UARTDRV_InitUart() , UDELAY_Calibrate() , USTIMER_DeInit() , USTIMER_Init() , VDDCHECK_Disable() , and VDDCHECK_Init() .
uint32_t CMU_ClockFreqGet | ( | CMU_Clock_TypeDef |
clock
|
) |
Get clock frequency for a clock point.
- Parameters
-
[in] clock
Clock point to fetch frequency for.
- Returns
- The current frequency in Hz.
Definition at line
473
of file
em_cmu.c
.
References CMU_ClockDivGet() , cmuClock_BURTC , cmuClock_CORE , cmuClock_DPLLREFCLK , cmuClock_EM01GRPACLK , cmuClock_EM23GRPACLK , cmuClock_EM4GRPACLK , cmuClock_EXPCLK , cmuClock_GPCRC , cmuClock_GPIO , cmuClock_HCLK , cmuClock_I2C0 , cmuClock_I2C1 , cmuClock_IADC0 , cmuClock_IADCCLK , cmuClock_LDMA , cmuClock_LETIMER0 , cmuClock_LSPCLK , cmuClock_PCLK , cmuClock_PRS , cmuClock_RTCC , cmuClock_RTCCCLK , cmuClock_SYSCLK , cmuClock_SYSTICK , cmuClock_TIMER0 , cmuClock_TIMER1 , cmuClock_TIMER2 , cmuClock_TIMER3 , cmuClock_TRACECLK , cmuClock_USART0 , cmuClock_USART1 , cmuClock_USART2 , cmuClock_WDOG0 , cmuClock_WDOG0CLK , cmuClock_WDOG1 , cmuClock_WDOG1CLK , dpllRefClkGet() , em01GrpaClkGet() , em23GrpaClkGet() , em4GrpaClkGet() , iadcClkGet() , rtccClkGet() , SystemHCLKGet() , SystemSYSCLKGet() , and wdog0ClkGet() .
Referenced by BSP_TraceProfilerSetup() , I2C_BusFreqGet() , I2C_BusFreqSet() , IADC_calcAdcClkPrescale() , IADC_calcSrcClkPrescale() , IADC_calcTimebase() , MIC_init() , pclkDivOptimize() , USART_BaudrateAsyncSet() , USART_BaudrateGet() , USART_BaudrateSyncSet() , USTIMER_Init() , and UTIL_init() .
CMU_Select_TypeDef CMU_ClockSelectGet | ( | CMU_Clock_TypeDef |
clock
|
) |
Get currently selected reference clock used for a clock branch.
- Parameters
-
[in] clock
Clock branch to fetch selected ref. clock for.
- Returns
-
Reference clock used for clocking selected branch,
cmuSelect_Error
if invalid
clock
provided.
Definition at line
1231
of file
em_cmu.c
.
References cmuClock_BURTC , cmuClock_DPLLREFCLK , cmuClock_EM01GRPACLK , cmuClock_EM23GRPACLK , cmuClock_EM4GRPACLK , cmuClock_IADC0 , cmuClock_IADCCLK , cmuClock_LETIMER0 , cmuClock_RTCC , cmuClock_RTCCCLK , cmuClock_SYSCLK , cmuClock_SYSTICK , cmuClock_TIMER0 , cmuClock_TIMER1 , cmuClock_TIMER2 , cmuClock_TIMER3 , cmuClock_TRACECLK , cmuClock_WDOG0 , cmuClock_WDOG0CLK , cmuClock_WDOG1 , cmuClock_WDOG1CLK , cmuSelect_CLKIN0 , cmuSelect_Error , cmuSelect_FSRCO , cmuSelect_HFRCODPLL , cmuSelect_HFXO , dpllRefClkGet() , em01GrpaClkGet() , em23GrpaClkGet() , em4GrpaClkGet() , iadcClkGet() , rtccClkGet() , and wdog0ClkGet() .
Referenced by CMU_DPLLLock() , CMU_HFRCODPLLBandSet() , CMU_HFXOInit() , and UDELAY_Calibrate() .
void CMU_ClockSelectSet | ( | CMU_Clock_TypeDef |
clock,
|
CMU_Select_TypeDef |
ref
|
||
) |
Select reference clock/oscillator used for a clock branch.
- Parameters
-
[in] clock
Clock branch to select reference clock for. [in] ref
Reference selected for clocking, please refer to reference manual for for details on which reference is available for a specific clock branch.
Definition at line
1357
of file
em_cmu.c
.
References CMU_UpdateWaitStates() , cmuClock_BURTC , cmuClock_DPLLREFCLK , cmuClock_EM01GRPACLK , cmuClock_EM23GRPACLK , cmuClock_EM4GRPACLK , cmuClock_IADC0 , cmuClock_IADCCLK , cmuClock_LETIMER0 , cmuClock_RTCC , cmuClock_RTCCCLK , cmuClock_SYSCLK , cmuClock_SYSTICK , cmuClock_TIMER0 , cmuClock_TIMER1 , cmuClock_TIMER2 , cmuClock_TIMER3 , cmuClock_TRACECLK , cmuClock_WDOG0 , cmuClock_WDOG0CLK , cmuClock_WDOG1 , cmuClock_WDOG1CLK , cmuSelect_CLKIN0 , cmuSelect_Disabled , cmuSelect_EM01GRPACLK , cmuSelect_FSRCO , cmuSelect_HCLK , cmuSelect_HCLKDIV1024 , cmuSelect_HFRCODPLL , cmuSelect_HFRCOEM23 , cmuSelect_HFXO , cmuSelect_LFRCO , cmuSelect_LFXO , cmuSelect_ULFRCO , pclkDivMax() , pclkDivOptimize() , SystemCoreClockGet() , and waitStateMax() .
Referenced by BSP_BccInit() , BSP_initClocks() , CAPLESENSE_setupCMU() , CMU_DPLLLock() , MIC_init() , RETARGET_SerialInit() , RTCDRV_Init() , SegmentLCD_Init() , and UDELAY_Calibrate() .
bool CMU_DPLLLock | ( | const CMU_DPLLInit_TypeDef * |
init
|
) |
Lock the DPLL to a given frequency. The frequency is given by: Fout = Fref * (N+1) / (M+1).
- Note
-
This function does not check if the given N & M values will actually produce the desired target frequency.
N & M limitations:
300 < N <= 4095
0 <= M <= 4095
Any peripheral running off HFRCODPLL should be switched to a lower frequency clock (if possible) prior to calling this function to avoid over-clocking.
- Parameters
-
[in] init
DPLL setup parameter struct.
- Returns
- Returns false on invalid target frequency or DPLL locking error.
Definition at line
1762
of file
em_cmu.c
.
References CMU_DPLLInit_TypeDef::autoRecover , CMU_ClockDivGet() , CMU_ClockDivSet() , CMU_ClockSelectGet() , CMU_ClockSelectSet() , CMU_UpdateWaitStates() , cmuClock_DPLLREFCLK , cmuClock_HCLK , cmuClock_SYSCLK , cmuSelect_HFRCODPLL , CMU_DPLLInit_TypeDef::ditherEn , CMU_DPLLInit_TypeDef::edgeSel , CMU_DPLLInit_TypeDef::frequency , HFRCODPLLDevinfoGet() , CMU_DPLLInit_TypeDef::lockMode , CMU_DPLLInit_TypeDef::m , CMU_DPLLInit_TypeDef::n , pclkDivMax() , pclkDivOptimize() , CMU_DPLLInit_TypeDef::refClk , SystemCoreClockGet() , SystemHFRCODPLLClockGet() , SystemHFRCODPLLClockSet() , and waitStateMax() .
Referenced by BSP_initClocks() .
__STATIC_INLINE void CMU_DPLLUnlock | ( | void |
|
) |
Unlock the DPLL.
- Note
- The HFRCODPLL oscillator is not turned off.
Definition at line
792
of file
em_cmu.h
.
CMU_HFRCODPLLFreq_TypeDef CMU_HFRCODPLLBandGet | ( | void |
|
) |
Get HFRCODPLL band in use.
- Returns
- HFRCODPLL band in use.
Definition at line
1892
of file
em_cmu.c
.
References SystemHFRCODPLLClockGet() .
void CMU_HFRCODPLLBandSet | ( | CMU_HFRCODPLLFreq_TypeDef |
freq
|
) |
Set HFRCODPLL band and the tuning value based on the value in the calibration table made during production.
- Parameters
-
[in] freq
HFRCODPLL frequency band to activate.
Definition at line
1905
of file
em_cmu.c
.
References CMU_ClockSelectGet() , CMU_UpdateWaitStates() , cmuClock_SYSCLK , cmuHFRCODPLLFreq_1M0Hz , cmuHFRCODPLLFreq_2M0Hz , cmuSelect_HFRCODPLL , HFRCODPLLDevinfoGet() , pclkDivMax() , pclkDivOptimize() , SystemCoreClockGet() , SystemHFRCODPLLClockGet() , SystemHFRCODPLLClockSet() , and waitStateMax() .
Referenced by CHIP_Init() .
CMU_HFRCOEM23Freq_TypeDef CMU_HFRCOEM23BandGet | ( | void |
|
) |
Get HFRCOEM23 band in use.
- Returns
- HFRCOEM23 band in use.
Definition at line
569
of file
em_cmu.c
.
References SystemHFRCOEM23ClockGet() .
void CMU_HFRCOEM23BandSet | ( | CMU_HFRCOEM23Freq_TypeDef |
freq
|
) |
Set HFRCOEM23 band and the tuning value based on the value in the calibration table made during production.
- Parameters
-
[in] freq
HFRCOEM23 frequency band to activate.
Definition at line
582
of file
em_cmu.c
.
References cmuHFRCOEM23Freq_1M0Hz , and cmuHFRCOEM23Freq_2M0Hz .
void CMU_HFXOInit | ( | const CMU_HFXOInit_TypeDef * |
hfxoInit
|
) |
Initialize all HFXO control registers.
- Note
- HFXO configuration should be obtained from a configuration tool, app note or xtal datasheet. This function returns early if HFXO is already selected as SYSCLK.
- Parameters
-
[in] hfxoInit
HFXO setup parameters.
Definition at line
2002
of file
em_cmu.c
.
References CMU_ClockSelectGet() , cmuClock_SYSCLK , cmuHfxoOscMode_Crystal , cmuSelect_HFXO , CMU_HFXOInit_TypeDef::coreBiasAna , CMU_HFXOInit_TypeDef::coreBiasStartup , CMU_HFXOInit_TypeDef::coreDegenAna , CMU_HFXOInit_TypeDef::ctuneFixAna , CMU_HFXOInit_TypeDef::ctuneXiAna , CMU_HFXOInit_TypeDef::ctuneXiStartup , CMU_HFXOInit_TypeDef::ctuneXoAna , CMU_HFXOInit_TypeDef::ctuneXoStartup , CMU_HFXOInit_TypeDef::disOnDemand , CMU_HFXOInit_TypeDef::enXiDcBiasAna , CMU_HFXOInit_TypeDef::forceEn , CMU_HFXOInit_TypeDef::forceXi2GndAna , CMU_HFXOInit_TypeDef::forceXo2GndAna , CMU_HFXOInit_TypeDef::imCoreBiasStartup , CMU_HFXOInit_TypeDef::mode , CMU_HFXOInit_TypeDef::regLock , CMU_HFXOInit_TypeDef::timeoutCbLsb , CMU_HFXOInit_TypeDef::timeoutSteady , and CMU_HFXOInit_TypeDef::timeoutSteadyFirstLock .
Referenced by BSP_initClocks() .
__STATIC_INLINE void CMU_IntClear | ( | uint32_t |
flags
|
) |
Clear one or more pending CMU interrupt flags.
- Parameters
-
[in] flags
CMU interrupt sources to clear.
Definition at line
804
of file
em_cmu.h
.
__STATIC_INLINE void CMU_IntDisable | ( | uint32_t |
flags
|
) |
Disable one or more CMU interrupt sources.
- Parameters
-
[in] flags
CMU interrupt sources to disable.
Definition at line
816
of file
em_cmu.h
.
__STATIC_INLINE void CMU_IntEnable | ( | uint32_t |
flags
|
) |
Enable one or more CMU interrupt sources.
- Note
- Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. Consider using CMU_IntClear() prior to enabling if such a pending interrupt should be ignored.
- Parameters
-
[in] flags
CMU interrupt sources to enable.
Definition at line
833
of file
em_cmu.h
.
__STATIC_INLINE uint32_t CMU_IntGet | ( | void |
|
) |
Get pending CMU interrupt sources.
- Returns
- CMU interrupt sources pending.
Definition at line
845
of file
em_cmu.h
.
__STATIC_INLINE uint32_t CMU_IntGetEnabled | ( | void |
|
) |
Get enabled and pending CMU interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Note
- The event bits are not cleared by the use of this function.
- Returns
-
Pending and enabled CMU interrupt sources. The return value is the bitwise AND of
- the enabled interrupt sources in CMU_IEN and
- the pending interrupt flags CMU_IF
Definition at line
866
of file
em_cmu.h
.
__STATIC_INLINE void CMU_IntSet | ( | uint32_t |
flags
|
) |
Set one or more pending CMU interrupt sources.
- Parameters
-
[in] flags
CMU interrupt sources to set to pending.
Definition at line
881
of file
em_cmu.h
.
void CMU_LFRCOSetPrecision | ( | CMU_Precision_TypeDef |
precision
|
) |
Configure the LFRCO precision.
When enabling high precision mode on the LFRCO the hardware will tune the oscillator automatically using the HFXO as a reference.
- Parameters
-
[in] precision
LFRCO precision, this can be either high or default.
Definition at line
2209
of file
em_cmu.c
.
References cmuPrecisionHigh , and SystemHFXOClockGet() .
Referenced by BSP_initClocks() .
void CMU_LFXOInit | ( | const CMU_LFXOInit_TypeDef * |
lfxoInit
|
) |
Initialize LFXO control registers.
- Note
- LFXO configuration should be obtained from a configuration tool, app note or xtal datasheet. This function disables the LFXO to ensure a valid state before update.
- Parameters
-
[in] lfxoInit
LFXO setup parameters
Definition at line
2151
of file
em_cmu.c
.
References CMU_LFXOInit_TypeDef::agcEn , CMU_LFXOInit_TypeDef::capTune , CMU_LFXOInit_TypeDef::disOnDemand , CMU_LFXOInit_TypeDef::failDetEM4WUEn , CMU_LFXOInit_TypeDef::failDetEn , CMU_LFXOInit_TypeDef::forceEn , CMU_LFXOInit_TypeDef::gain , CMU_LFXOInit_TypeDef::highAmplitudeEn , CMU_LFXOInit_TypeDef::mode , CMU_LFXOInit_TypeDef::regLock , SL_MIN , and CMU_LFXOInit_TypeDef::timeout .
Referenced by BSP_initClocks() .
__STATIC_INLINE void CMU_Lock | ( | void |
|
) |
Lock CMU register access in order to protect registers contents against unintended modification.
Please refer to the reference manual for CMU registers that will be locked.
- Note
- If locking the CMU registers, they must be unlocked prior to using any CMU API functions modifying CMU registers protected by the lock.
Definition at line
899
of file
em_cmu.h
.
Referenced by EMU_EnterEM3() .
__STATIC_INLINE void CMU_OscillatorEnable | ( | CMU_Osc_TypeDef |
osc,
|
bool |
enable,
|
||
bool |
wait
|
||
) |
Enable/disable oscillator.
- Note
- This is a dummy function to solve backward compatibility issues.
- Parameters
-
[in] osc
The oscillator to enable/disable. [in] enable
- true - enable specified oscillator.
- false - disable specified oscillator.
[in] wait
Only used if enable
is true.- true - wait for oscillator start-up time to timeout before returning.
- false - do not wait for oscillator start-up time to timeout before returning.
Definition at line
924
of file
em_cmu.h
.
Referenced by BSP_initClocks() , DBG_SWOEnable() , and UDELAY_Calibrate() .
uint32_t CMU_OscillatorTuningGet | ( | CMU_Osc_TypeDef |
osc
|
) |
Get oscillator frequency tuning setting.
- Parameters
-
[in] osc
Oscillator to get tuning value for.
- Returns
- The oscillator frequency tuning setting in use.
Definition at line
2240
of file
em_cmu.c
.
References cmuOsc_HFRCODPLL , cmuOsc_HFRCOEM23 , and cmuOsc_LFRCO .
void CMU_OscillatorTuningSet | ( | CMU_Osc_TypeDef |
osc,
|
uint32_t |
val
|
||
) |
Set the oscillator frequency tuning control.
- Note
- Oscillator tuning is done during production, and the tuning value is automatically loaded after a reset. Changing the tuning value from the calibrated value is for more advanced use. Certain oscillators also have build-in tuning optimization.
- Parameters
-
[in] osc
Oscillator to set tuning value for. [in] val
The oscillator frequency tuning setting to use.
Definition at line
2290
of file
em_cmu.c
.
References cmuOsc_HFRCODPLL , cmuOsc_HFRCOEM23 , and cmuOsc_LFRCO .
__STATIC_INLINE uint32_t CMU_PrescToLog2 | ( | uint32_t |
presc
|
) |
Convert prescaler dividend to a logarithmic value. It only works for even numbers equal to 2^n.
- Parameters
-
[in] presc
An unscaled dividend (dividend = presc + 1).
- Returns
- Logarithm of 2, as used by fixed 2^n prescalers.
Definition at line
2961
of file
em_cmu.h
.
References SL_Log2ToDiv() .
void CMU_UpdateWaitStates | ( | uint32_t |
freq,
|
int |
vscale
|
||
) |
Configure wait state settings necessary to switch to a given core clock frequency at a certain voltage scale level.
This function will set up the necessary flash wait states. Updating the wait state configuration must be done before increasing the clock frequency and it must be done after decreasing the clock frequency. Updating the wait state configuration must be done before core voltage is decreased and it must be done after a core voltage is increased.
- Parameters
-
[in] freq
The core clock frequency to configure wait-states. [in] vscale
The voltage scale to configure wait-states. Expected values are 0 or 1, higher number is lower voltage. - 0 = 1.1 V (VSCALE2)
- 1 = 1.0 V (VSCALE1)
Definition at line
2355
of file
em_cmu.c
.
References flashWaitStateControl() .
Referenced by CMU_ClockDivSet() , CMU_ClockSelectSet() , CMU_DPLLLock() , and CMU_HFRCODPLLBandSet() .
__STATIC_INLINE void CMU_WdogLock | ( | void |
|
) |
Lock WDOG register access in order to protect registers contents against unintended modification.
- Note
- If locking the WDOG registers, they must be unlocked prior to using any emlib API functions modifying registers protected by the lock.
Definition at line
951
of file
em_cmu.h
.
|
static |
Get selected oscillator and frequency for cmuClock_DPLLREFCLK clock tree.
- Parameters
-
[out] freq
The frequency. [out] sel
The selected oscillator.
Definition at line
2379
of file
em_cmu.c
.
References cmuSelect_CLKIN0 , cmuSelect_Disabled , cmuSelect_Error , cmuSelect_HFXO , cmuSelect_LFXO , SystemCLKIN0Get() , SystemHFXOClockGet() , and SystemLFXOClockGet() .
Referenced by CMU_ClockFreqGet() , and CMU_ClockSelectGet() .
|
static |
Get selected oscillator and frequency for cmuClock_EM01GRPACLK clock tree.
- Parameters
-
[out] freq
The frequency. [out] sel
The selected oscillator.
Definition at line
2429
of file
em_cmu.c
.
References cmuSelect_Error , cmuSelect_FSRCO , cmuSelect_HFRCODPLL , cmuSelect_HFRCOEM23 , cmuSelect_HFXO , SystemFSRCOClockGet() , SystemHFRCODPLLClockGet() , SystemHFRCOEM23ClockGet() , and SystemHFXOClockGet() .
Referenced by CMU_ClockFreqGet() , CMU_ClockSelectGet() , and iadcClkGet() .
|
static |
Get selected oscillator and frequency for cmuClock_EM23GRPACLK clock tree.
- Parameters
-
[out] freq
The frequency. [out] sel
The selected oscillator.
Definition at line
2482
of file
em_cmu.c
.
References cmuSelect_Error , cmuSelect_LFRCO , cmuSelect_LFXO , cmuSelect_ULFRCO , SystemLFRCOClockGet() , SystemLFXOClockGet() , and SystemULFRCOClockGet() .
Referenced by CMU_ClockFreqGet() , and CMU_ClockSelectGet() .
|
static |
Get selected oscillator and frequency for cmuClock_EM4GRPACLK clock tree.
- Parameters
-
[out] freq
The frequency. [out] sel
The selected oscillator.
Definition at line
2528
of file
em_cmu.c
.
References cmuSelect_Error , cmuSelect_LFRCO , cmuSelect_LFXO , cmuSelect_ULFRCO , SystemLFRCOClockGet() , SystemLFXOClockGet() , and SystemULFRCOClockGet() .
Referenced by CMU_ClockFreqGet() , and CMU_ClockSelectGet() .
|
static |
Configure flash access wait states to support the given core clock frequency and vscale level.
- Note
- Current implementation sets wait states depending on frequency only. This assumes that applications running on Series 2 Config 2 devices never attemtps to set core frequency above 40MHz at VSCALE1 (1.0V). Series 2 Config 1 devices does not support vscale.
- Parameters
-
[in] coreFreq
The core clock frequency to configure flash wait-states. [in] vscale
Voltage Scale level. Supported levels are 0 and 1 where 0 is the default. - 0 = 1.1 V (VSCALE2)
- 1 = 1.0 V (VSCALE1)
Definition at line
2581
of file
em_cmu.c
.
References CMU_ClockDivGet() , and cmuClock_CORE .
Referenced by CMU_UpdateWaitStates() , and waitStateMax() .
|
static |
Get calibrated HFRCODPLL tuning value from Device information (DI) page for a given frequency. Calibration value is not available for all frequency bands.
- Parameters
-
[in] freq
HFRCODPLL frequency band
Definition at line
2641
of file
em_cmu.c
.
References cmuHFRCODPLLFreq_13M0Hz , cmuHFRCODPLLFreq_16M0Hz , cmuHFRCODPLLFreq_19M0Hz , cmuHFRCODPLLFreq_1M0Hz , cmuHFRCODPLLFreq_26M0Hz , cmuHFRCODPLLFreq_2M0Hz , cmuHFRCODPLLFreq_32M0Hz , cmuHFRCODPLLFreq_38M0Hz , cmuHFRCODPLLFreq_48M0Hz , cmuHFRCODPLLFreq_4M0Hz , cmuHFRCODPLLFreq_56M0Hz , cmuHFRCODPLLFreq_64M0Hz , cmuHFRCODPLLFreq_7M0Hz , and cmuHFRCODPLLFreq_80M0Hz .
Referenced by CMU_DPLLLock() , and CMU_HFRCODPLLBandSet() .
|
static |
Get selected oscillator and frequency for cmuClock_IADCCLK clock tree.
- Parameters
-
[out] freq
The frequency. [out] sel
The selected oscillator.
Definition at line
2718
of file
em_cmu.c
.
References cmuSelect_EM01GRPACLK , cmuSelect_Error , cmuSelect_FSRCO , cmuSelect_HFRCOEM23 , em01GrpaClkGet() , SystemFSRCOClockGet() , and SystemHFRCOEM23ClockGet() .
Referenced by CMU_ClockFreqGet() , and CMU_ClockSelectGet() .
|
static |
Get selected oscillator and frequency for cmuClock_RTCCCLK clock tree.
- Parameters
-
[out] freq
The frequency. [out] sel
The selected oscillator.
Definition at line
2791
of file
em_cmu.c
.
References cmuSelect_Error , cmuSelect_LFRCO , cmuSelect_LFXO , cmuSelect_ULFRCO , SystemLFRCOClockGet() , SystemLFXOClockGet() , and SystemULFRCOClockGet() .
Referenced by CMU_ClockFreqGet() , and CMU_ClockSelectGet() .
|
static |
Get selected oscillator and frequency for cmuClock_WDOG0CLK clock tree.
- Parameters
-
[out] freq
The frequency. [out] sel
The selected oscillator.
Definition at line
2846
of file
em_cmu.c
.
References cmuSelect_Error , cmuSelect_HCLKDIV1024 , cmuSelect_LFRCO , cmuSelect_LFXO , cmuSelect_ULFRCO , SystemHCLKGet() , SystemLFRCOClockGet() , SystemLFXOClockGet() , and SystemULFRCOClockGet() .
Referenced by CMU_ClockFreqGet() , and CMU_ClockSelectGet() .