CMU - Clock Management Unit#
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.
Modules#
Enumerations#
HFRCODPLL frequency bands.
Clock points in CMU clock-tree.
Oscillator types.
Selectable clock sources.
DPLL reference clock edge detect selector.
DPLL lock mode selector.
LFXO oscillator modes.
LFXO start-up timeout delay.
HFXO oscillator modes.
HFXO core bias LSB change timeout.
HFXO steady state timeout.
HFXO core degeneration control.
HFXO XI and XO pin fixed capacitor control.
Typedefs#
Clock divider configuration.
Functions#
Calibrate an oscillator.
Configure clock calibration.
Get calibration count value.
Direct a clock to a GPIO pin.
Get clock divisor.
Set clock divisor.
Enable/disable a clock.
Get clock frequency for a clock point.
Get currently selected reference clock used for a clock branch.
Select reference clock/oscillator used for a clock branch.
Gets the precision (in PPM) of the specified low frequency clock branch.
Gets the precision (in PPM) of the specified high frequency clock branch.
Get HFRCODPLL band in use.
Set HFRCODPLL band and the tuning value based on the value in the calibration table made during production.
Lock the DPLL to a given frequency.
Initialize all HFXO control registers.
Set the HFXO crystal tuning capacitance.
Get the HFXO crystal tuning capacitance.
Set the HFXO crystal tuning delta.
Get the HFXO crystal tuning delta.
Get the current delta between HFXO XI and XO.
Recalibrate the HFXO's Core Bias Current.
Initialize LFXO control registers.
Sets LFXO's crystal precision, in PPM.
Gets LFXO's crystal precision, in PPM.
Sets HFXO's crystal precision, in PPM.
Gets HFXO's crystal precision, in PPM.
Get oscillator frequency tuning setting.
Set the oscillator frequency tuning control.
Configure wait state settings necessary to switch to a given core clock frequency at a certain voltage scale level.
Select the PCNTn clock.
Configure continuous calibration mode.
Start calibration.
Stop calibration counters.
Unlock the DPLL.
Clear one or more pending CMU interrupt flags.
Disable one or more CMU interrupt sources.
Enable one or more CMU interrupt sources.
Get pending CMU interrupt sources.
Get enabled and pending CMU interrupt flags.
Set one or more pending CMU interrupt sources.
Lock CMU register access in order to protect registers contents against unintended modification.
Enable/disable oscillator.
Unlock CMU register access so that writing to registers is possible.
Lock WDOG register access in order to protect registers contents against unintended modification.
Unlock WDOG register access so that writing to registers is possible.
Convert prescaler divider to a logarithmic value.
Macros#
Macro to set clock sources in the clock tree.
Disable clocks configuration.
Shifted mode DISABLED for CMU_EM01GRPACLKCTRL.
Mode DISABLED for CMU_EM01GRPBCLKCTRL
Shifted mode DISABLED for CMU_EM01GRPBCLKCTRL.
Mode DISABLED for CMU_EM23GRPACLKCTRL
Shifted mode DISABLED for CMU_EM23GRPACLKCTRL.
Mode DISABLED for CMU_EM4GRPACLKCTRL
Shifted mode DISABLED for CMU_EM4GRPACLKCTRL.
Mode DISABLED for CMU_WDOG0CLKCTRL
Shifted mode DISABLED for CMU_WDOG0CLKCTRL
Mode DISABLED for CMU_WDOG1CLKCTRL
Shifted mode DISABLED for CMU_WDOG1CLKCTRL
Mode DISABLED for CMU_EUSART0CLKCTRL
Shifted mode DISABLED for CMU_EUSART0CLKCTRL.
Mode DISABLED for CMU_SYSRTC0CLKCTRL
Shifted mode DISABLED for CMU_SYSRTC0CLKCTRL.
HFRCODPLL maximum frequency.
HFRCODPLL minimum frequency.
Default LFXO initialization values for XTAL mode.
Default LFXO initialization values for external clock mode.
Default LFXO initialization values for external sine mode.
Default HFXO initialization values for XTAL mode.
Default HFXO initialization values for external sine mode.
Default HFXO initialization values for external sine mode with peak detector.
DPLL initialization values for 39,998,805 Hz using LFXO as reference clock, M=2 and N=3661.
DPLL initialization values for 76,800,000 Hz using HFXO as reference clock, M = 1919, N = 3839.
DPLL initialization values for 80,000,000 Hz using HFXO as reference clock, M = 1919, N = 3999.
Default configurations for DPLL initialization.
Enumeration Documentation#
CMU_HFRCODPLLFreq_TypeDef#
CMU_HFRCODPLLFreq_TypeDef
HFRCODPLL frequency bands.
Enumerator | |
---|---|
cmuHFRCODPLLFreq_1M0Hz | 1MHz RC band. |
cmuHFRCODPLLFreq_2M0Hz | 2MHz RC band. |
cmuHFRCODPLLFreq_4M0Hz | 4MHz RC band. |
cmuHFRCODPLLFreq_7M0Hz | 7MHz RC band. |
cmuHFRCODPLLFreq_13M0Hz | 13MHz RC band. |
cmuHFRCODPLLFreq_16M0Hz | 16MHz RC band. |
cmuHFRCODPLLFreq_19M0Hz | 19MHz RC band. |
cmuHFRCODPLLFreq_26M0Hz | 26MHz RC band. |
cmuHFRCODPLLFreq_32M0Hz | 32MHz RC band. |
cmuHFRCODPLLFreq_38M0Hz | 38MHz RC band. |
cmuHFRCODPLLFreq_48M0Hz | 48MHz RC band. |
cmuHFRCODPLLFreq_56M0Hz | 56MHz RC band. |
cmuHFRCODPLLFreq_64M0Hz | 64MHz RC band. |
cmuHFRCODPLLFreq_80M0Hz | 80MHz RC band. |
cmuHFRCODPLLFreq_UserDefined |
175
of file platform/emlib/inc/em_cmu.h
CMU_Clock_TypeDef#
CMU_Clock_TypeDef
Clock points in CMU clock-tree.
Enumerator | |
---|---|
cmuClock_SYSCLK | SYSTEM clock. |
cmuClock_SYSTICK | SYSTICK clock. |
cmuClock_HCLK | Core and AHB bus interface clock. |
cmuClock_EXPCLK | Export clock. |
cmuClock_PCLK | Peripheral APB bus interface clock. |
cmuClock_LSPCLK | Low speed peripheral APB bus interface clock. |
cmuClock_TRACECLK | Debug trace. |
cmuClock_EM01GRPACLK | EM01GRPA clock. |
cmuClock_EM01GRPBCLK | EM01GRPB clock. |
cmuClock_EUSART0CLK | EUSART0 clock. |
cmuClock_IADCCLK | IADC clock. |
cmuClock_EM23GRPACLK | EM23GRPA clock. |
cmuClock_WDOG0CLK | WDOG0 clock. |
cmuClock_RTCCCLK | RTCC clock. |
cmuClock_EM4GRPACLK | EM4GRPA clock. |
cmuClock_DPLLREFCLK | DPLLREF clock. |
cmuClock_CRYPTOAES | CRYPTOAES clock. |
cmuClock_CRYPTOPK | CRYPTOPK clock. |
cmuClock_CORE | Cortex-M33 core clock. |
cmuClock_PDMREF | PDMREF clock. |
cmuClock_LDMA | LDMA clock. |
cmuClock_LDMAXBAR | LDMAXBAR clock. |
cmuClock_RADIOAES | RADIOAES clock. |
cmuClock_GPCRC | GPCRC clock. |
cmuClock_TIMER0 | TIMER0 clock. |
cmuClock_TIMER1 | TIMER1 clock. |
cmuClock_TIMER2 | TIMER2 clock. |
cmuClock_TIMER3 | TIMER3 clock. |
cmuClock_TIMER4 | TIMER4 clock. |
cmuClock_USART0 | USART0 clock. |
cmuClock_USART1 | USART1 clock. |
cmuClock_IADC0 | IADC0 clock. |
cmuClock_AMUXCP0 | AMUXCP0 clock. |
cmuClock_LETIMER0 | LETIMER0 clock. |
cmuClock_WDOG0 | WDOG0 clock. |
cmuClock_I2C0 | I2C0 clock. |
cmuClock_I2C1 | I2C1 clock. |
cmuClock_SYSCFG | SYSCFG clock. |
cmuClock_DPLL0 | DPLL0 clock. |
cmuClock_HFRCO0 | HFRCO0 clock. |
cmuClock_HFXO | HFXO clock. |
cmuClock_FSRCO | FSRCO clock. |
cmuClock_LFRCO | LFRCO clock. |
cmuClock_LFXO | LFXO clock. |
cmuClock_ULFRCO | ULFRCO clock. |
cmuClock_PDM | PDM clock. |
cmuClock_GPIO | GPIO clock. |
cmuClock_PRS | PRS clock. |
cmuClock_BURAM | BURAM clock. |
cmuClock_BURTC | BURTC clock. |
cmuClock_RTCC | RTCC clock. |
cmuClock_DCDC | DCDC clock. |
cmuClock_EUSART0 | EUSART0 clock. |
cmuClock_IFADCDEBUG | IFADCDEBUG clock. |
cmuClock_CRYPTOACC | CRYPTOACC clock. |
cmuClock_SMU | SMU clock. |
cmuClock_ICACHE | ICACHE clock. |
cmuClock_ACMP0 | ACMP0 clock. |
cmuClock_MSC | MSC clock. |
cmuClock_ETAMPDET | ETAMPDET clock. |
296
of file platform/emlib/inc/em_cmu.h
CMU_Osc_TypeDef#
CMU_Osc_TypeDef
Oscillator types.
Enumerator | |
---|---|
cmuOsc_LFXO | Low frequency crystal oscillator. |
cmuOsc_LFRCO | Low frequency RC oscillator. |
cmuOsc_FSRCO | Fast startup fixed frequency RC oscillator. |
cmuOsc_HFXO | High frequency crystal oscillator. |
cmuOsc_HFRCODPLL | High frequency RC and DPLL oscillator. |
cmuOsc_ULFRCO | Ultra low frequency RC oscillator. |
638
of file platform/emlib/inc/em_cmu.h
CMU_Select_TypeDef#
CMU_Select_TypeDef
Selectable clock sources.
Enumerator | |
---|---|
cmuSelect_Error | Usage error. |
cmuSelect_Disabled | Clock selector disabled. |
cmuSelect_FSRCO | Fast startup fixed frequency RC oscillator. |
cmuSelect_HFXO | High frequency crystal oscillator. |
cmuSelect_HFXORT | Re-timed high frequency crystal oscillator. |
cmuSelect_HFRCODPLL | High frequency RC and DPLL oscillator. |
cmuSelect_HFRCODPLLRT | Re-timed high frequency RC and DPLL oscillator. |
cmuSelect_CLKIN0 | External clock input. |
cmuSelect_LFXO | Low frequency crystal oscillator. |
cmuSelect_LFRCO | Low frequency RC oscillator. |
cmuSelect_ULFRCO | Ultra low frequency RC oscillator. |
cmuSelect_HCLK | Core and AHB bus interface clock. |
cmuSelect_SYSCLK | System clock. |
cmuSelect_HCLKDIV1024 | Prescaled HCLK frequency clock. |
cmuSelect_EM01GRPACLK | EM01GRPA clock. |
cmuSelect_EM23GRPACLK | EM23GRPA clock. |
cmuSelect_EXPCLK | Pin export clock. |
cmuSelect_PRS | PRS input as clock. |
cmuSelect_TEMPOSC | Temperature oscillator. |
cmuSelect_PFMOSC | PFM oscillator. |
cmuSelect_BIASOSC | BIAS oscillator. |
675
of file platform/emlib/inc/em_cmu.h
CMU_DPLLEdgeSel_TypeDef#
CMU_DPLLEdgeSel_TypeDef
DPLL reference clock edge detect selector.
Enumerator | |
---|---|
cmuDPLLEdgeSel_Fall | Detect falling edge of reference clock. |
cmuDPLLEdgeSel_Rise | Detect rising edge of reference clock. |
719
of file platform/emlib/inc/em_cmu.h
CMU_DPLLLockMode_TypeDef#
CMU_DPLLLockMode_TypeDef
DPLL lock mode selector.
Enumerator | |
---|---|
cmuDPLLLockMode_Freq | Frequency lock mode. |
cmuDPLLLockMode_Phase | Phase lock mode. |
725
of file platform/emlib/inc/em_cmu.h
CMU_LfxoOscMode_TypeDef#
CMU_LfxoOscMode_TypeDef
LFXO oscillator modes.
Enumerator | |
---|---|
cmuLfxoOscMode_Crystal | Crystal oscillator. |
cmuLfxoOscMode_AcCoupledSine | External AC coupled sine. |
cmuLfxoOscMode_External | External digital clock. |
731
of file platform/emlib/inc/em_cmu.h
CMU_LfxoStartupDelay_TypeDef#
CMU_LfxoStartupDelay_TypeDef
LFXO start-up timeout delay.
Enumerator | |
---|---|
cmuLfxoStartupDelay_2Cycles | 2 cycles start-up delay. |
cmuLfxoStartupDelay_256Cycles | 256 cycles start-up delay. |
cmuLfxoStartupDelay_1KCycles | 1K cycles start-up delay. |
cmuLfxoStartupDelay_2KCycles | 2K cycles start-up delay. |
cmuLfxoStartupDelay_4KCycles | 4K cycles start-up delay. |
cmuLfxoStartupDelay_8KCycles | 8K cycles start-up delay. |
cmuLfxoStartupDelay_16KCycles | 16K cycles start-up delay. |
cmuLfxoStartupDelay_32KCycles | 32K cycles start-up delay. |
738
of file platform/emlib/inc/em_cmu.h
CMU_HfxoOscMode_TypeDef#
CMU_HfxoOscMode_TypeDef
HFXO oscillator modes.
Enumerator | |
---|---|
cmuHfxoOscMode_Crystal | Crystal oscillator. |
cmuHfxoOscMode_ExternalSine | External digital clock. |
750
of file platform/emlib/inc/em_cmu.h
CMU_HfxoCbLsbTimeout_TypeDef#
CMU_HfxoCbLsbTimeout_TypeDef
HFXO core bias LSB change timeout.
Enumerator | |
---|---|
cmuHfxoCbLsbTimeout_8us | 8 us timeout. |
cmuHfxoCbLsbTimeout_20us | 20 us timeout. |
cmuHfxoCbLsbTimeout_41us | 41 us timeout. |
cmuHfxoCbLsbTimeout_62us | 62 us timeout. |
cmuHfxoCbLsbTimeout_83us | 83 us timeout. |
cmuHfxoCbLsbTimeout_104us | 104 us timeout. |
cmuHfxoCbLsbTimeout_125us | 125 us timeout. |
cmuHfxoCbLsbTimeout_166us | 166 us timeout. |
cmuHfxoCbLsbTimeout_208us | 208 us timeout. |
cmuHfxoCbLsbTimeout_250us | 250 us timeout. |
cmuHfxoCbLsbTimeout_333us | 333 us timeout. |
cmuHfxoCbLsbTimeout_416us | 416 us timeout. |
cmuHfxoCbLsbTimeout_833us | 833 us timeout. |
cmuHfxoCbLsbTimeout_1250us | 1250 us timeout. |
cmuHfxoCbLsbTimeout_2083us | 2083 us timeout. |
cmuHfxoCbLsbTimeout_3750us | 3750 us timeout. |
759
of file platform/emlib/inc/em_cmu.h
CMU_HfxoSteadyStateTimeout_TypeDef#
CMU_HfxoSteadyStateTimeout_TypeDef
HFXO steady state timeout.
Enumerator | |
---|---|
cmuHfxoSteadyStateTimeout_16us | 16 us timeout. |
cmuHfxoSteadyStateTimeout_41us | 41 us timeout. |
cmuHfxoSteadyStateTimeout_83us | 83 us timeout. |
cmuHfxoSteadyStateTimeout_125us | 125 us timeout. |
cmuHfxoSteadyStateTimeout_166us | 166 us timeout. |
cmuHfxoSteadyStateTimeout_208us | 208 us timeout. |
cmuHfxoSteadyStateTimeout_250us | 250 us timeout. |
cmuHfxoSteadyStateTimeout_333us | 333 us timeout. |
cmuHfxoSteadyStateTimeout_416us | 416 us timeout. |
cmuHfxoSteadyStateTimeout_500us | 500 us timeout. |
cmuHfxoSteadyStateTimeout_666us | 666 us timeout. |
cmuHfxoSteadyStateTimeout_833us | 833 us timeout. |
cmuHfxoSteadyStateTimeout_1666us | 1666 us timeout. |
cmuHfxoSteadyStateTimeout_2500us | 2500 us timeout. |
cmuHfxoSteadyStateTimeout_4166us | 4166 us timeout. |
cmuHfxoSteadyStateTimeout_7500us | 7500 us timeout. |
779
of file platform/emlib/inc/em_cmu.h
CMU_HfxoCoreDegen_TypeDef#
CMU_HfxoCoreDegen_TypeDef
HFXO core degeneration control.
Enumerator | |
---|---|
cmuHfxoCoreDegen_None | No core degeneration. |
cmuHfxoCoreDegen_33 | Core degeneration control 33. |
cmuHfxoCoreDegen_50 | Core degeneration control 50. |
cmuHfxoCoreDegen_100 | Core degeneration control 100. |
801
of file platform/emlib/inc/em_cmu.h
CMU_HfxoCtuneFixCap_TypeDef#
CMU_HfxoCtuneFixCap_TypeDef
HFXO XI and XO pin fixed capacitor control.
Enumerator | |
---|---|
cmuHfxoCtuneFixCap_None | No fixed capacitors. |
cmuHfxoCtuneFixCap_Xi | Fixed capacitor on XI pin. |
cmuHfxoCtuneFixCap_Xo | Fixed capacitor on XO pin. |
cmuHfxoCtuneFixCap_Both | Fixed capacitor on both pins. |
809
of file platform/emlib/inc/em_cmu.h
CMU_Precision_TypeDef#
CMU_Precision_TypeDef
Oscillator precision modes.
Enumerator | |
---|---|
cmuPrecisionDefault | Default precision mode. |
cmuPrecisionHigh | High precision mode. |
817
of file platform/emlib/inc/em_cmu.h
Typedef Documentation#
CMU_ClkDiv_TypeDef#
typedef uint32_t CMU_ClkDiv_TypeDef
Clock divider configuration.
172
of file platform/emlib/inc/em_cmu.h
Function Documentation#
CMU_Calibrate#
uint32_t CMU_Calibrate (uint32_t cycles, CMU_Select_TypeDef ref)
Calibrate an oscillator.
[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. |
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.
Returns
The number of ticks the selected reference clock ticked while running cycles ticks of the HCLK clock.
296
of file platform/emlib/src/em_cmu.c
CMU_CalibrateConfig#
void CMU_CalibrateConfig (uint32_t downCycles, CMU_Select_TypeDef downSel, CMU_Select_TypeDef upSel)
Configure clock calibration.
[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. |
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.
338
of file platform/emlib/src/em_cmu.c
CMU_CalibrateCountGet#
uint32_t CMU_CalibrateCountGet (void )
Get calibration count value.
N/A |
Note
If continuous calibration mode is active, calibration busy will almost always be off, and reading the value will be just needed, 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.
476
of file platform/emlib/src/em_cmu.c
CMU_ClkOutPinConfig#
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.
[in] | clkNo | Selects between CLKOUT0, CLKOUT1 or CLKOUT2 outputs. Use values 0, 1 or 2. |
[in] | sel | Select clock source. |
[in] | clkDiv | Select a clock divisor (1..32). Only applicable when cmuSelect_EXPCLK is selected 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.
511
of file platform/emlib/src/em_cmu.c
CMU_ClockDivGet#
CMU_ClkDiv_TypeDef CMU_ClockDivGet (CMU_Clock_TypeDef clock)
Get clock divisor.
[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.
628
of file platform/emlib/src/em_cmu.c
CMU_ClockDivSet#
void CMU_ClockDivSet (CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
Set clock divisor.
[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. |
697
of file platform/emlib/src/em_cmu.c
CMU_ClockEnable#
void CMU_ClockEnable (CMU_Clock_TypeDef clock, bool enable)
Enable/disable a clock.
[in] | clock | The clock to enable/disable. |
[in] | enable |
|
Module clocks sre disabled after reset. If a module clock is disabled, the registers of that module are not accessible and accessing such registers will hardfault the Cortex core.
814
of file platform/emlib/src/em_cmu.c
CMU_ClockFreqGet#
uint32_t CMU_ClockFreqGet (CMU_Clock_TypeDef clock)
Get clock frequency for a clock point.
[in] | clock | Clock point to fetch frequency for. |
Returns
The current frequency in Hz.
964
of file platform/emlib/src/em_cmu.c
CMU_ClockSelectGet#
CMU_Select_TypeDef CMU_ClockSelectGet (CMU_Clock_TypeDef clock)
Get currently selected reference clock used for a clock branch.
[in] | clock | Clock branch to fetch selected ref. clock for. |
Returns
Reference clock used for clocking selected branch, cmuSelect_Error if invalid
clock
provided.
1207
of file platform/emlib/src/em_cmu.c
CMU_ClockSelectSet#
void CMU_ClockSelectSet (CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref)
Select reference clock/oscillator used for a clock branch.
[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. |
1558
of file platform/emlib/src/em_cmu.c
CMU_LF_ClockPrecisionGet#
uint16_t CMU_LF_ClockPrecisionGet (CMU_Clock_TypeDef clock)
Gets the precision (in PPM) of the specified low frequency clock branch.
[in] | clock | Clock branch. |
Returns
Precision, in PPM, of the specified clock branch.
Note
This function is only for internal usage.
The current implementation of this function is used to determine if the clock has a precision <= 500 ppm or not (which is the minimum required for BLE). Future version of this function should provide more accurate precision numbers to allow for further optimizations from the stacks.
2423
of file platform/emlib/src/em_cmu.c
CMU_HF_ClockPrecisionGet#
uint16_t CMU_HF_ClockPrecisionGet (CMU_Clock_TypeDef clock)
Gets the precision (in PPM) of the specified high frequency clock branch.
[in] | clock | Clock branch. |
Returns
Precision, in PPM, of the specified clock branch.
Note
This function is only for internal usage.
The current implementation of this function is used to determine if the clock has a precision <= 500 ppm or not (which is the minimum required for BLE). Future version of this function should provide more accurate precision numbers to allow for further optimizations from the stacks.
2476
of file platform/emlib/src/em_cmu.c
CMU_HFRCODPLLBandGet#
CMU_HFRCODPLLFreq_TypeDef CMU_HFRCODPLLBandGet (void )
Get HFRCODPLL band in use.
N/A |
Returns
HFRCODPLL band in use.
2505
of file platform/emlib/src/em_cmu.c
CMU_HFRCODPLLBandSet#
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.
[in] | freq | HFRCODPLL frequency band to activate. |
2518
of file platform/emlib/src/em_cmu.c
CMU_DPLLLock#
bool CMU_DPLLLock (const CMU_DPLLInit_TypeDef * init)
Lock the DPLL to a given frequency.
[in] | init | DPLL setup parameter struct. |
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.
Returns
Returns false on invalid target frequency or DPLL locking error.
2658
of file platform/emlib/src/em_cmu.c
CMU_HFXOInit#
void CMU_HFXOInit (const CMU_HFXOInit_TypeDef * hfxoInit)
Initialize all HFXO control registers.
[in] | hfxoInit | HFXO setup parameters. |
Note
HFXO configuration should be obtained from a configuration tool, app note or crystal datasheet. This function returns early if HFXO is already selected as SYSCLK.
2950
of file platform/emlib/src/em_cmu.c
CMU_HFXOCTuneSet#
sl_status_t CMU_HFXOCTuneSet (uint32_t ctune)
Set the HFXO crystal tuning capacitance.
[in] | ctune | The desired tuning capacitance value. Each step corresponds to approximately 80fF. Min value is 0. Max value is 255. |
Returns
SL_STATUS_OK if initialization parameter is valid. SL_STATUS_INVALID_PARAMETER if initialization parameter is invalid.
Note
While the oscillator is running in steady operation state, it may be desirable to modify the tuning capacitance via CTUNEXIANA and CTUNEXOANA fields in the HFXO_XTALCTRL register. When tuning, care should be taken to make small changes to the CTUNE registers. Ideally, change the CTUNE registers by one LSB at a time and alternate between the XI and XO registers. Sufficient wait time for settling, on the order of TIMEOUTSTEADY, should pass before new frequency measurement is taken.
3329
of file platform/emlib/src/em_cmu.c
CMU_HFXOCTuneGet#
uint32_t CMU_HFXOCTuneGet (void )
Get the HFXO crystal tuning capacitance.
N/A |
Returns
The HFXO crystal tuning capacitance.
Note
This function only returns the CTUNE XI value. The XO value can be different and can be found using the delta (difference between XI and XO). See CMU_HFXOCTuneCurrentDeltaGet to retrieve the delta value.
3394
of file platform/emlib/src/em_cmu.c
CMU_HFXOCTuneDeltaSet#
void CMU_HFXOCTuneDeltaSet (int32_t delta)
Set the HFXO crystal tuning delta.
[in] | delta | Chip dependent crystal capacitor bank delta between HFXO XI and XO. |
Note
The delta between XI and XO is applicable for the series 2 EFR32xG2x devices only. Neither XI nor XO is actually modified by this function, CMU_HFXOCTuneSet() needs to be called for the change to be propagated.
3447
of file platform/emlib/src/em_cmu.c
CMU_HFXOCTuneDeltaGet#
int32_t CMU_HFXOCTuneDeltaGet (void )
Get the HFXO crystal tuning delta.
N/A |
It can be default recommended delta value or value set by CMU_HFXOCTuneDeltaSet.
Returns
Chip dependent crystal capacitor bank tuning delta.
3460
of file platform/emlib/src/em_cmu.c
CMU_HFXOCTuneCurrentDeltaGet#
int32_t CMU_HFXOCTuneCurrentDeltaGet (void )
Get the current delta between HFXO XI and XO.
N/A |
Returns
the current delta between HFXO XI and XO.
3472
of file platform/emlib/src/em_cmu.c
CMU_HFXOCoreBiasCurrentCalibrate#
void CMU_HFXOCoreBiasCurrentCalibrate (void )
Recalibrate the HFXO's Core Bias Current.
N/A |
Note
Care should be taken when using this function as it can cause disturbance on the HFXO frequency while the optimization is underway. It's recommended to only use this function when HFXO isn't being used. It's also a blocking function that can be time consuming.
3496
of file platform/emlib/src/em_cmu.c
CMU_LFXOInit#
void CMU_LFXOInit (const CMU_LFXOInit_TypeDef * lfxoInit)
Initialize LFXO control registers.
[in] | lfxoInit | LFXO setup parameters |
Note
LFXO configuration should be obtained from a configuration tool, app note or crystal datasheet. This function disables the LFXO to ensure a valid state before update.
3556
of file platform/emlib/src/em_cmu.c
CMU_LFXOPrecisionSet#
void CMU_LFXOPrecisionSet (uint16_t precision)
Sets LFXO's crystal precision, in PPM.
[in] | precision | LFXO's crystal precision, in PPM. |
Note
LFXO precision should be obtained from a crystal datasheet.
3613
of file platform/emlib/src/em_cmu.c
CMU_LFXOPrecisionGet#
uint16_t CMU_LFXOPrecisionGet (void )
Gets LFXO's crystal precision, in PPM.
[in] | LFXO's crystal precision, in PPM. |
3625
of file platform/emlib/src/em_cmu.c
CMU_HFXOPrecisionSet#
void CMU_HFXOPrecisionSet (uint16_t precision)
Sets HFXO's crystal precision, in PPM.
[in] | precision | HFXO's crystal precision, in PPM. |
Note
HFXO precision should be obtained from a crystal datasheet.
3640
of file platform/emlib/src/em_cmu.c
CMU_HFXOPrecisionGet#
uint16_t CMU_HFXOPrecisionGet (void )
Gets HFXO's crystal precision, in PPM.
[in] | HFXO's crystal precision, in PPM. |
3652
of file platform/emlib/src/em_cmu.c
CMU_OscillatorTuningGet#
uint32_t CMU_OscillatorTuningGet (CMU_Osc_TypeDef osc)
Get oscillator frequency tuning setting.
[in] | osc | Oscillator to get tuning value for. |
Returns
The oscillator frequency tuning setting in use.
3723
of file platform/emlib/src/em_cmu.c
CMU_OscillatorTuningSet#
void CMU_OscillatorTuningSet (CMU_Osc_TypeDef osc, uint32_t val)
Set the oscillator frequency tuning control.
[in] | osc | Oscillator to set tuning value for. |
[in] | val | The oscillator frequency tuning setting to use. |
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.
3788
of file platform/emlib/src/em_cmu.c
CMU_UpdateWaitStates#
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.
[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.
|
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.
3914
of file platform/emlib/src/em_cmu.c
CMU_PCNTClockExternalSet#
void CMU_PCNTClockExternalSet (unsigned int instance, bool external)
Select the PCNTn clock.
[in] | instance | PCNT instance number to set selected clock source for. |
[in] | external | Set to true to select the external clock, false to select EM23GRPACLK. |
3933
of file platform/emlib/src/em_cmu.c
CMU_CalibrateCont#
void CMU_CalibrateCont (bool enable)
Configure continuous calibration mode.
[in] | enable | If true, enables continuous calibration, if false disables continuous calibration. |
1445
of file platform/emlib/inc/em_cmu.h
CMU_CalibrateStart#
void CMU_CalibrateStart (void )
Start calibration.
N/A |
Note
This call is usually invoked after CMU_CalibrateConfig() and possibly CMU_CalibrateCont().
1457
of file platform/emlib/inc/em_cmu.h
CMU_CalibrateStop#
void CMU_CalibrateStop (void )
Stop calibration counters.
N/A |
1466
of file platform/emlib/inc/em_cmu.h
CMU_DPLLUnlock#
void CMU_DPLLUnlock (void )
Unlock the DPLL.
N/A |
Note
The HFRCODPLL oscillator is not turned off.
1477
of file platform/emlib/inc/em_cmu.h
CMU_IntClear#
void CMU_IntClear (uint32_t flags)
Clear one or more pending CMU interrupt flags.
[in] | flags | CMU interrupt sources to clear. |
1493
of file platform/emlib/inc/em_cmu.h
CMU_IntDisable#
void CMU_IntDisable (uint32_t flags)
Disable one or more CMU interrupt sources.
[in] | flags | CMU interrupt sources to disable. |
1505
of file platform/emlib/inc/em_cmu.h
CMU_IntEnable#
void CMU_IntEnable (uint32_t flags)
Enable one or more CMU interrupt sources.
[in] | flags | CMU interrupt sources to enable. |
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.
1522
of file platform/emlib/inc/em_cmu.h
CMU_IntGet#
uint32_t CMU_IntGet (void )
Get pending CMU interrupt sources.
N/A |
Returns
CMU interrupt sources pending.
1534
of file platform/emlib/inc/em_cmu.h
CMU_IntGetEnabled#
uint32_t CMU_IntGetEnabled (void )
Get enabled and pending CMU interrupt flags.
N/A |
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
1555
of file platform/emlib/inc/em_cmu.h
CMU_IntSet#
void CMU_IntSet (uint32_t flags)
Set one or more pending CMU interrupt sources.
[in] | flags | CMU interrupt sources to set to pending. |
1570
of file platform/emlib/inc/em_cmu.h
CMU_Lock#
void CMU_Lock (void )
Lock CMU register access in order to protect registers contents against unintended modification.
N/A |
See 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.
1588
of file platform/emlib/inc/em_cmu.h
CMU_OscillatorEnable#
void CMU_OscillatorEnable (CMU_Osc_TypeDef osc, bool enable, bool wait)
Enable/disable oscillator.
[in] | osc | The oscillator to enable/disable. |
[in] | enable |
|
[in] | wait | Only used if
|
Note
This is a dummy function to solve backward compatibility issues.
1613
of file platform/emlib/inc/em_cmu.h
CMU_Unlock#
void CMU_Unlock (void )
Unlock CMU register access so that writing to registers is possible.
N/A |
1626
of file platform/emlib/inc/em_cmu.h
CMU_WdogLock#
void CMU_WdogLock (void )
Lock WDOG register access in order to protect registers contents against unintended modification.
N/A |
Note
If locking the WDOG registers, they must be unlocked prior to using any emlib API functions modifying registers protected by the lock.
1640
of file platform/emlib/inc/em_cmu.h
CMU_WdogUnlock#
void CMU_WdogUnlock (void )
Unlock WDOG register access so that writing to registers is possible.
N/A |
1649
of file platform/emlib/inc/em_cmu.h
CMU_PrescToLog2#
uint32_t CMU_PrescToLog2 (uint32_t presc)
Convert prescaler divider to a logarithmic value.
[in] | presc | Prescaler value used to set the frequency divider. The divider is equal to ('presc' + 1). If a divider value is passed for 'presc', 'presc' will be equal to (divider - 1). |
It only works for even numbers equal to 2^n.
Returns
Logarithm base 2 (binary) value, i.e. exponent as used by fixed 2^n prescalers.
3630
of file platform/emlib/inc/em_cmu.h
Macro Definition Documentation#
CMU_CLOCK_SELECT_SET#
#define CMU_CLOCK_SELECT_SETValue:
(clock, sel)
Macro to set clock sources in the clock tree.
55
of file platform/emlib/inc/em_cmu.h
_CMU_EM01GRPACLKCTRL_CLKSEL_DISABLED#
#define _CMU_EM01GRPACLKCTRL_CLKSEL_DISABLEDValue:
0x00000000UL
Disable clocks configuration.
Mode DISABLED for CMU_EM01GRPACLKCTRL
153
of file platform/emlib/inc/em_cmu.h
CMU_EM01GRPACLKCTRL_CLKSEL_DISABLED#
#define CMU_EM01GRPACLKCTRL_CLKSEL_DISABLEDValue:
(_CMU_EM01GRPACLKCTRL_CLKSEL_DISABLED << 0)
Shifted mode DISABLED for CMU_EM01GRPACLKCTRL.
154
of file platform/emlib/inc/em_cmu.h
_CMU_EM01GRPBCLKCTRL_CLKSEL_DISABLED#
#define _CMU_EM01GRPBCLKCTRL_CLKSEL_DISABLEDValue:
0x00000000UL
Mode DISABLED for CMU_EM01GRPBCLKCTRL
155
of file platform/emlib/inc/em_cmu.h
CMU_EM01GRPBCLKCTRL_CLKSEL_DISABLED#
#define CMU_EM01GRPBCLKCTRL_CLKSEL_DISABLEDValue:
(_CMU_EM01GRPBCLKCTRL_CLKSEL_DISABLED << 0)
Shifted mode DISABLED for CMU_EM01GRPBCLKCTRL.
156
of file platform/emlib/inc/em_cmu.h
_CMU_EM23GRPACLKCTRL_CLKSEL_DISABLED#
#define _CMU_EM23GRPACLKCTRL_CLKSEL_DISABLEDValue:
0x00000000UL
Mode DISABLED for CMU_EM23GRPACLKCTRL
157
of file platform/emlib/inc/em_cmu.h
CMU_EM23GRPACLKCTRL_CLKSEL_DISABLED#
#define CMU_EM23GRPACLKCTRL_CLKSEL_DISABLEDValue:
(_CMU_EM23GRPACLKCTRL_CLKSEL_DISABLED << 0)
Shifted mode DISABLED for CMU_EM23GRPACLKCTRL.
158
of file platform/emlib/inc/em_cmu.h
_CMU_EM4GRPACLKCTRL_CLKSEL_DISABLED#
#define _CMU_EM4GRPACLKCTRL_CLKSEL_DISABLEDValue:
0x00000000UL
Mode DISABLED for CMU_EM4GRPACLKCTRL
159
of file platform/emlib/inc/em_cmu.h
CMU_EM4GRPACLKCTRL_CLKSEL_DISABLED#
#define CMU_EM4GRPACLKCTRL_CLKSEL_DISABLEDValue:
(_CMU_EM4GRPACLKCTRL_CLKSEL_DISABLED << 0)
Shifted mode DISABLED for CMU_EM4GRPACLKCTRL.
160
of file platform/emlib/inc/em_cmu.h
_CMU_WDOG0CLKCTRL_CLKSEL_DISABLED#
#define _CMU_WDOG0CLKCTRL_CLKSEL_DISABLEDValue:
0x00000000UL
Mode DISABLED for CMU_WDOG0CLKCTRL
161
of file platform/emlib/inc/em_cmu.h
CMU_WDOG0CLKCTRL_CLKSEL_DISABLED#
#define CMU_WDOG0CLKCTRL_CLKSEL_DISABLEDValue:
(_CMU_WDOG0CLKCTRL_CLKSEL_DISABLED << 0)
Shifted mode DISABLED for CMU_WDOG0CLKCTRL
162
of file platform/emlib/inc/em_cmu.h
_CMU_WDOG1CLKCTRL_CLKSEL_DISABLED#
#define _CMU_WDOG1CLKCTRL_CLKSEL_DISABLEDValue:
0x00000000UL
Mode DISABLED for CMU_WDOG1CLKCTRL
163
of file platform/emlib/inc/em_cmu.h
CMU_WDOG1CLKCTRL_CLKSEL_DISABLED#
#define CMU_WDOG1CLKCTRL_CLKSEL_DISABLEDValue:
(_CMU_WDOG1CLKCTRL_CLKSEL_DISABLED << 0)
Shifted mode DISABLED for CMU_WDOG1CLKCTRL
164
of file platform/emlib/inc/em_cmu.h
_CMU_EUSART0CLKCTRL_CLKSEL_DISABLED#
#define _CMU_EUSART0CLKCTRL_CLKSEL_DISABLEDValue:
0x00000000UL
Mode DISABLED for CMU_EUSART0CLKCTRL
165
of file platform/emlib/inc/em_cmu.h
CMU_EUSART0CLKCTRL_CLKSEL_DISABLED#
#define CMU_EUSART0CLKCTRL_CLKSEL_DISABLEDValue:
(_CMU_EUSART0CLKCTRL_CLKSEL_DISABLED << 0)
Shifted mode DISABLED for CMU_EUSART0CLKCTRL.
166
of file platform/emlib/inc/em_cmu.h
_CMU_SYSRTC0CLKCTRL_CLKSEL_DISABLED#
#define _CMU_SYSRTC0CLKCTRL_CLKSEL_DISABLEDValue:
0x00000000UL
Mode DISABLED for CMU_SYSRTC0CLKCTRL
167
of file platform/emlib/inc/em_cmu.h
CMU_SYSRTC0CLKCTRL_CLKSEL_DISABLED#
#define CMU_SYSRTC0CLKCTRL_CLKSEL_DISABLEDValue:
(_CMU_SYSRTC0CLKCTRL_CLKSEL_DISABLED << 0)
Shifted mode DISABLED for CMU_SYSRTC0CLKCTRL.
168
of file platform/emlib/inc/em_cmu.h
CMU_HFRCODPLL_MIN#
#define CMU_HFRCODPLL_MINValue:
cmuHFRCODPLLFreq_1M0Hz
HFRCODPLL maximum frequency.
215
of file platform/emlib/inc/em_cmu.h
CMU_HFRCODPLL_MAX#
#define CMU_HFRCODPLL_MAXValue:
cmuHFRCODPLLFreq_80M0Hz
HFRCODPLL minimum frequency.
217
of file platform/emlib/inc/em_cmu.h
CMU_LFXOINIT_DEFAULT#
#define CMU_LFXOINIT_DEFAULTValue:
Default LFXO initialization values for XTAL mode.
844
of file platform/emlib/inc/em_cmu.h
CMU_LFXOINIT_EXTERNAL_CLOCK#
#define CMU_LFXOINIT_EXTERNAL_CLOCKValue:
Default LFXO initialization values for external clock mode.
860
of file platform/emlib/inc/em_cmu.h
CMU_LFXOINIT_EXTERNAL_SINE#
#define CMU_LFXOINIT_EXTERNAL_SINEValue:
Default LFXO initialization values for external sine mode.
876
of file platform/emlib/inc/em_cmu.h
CMU_HFXOINIT_DEFAULT#
#define CMU_HFXOINIT_DEFAULTValue:
Default HFXO initialization values for XTAL mode.
1025
of file platform/emlib/inc/em_cmu.h
CMU_HFXOINIT_EXTERNAL_SINE#
#define CMU_HFXOINIT_EXTERNAL_SINEValue:
Default HFXO initialization values for external sine mode.
1049
of file platform/emlib/inc/em_cmu.h
CMU_HFXOINIT_EXTERNAL_SINEPKDET#
#define CMU_HFXOINIT_EXTERNAL_SINEPKDETValue:
Default HFXO initialization values for external sine mode with peak detector.
1073
of file platform/emlib/inc/em_cmu.h
CMU_DPLL_LFXO_TO_40MHZ#
#define CMU_DPLL_LFXO_TO_40MHZValue:
DPLL initialization values for 39,998,805 Hz using LFXO as reference clock, M=2 and N=3661.
1173
of file platform/emlib/inc/em_cmu.h
CMU_DPLL_HFXO_TO_76_8MHZ#
#define CMU_DPLL_HFXO_TO_76_8MHZValue:
DPLL initialization values for 76,800,000 Hz using HFXO as reference clock, M = 1919, N = 3839.
1189
of file platform/emlib/inc/em_cmu.h
CMU_DPLL_HFXO_TO_80MHZ#
#define CMU_DPLL_HFXO_TO_80MHZValue:
DPLL initialization values for 80,000,000 Hz using HFXO as reference clock, M = 1919, N = 3999.
1205
of file platform/emlib/inc/em_cmu.h
CMU_DPLLINIT_DEFAULT#
#define CMU_DPLLINIT_DEFAULTValue:
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.
1222
of file platform/emlib/inc/em_cmu.h