EFM32 Wonder Gecko Software Documentation
efm32wg-doc-5.1.2
|
Clock management unit (CMU) Peripheral API.
This module contains functions to control the CMU peripheral of Silicon Labs 32-bit MCUs and SoCs. The CMU controls oscillators and clocks.
Data Structures | |
struct | CMU_HFXOInit_TypeDef |
struct | CMU_LFXOInit_TypeDef |
Macros | |
#define | CMU_HFXOINIT_DEFAULT |
#define | CMU_HFXOINIT_EXTERNAL_CLOCK |
#define | CMU_LFXOINIT_DEFAULT |
#define | CMU_LFXOINIT_EXTERNAL_CLOCK |
#define | cmuClkDiv_1 1 |
#define | cmuClkDiv_1024 1024 |
#define | cmuClkDiv_128 128 |
#define | cmuClkDiv_16 16 |
#define | cmuClkDiv_16384 16384 |
#define | cmuClkDiv_2 2 |
#define | cmuClkDiv_2048 2048 |
#define | cmuClkDiv_256 256 |
#define | cmuClkDiv_32 32 |
#define | cmuClkDiv_32768 32768 |
#define | cmuClkDiv_4 4 |
#define | cmuClkDiv_4096 4096 |
#define | cmuClkDiv_512 512 |
#define | cmuClkDiv_64 64 |
#define | cmuClkDiv_8 8 |
#define | cmuClkDiv_8192 8192 |
Typedefs | |
typedef uint32_t | CMU_ClkDiv_TypeDef |
Functions | |
CMU_AUXHFRCOBand_TypeDef | CMU_AUXHFRCOBandGet (void) |
Get AUXHFRCO band in use. More... | |
void | CMU_AUXHFRCOBandSet (CMU_AUXHFRCOBand_TypeDef band) |
Set AUXHFRCO band and the tuning value based on the value in the calibration table made during production. More... | |
uint32_t | CMU_Calibrate (uint32_t HFCycles, CMU_Osc_TypeDef ref) |
Calibrate clock. More... | |
void | CMU_CalibrateConfig (uint32_t downCycles, CMU_Osc_TypeDef downSel, CMU_Osc_TypeDef upSel) |
Configure clock calibration. More... | |
__STATIC_INLINE void | CMU_CalibrateCont (bool enable) |
Configures continuous calibration mode. More... | |
uint32_t | CMU_CalibrateCountGet (void) |
Get calibration count register. More... | |
__STATIC_INLINE void | CMU_CalibrateStart (void) |
Starts calibration. More... | |
__STATIC_INLINE void | CMU_CalibrateStop (void) |
Stop the calibration counters. | |
CMU_ClkDiv_TypeDef | CMU_ClockDivGet (CMU_Clock_TypeDef clock) |
Get clock divisor/prescaler. More... | |
void | CMU_ClockDivSet (CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div) |
Set clock divisor/prescaler. More... | |
void | CMU_ClockEnable (CMU_Clock_TypeDef clock, bool enable) |
Enable/disable a clock. More... | |
uint32_t | CMU_ClockFreqGet (CMU_Clock_TypeDef clock) |
Get clock frequency for a clock point. More... | |
CMU_Select_TypeDef | CMU_ClockSelectGet (CMU_Clock_TypeDef clock) |
Get currently selected reference clock used for a clock branch. More... | |
void | CMU_ClockSelectSet (CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref) |
Select reference clock/oscillator used for a clock branch. More... | |
__STATIC_INLINE uint32_t | CMU_DivToLog2 (CMU_ClkDiv_TypeDef div) |
Convert dividend to logarithmic value. Only works for even numbers equal to 2^n. More... | |
void | CMU_FreezeEnable (bool enable) |
CMU low frequency register synchronization freeze control. More... | |
CMU_HFRCOBand_TypeDef | CMU_HFRCOBandGet (void) |
Get HFRCO band in use. More... | |
void | CMU_HFRCOBandSet (CMU_HFRCOBand_TypeDef band) |
Set HFRCO band and the tuning value based on the value in the calibration table made during production. More... | |
uint32_t | CMU_HFRCOStartupDelayGet (void) |
Get the HFRCO startup delay. More... | |
void | CMU_HFRCOStartupDelaySet (uint32_t delay) |
Set the HFRCO startup delay. More... | |
void | CMU_HFXOInit (const CMU_HFXOInit_TypeDef *hfxoInit) |
Set HFXO control registers. More... | |
__STATIC_INLINE void | CMU_IntClear (uint32_t flags) |
Clear one or more pending CMU interrupts. More... | |
__STATIC_INLINE void | CMU_IntDisable (uint32_t flags) |
Disable one or more CMU interrupts. More... | |
__STATIC_INLINE void | CMU_IntEnable (uint32_t flags) |
Enable one or more CMU interrupts. More... | |
__STATIC_INLINE uint32_t | CMU_IntGet (void) |
Get pending CMU interrupts. More... | |
__STATIC_INLINE uint32_t | CMU_IntGetEnabled (void) |
Get enabled and pending CMU interrupt flags. More... | |
__STATIC_INLINE void | CMU_IntSet (uint32_t flags) |
Set one or more pending CMU interrupts. More... | |
uint32_t | CMU_LCDClkFDIVGet (void) |
Get the LCD framerate divisor (FDIV) setting. More... | |
void | CMU_LCDClkFDIVSet (uint32_t div) |
Set the LCD framerate divisor (FDIV) setting. More... | |
void | CMU_LFXOInit (const CMU_LFXOInit_TypeDef *lfxoInit) |
Set LFXO control registers. More... | |
__STATIC_INLINE void | CMU_Lock (void) |
Lock the CMU in order to protect some of its registers against unintended modification. More... | |
__STATIC_INLINE uint32_t | CMU_Log2ToDiv (uint32_t log2) |
Convert logarithm of 2 prescaler to division factor. More... | |
void | CMU_OscillatorEnable (CMU_Osc_TypeDef osc, bool enable, bool wait) |
Enable/disable oscillator. More... | |
uint32_t | CMU_OscillatorTuningGet (CMU_Osc_TypeDef osc) |
Get oscillator frequency tuning setting. More... | |
void | CMU_OscillatorTuningSet (CMU_Osc_TypeDef osc, uint32_t val) |
Set the oscillator frequency tuning control. More... | |
bool | CMU_PCNTClockExternalGet (unsigned int instance) |
Determine if currently selected PCNTn clock used is external or LFBCLK. More... | |
void | CMU_PCNTClockExternalSet (unsigned int instance, bool external) |
Select PCNTn clock. More... | |
__STATIC_INLINE void | CMU_Unlock (void) |
Unlock the CMU so that writing to locked registers again is possible. | |
#define CMU_HFXOINIT_DEFAULT |
Default HFXO initialization values for Platform 1 devices.
#define CMU_HFXOINIT_EXTERNAL_CLOCK |
#define CMU_LFXOINIT_DEFAULT |
#define CMU_LFXOINIT_EXTERNAL_CLOCK |
#define cmuClkDiv_1 1 |
Clock divisors. These values are valid for prescalers. Divide clock by 1.
Definition at line 149 of file em_cmu.h.
Referenced by CAPLESENSE_setupCMU(), CMU_ClockDivGet(), CMU_ClockDivSet(), and RETARGET_SerialInit().
#define cmuClkDiv_128 128 |
Divide clock by 128.
Definition at line 156 of file em_cmu.h.
Referenced by CMU_ClockDivSet(), and CMU_LCDClkFDIVSet().
#define cmuClkDiv_16 16 |
Divide clock by 16.
Definition at line 153 of file em_cmu.h.
Referenced by CMU_ClockDivGet(), CMU_ClockDivSet(), and CMU_ClockFreqGet().
#define cmuClkDiv_256 256 |
#define cmuClkDiv_32768 32768 |
#define cmuClkDiv_512 512 |
#define cmuClkDiv_8 8 |
typedef uint32_t CMU_ClkDiv_TypeDef |
enum CMU_Clock_TypeDef |
Clock points in CMU. Please refer to CMU overview in reference manual.
enum CMU_Osc_TypeDef |
Oscillator types.
enum CMU_OscMode_TypeDef |
enum CMU_Select_TypeDef |
Selectable clock sources.
CMU_AUXHFRCOBand_TypeDef CMU_AUXHFRCOBandGet | ( | void | ) |
Get AUXHFRCO band in use.
Definition at line 698 of file em_cmu.c.
References _CMU_AUXHFRCOCTRL_BAND_MASK, _CMU_AUXHFRCOCTRL_BAND_SHIFT, and CMU.
void CMU_AUXHFRCOBandSet | ( | CMU_AUXHFRCOBand_TypeDef | band | ) |
Set AUXHFRCO band and the tuning value based on the value in the calibration table made during production.
[in] | band | AUXHFRCO band to activate. |
Definition at line 716 of file em_cmu.c.
References _CMU_AUXHFRCOCTRL_BAND_MASK, _CMU_AUXHFRCOCTRL_BAND_SHIFT, _CMU_AUXHFRCOCTRL_TUNING_MASK, _CMU_AUXHFRCOCTRL_TUNING_SHIFT, _DEVINFO_AUXHFRCOCAL0_BAND11_MASK, _DEVINFO_AUXHFRCOCAL0_BAND11_SHIFT, _DEVINFO_AUXHFRCOCAL0_BAND14_MASK, _DEVINFO_AUXHFRCOCAL0_BAND14_SHIFT, _DEVINFO_AUXHFRCOCAL0_BAND1_MASK, _DEVINFO_AUXHFRCOCAL0_BAND1_SHIFT, _DEVINFO_AUXHFRCOCAL0_BAND7_MASK, _DEVINFO_AUXHFRCOCAL0_BAND7_SHIFT, _DEVINFO_AUXHFRCOCAL1_BAND21_MASK, _DEVINFO_AUXHFRCOCAL1_BAND21_SHIFT, _DEVINFO_AUXHFRCOCAL1_BAND28_MASK, _DEVINFO_AUXHFRCOCAL1_BAND28_SHIFT, CMU, cmuAUXHFRCOBand_11MHz, cmuAUXHFRCOBand_14MHz, cmuAUXHFRCOBand_1MHz, cmuAUXHFRCOBand_21MHz, cmuAUXHFRCOBand_28MHz, cmuAUXHFRCOBand_7MHz, and DEVINFO.
uint32_t CMU_Calibrate | ( | uint32_t | HFCycles, |
CMU_Osc_TypeDef | ref | ||
) |
Calibrate clock.
Run a calibration for HFCLK against a selectable reference clock. Please refer to the reference manual, CMU chapter, for further details.
[in] | HFCycles | The number of HFCLK cycles to run calibration. Increasing this number increases precision, but the calibration will take more time. |
[in] | ref | The reference clock used to compare HFCLK with. |
Definition at line 904 of file em_cmu.c.
References _CMU_CALCNT_CALCNT_MASK, _CMU_CALCNT_CALCNT_SHIFT, _CMU_STATUS_CALBSY_SHIFT, BUS_RegBitRead(), CMU, CMU_CALCTRL_UPSEL_AUXHFRCO, CMU_CALCTRL_UPSEL_HFRCO, CMU_CALCTRL_UPSEL_HFXO, CMU_CALCTRL_UPSEL_LFRCO, CMU_CALCTRL_UPSEL_LFXO, CMU_CMD_CALSTART, cmuOsc_AUXHFRCO, cmuOsc_HFRCO, cmuOsc_HFXO, cmuOsc_LFRCO, and cmuOsc_LFXO.
void CMU_CalibrateConfig | ( | uint32_t | downCycles, |
CMU_Osc_TypeDef | downSel, | ||
CMU_Osc_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.
[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 |
[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 985 of file em_cmu.c.
References _CMU_CALCNT_CALCNT_MASK, _CMU_CALCNT_CALCNT_SHIFT, _CMU_CALCTRL_DOWNSEL_MASK, _CMU_CALCTRL_UPSEL_MASK, CMU, CMU_CALCTRL_DOWNSEL_AUXHFRCO, CMU_CALCTRL_DOWNSEL_HFRCO, CMU_CALCTRL_DOWNSEL_HFXO, CMU_CALCTRL_DOWNSEL_LFRCO, CMU_CALCTRL_DOWNSEL_LFXO, CMU_CALCTRL_UPSEL_AUXHFRCO, CMU_CALCTRL_UPSEL_HFRCO, CMU_CALCTRL_UPSEL_HFXO, CMU_CALCTRL_UPSEL_LFRCO, CMU_CALCTRL_UPSEL_LFXO, cmuOsc_AUXHFRCO, cmuOsc_HFRCO, cmuOsc_HFXO, cmuOsc_LFRCO, and cmuOsc_LFXO.
__STATIC_INLINE void CMU_CalibrateCont | ( | bool | enable | ) |
Configures continuous calibration mode.
[in] | enable | If true, enables continuous calibration, if false disables continuous calibrartion |
Definition at line 1268 of file em_cmu.h.
References _CMU_CALCTRL_CONT_SHIFT, BUS_RegBitWrite(), and CMU.
uint32_t CMU_CalibrateCountGet | ( | void | ) |
Get calibration count register.
Definition at line 1072 of file em_cmu.c.
References _CMU_CALCTRL_CONT_SHIFT, _CMU_STATUS_CALBSY_SHIFT, BUS_RegBitRead(), and CMU.
__STATIC_INLINE void CMU_CalibrateStart | ( | void | ) |
Starts calibration.
Definition at line 1282 of file em_cmu.h.
References CMU, and CMU_CMD_CALSTART.
CMU_ClkDiv_TypeDef CMU_ClockDivGet | ( | CMU_Clock_TypeDef | clock | ) |
Get clock divisor/prescaler.
[in] | clock | Clock point to get divisor/prescaler for. Notice that not all clock points have a divisor/prescaler. Please refer to CMU overview in reference manual. |
clock
specifies a clock point without a divisor/prescaler. Definition at line 1112 of file em_cmu.c.
References _CMU_CTRL_HFCLKDIV_MASK, _CMU_CTRL_HFCLKDIV_SHIFT, _CMU_HFCORECLKDIV_HFCORECLKDIV_MASK, _CMU_HFCORECLKDIV_HFCORECLKDIV_SHIFT, _CMU_HFPERCLKDIV_HFPERCLKDIV_MASK, _CMU_HFPERCLKDIV_HFPERCLKDIV_SHIFT, _CMU_LFAPRESC0_LCD_MASK, _CMU_LFAPRESC0_LCD_SHIFT, _CMU_LFAPRESC0_LESENSE_MASK, _CMU_LFAPRESC0_LESENSE_SHIFT, _CMU_LFAPRESC0_LETIMER0_MASK, _CMU_LFAPRESC0_LETIMER0_SHIFT, _CMU_LFAPRESC0_RTC_MASK, _CMU_LFAPRESC0_RTC_SHIFT, _CMU_LFBPRESC0_LEUART0_MASK, _CMU_LFBPRESC0_LEUART0_SHIFT, _CMU_LFBPRESC0_LEUART1_MASK, _CMU_LFBPRESC0_LEUART1_SHIFT, CMU, CMU_DivToLog2(), CMU_Log2ToDiv(), cmuClkDiv_1, cmuClkDiv_16, cmuClock_LCDpre, cmuClock_LESENSE, cmuClock_LETIMER0, cmuClock_LEUART0, cmuClock_LEUART1, and cmuClock_RTC.
Referenced by UDELAY_Calibrate().
void CMU_ClockDivSet | ( | CMU_Clock_TypeDef | clock, |
CMU_ClkDiv_TypeDef | div | ||
) |
Set clock divisor/prescaler.
[in] | clock | Clock point to set divisor/prescaler for. Notice that not all clock points have a divisor/prescaler, please refer to CMU overview in the reference manual. |
[in] | div | The clock divisor to use (<= cmuClkDiv_512). |
Definition at line 1244 of file em_cmu.c.
References _CMU_CTRL_HFCLKDIV_MASK, _CMU_CTRL_HFCLKDIV_SHIFT, _CMU_HFCORECLKDIV_HFCORECLKDIV_MASK, _CMU_HFCORECLKDIV_HFCORECLKDIV_SHIFT, _CMU_HFPERCLKDIV_HFPERCLKDIV_MASK, _CMU_HFPERCLKDIV_HFPERCLKDIV_SHIFT, _CMU_LFAPRESC0_LCD_MASK, _CMU_LFAPRESC0_LCD_SHIFT, _CMU_LFAPRESC0_LESENSE_MASK, _CMU_LFAPRESC0_LESENSE_SHIFT, _CMU_LFAPRESC0_LETIMER0_MASK, _CMU_LFAPRESC0_LETIMER0_SHIFT, _CMU_LFAPRESC0_RTC_MASK, _CMU_LFAPRESC0_RTC_SHIFT, _CMU_LFBPRESC0_LEUART0_MASK, _CMU_LFBPRESC0_LEUART0_SHIFT, _CMU_LFBPRESC0_LEUART1_MASK, _CMU_LFBPRESC0_LEUART1_SHIFT, CMU, CMU_DivToLog2(), CMU_SYNCBUSY_LFAPRESC0, CMU_SYNCBUSY_LFBPRESC0, cmuClkDiv_1, cmuClkDiv_128, cmuClkDiv_16, cmuClkDiv_32768, cmuClkDiv_512, cmuClkDiv_8, cmuClock_LCDpre, cmuClock_LESENSE, cmuClock_LETIMER0, cmuClock_LEUART0, cmuClock_LEUART1, cmuClock_RTC, SystemCoreClockGet(), and SystemHFClockGet().
Referenced by CAPLESENSE_setupCMU(), RETARGET_SerialInit(), RTCDRV_Init(), SegmentLCD_Init(), UARTDRV_InitLeuart(), and UDELAY_Calibrate().
void CMU_ClockEnable | ( | CMU_Clock_TypeDef | clock, |
bool | enable | ||
) |
Enable/disable a clock.
In general, module clocking is disabled after a reset. If a module clock is disabled, the registers of that module are not accessible and reading from such registers may return undefined values. Writing to registers of clock disabled modules have no effect. One should normally avoid accessing module registers of a module with a disabled clock.
[in] | clock | The clock to enable/disable. Notice that not all defined clock points have separate enable/disable control, please refer to CMU overview in reference manual. |
[in] | enable |
|
Definition at line 1453 of file em_cmu.c.
References BUS_RegBitWrite(), CMU, CMU_ClockFreqGet(), CMU_SYNCBUSY_LFACLKEN0, CMU_SYNCBUSY_LFBCLKEN0, and cmuClock_HFLE.
Referenced by adcInit(), BOARD_init(), BSP_BccDeInit(), BSP_BccInit(), BSP_BusControlModeSet(), BSP_EbiInit(), BSP_McuBoard_Init(), CAPLESENSE_setupCMU(), CAPSENSE_Init(), DMA_Init(), DMADRV_DeInit(), ezradio_hal_GpioInit(), I2CSPM_Init(), ICM20648_spiInit(), MIC_init(), MICROSD_Init(), MICROSD_PowerOff(), MICROSD_PowerOn(), MSDD_Init(), RETARGET_SerialInit(), RTCDRV_DeInit(), RTCDRV_Init(), SegmentLCD_Disable(), SegmentLCD_Init(), setupOscillators(), SPI_TFT_Init(), SPIDRV_DeInit(), SPIDRV_Init(), TOUCH_Init(), UARTDRV_DeInit(), UARTDRV_InitLeuart(), UARTDRV_InitUart(), UDELAY_Calibrate(), USBD_Init(), USBTIMER_Init(), USTIMER_DeInit(), USTIMER_Init(), VDDCHECK_Disable(), and VDDCHECK_Init().
uint32_t CMU_ClockFreqGet | ( | CMU_Clock_TypeDef | clock | ) |
Get clock frequency for a clock point.
[in] | clock | Clock point to fetch frequency for. |
Definition at line 1550 of file em_cmu.c.
References _CMU_HFPERCLKDIV_HFPERCLKDIV_MASK, _CMU_HFPERCLKDIV_HFPERCLKDIV_SHIFT, _CMU_LCDCTRL_FDIV_MASK, _CMU_LCDCTRL_FDIV_SHIFT, _CMU_LFAPRESC0_LCD_MASK, _CMU_LFAPRESC0_LCD_SHIFT, _CMU_LFAPRESC0_LESENSE_MASK, _CMU_LFAPRESC0_LESENSE_SHIFT, _CMU_LFAPRESC0_LETIMER0_MASK, _CMU_LFAPRESC0_LETIMER0_SHIFT, _CMU_LFAPRESC0_RTC_MASK, _CMU_LFAPRESC0_RTC_SHIFT, _CMU_LFBPRESC0_LEUART0_MASK, _CMU_LFBPRESC0_LEUART0_SHIFT, _CMU_LFBPRESC0_LEUART1_MASK, _CMU_LFBPRESC0_LEUART1_SHIFT, CMU, CMU_DivToLog2(), CMU_Log2ToDiv(), cmuClkDiv_16, cmuClock_LFA, cmuClock_LFB, SystemCoreClockGet(), and SystemHFClockGet().
Referenced by ADC_PrescaleCalc(), ADC_TimebaseCalc(), BSP_TraceSwoSetup(), CMU_ClockEnable(), CMU_ClockSelectSet(), CMU_HFRCOBandSet(), DAC_PrescaleCalc(), I2C_BusFreqGet(), I2C_BusFreqSet(), LESENSE_ScanFreqSet(), LEUART_BaudrateGet(), LEUART_BaudrateSet(), MIC_init(), MSC_Init(), UARTDRV_InitLeuart(), USART_BaudrateAsyncSet(), USART_BaudrateGet(), USART_BaudrateSyncSet(), USBTIMER_Init(), USTIMER_Init(), and UTIL_init().
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. One of: |
clock
provided. Definition at line 2146 of file em_cmu.c.
References _CMU_CTRL_DBGCLK_MASK, _CMU_LFCLKSEL_LFA_MASK, _CMU_LFCLKSEL_LFAE_MASK, _CMU_LFCLKSEL_LFB_MASK, _CMU_LFCLKSEL_LFBE_MASK, _CMU_STATUS_USBCHFCLKSEL_MASK, CMU, CMU_CTRL_DBGCLK_AUXHFRCO, CMU_CTRL_DBGCLK_HFCLK, CMU_LFCLKSEL_LFA_HFCORECLKLEDIV2, CMU_LFCLKSEL_LFA_LFRCO, CMU_LFCLKSEL_LFA_LFXO, CMU_LFCLKSEL_LFB_HFCORECLKLEDIV2, CMU_LFCLKSEL_LFB_LFRCO, CMU_LFCLKSEL_LFB_LFXO, CMU_STATUS_HFRCOSEL, CMU_STATUS_HFXOSEL, CMU_STATUS_LFRCOSEL, CMU_STATUS_LFXOSEL, CMU_STATUS_USBCHFCLKSEL, CMU_STATUS_USBCLFRCOSEL, CMU_STATUS_USBCLFXOSEL, cmuSelect_AUXHFRCO, cmuSelect_Disabled, cmuSelect_Error, cmuSelect_HFCLK, cmuSelect_HFCLKLE, cmuSelect_HFRCO, cmuSelect_HFXO, cmuSelect_LFRCO, cmuSelect_LFXO, and cmuSelect_ULFRCO.
Referenced by CMU_HFRCOBandSet(), CMU_HFXOInit(), CMU_LFXOInit(), UDELAY_Calibrate(), and USBD_Init().
void CMU_ClockSelectSet | ( | CMU_Clock_TypeDef | clock, |
CMU_Select_TypeDef | ref | ||
) |
Select reference clock/oscillator used for a clock branch.
Notice that if a selected reference is not enabled prior to selecting its use, it will be enabled, and this function will wait for the selected oscillator to be stable. It will however NOT be disabled if another reference clock is selected later.
This feature is particularly important if selecting a new reference clock for the clock branch clocking the core, otherwise the system may halt.
[in] | clock | Clock branch to select reference clock for. One of: |
[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 2521 of file em_cmu.c.
References _CMU_CTRL_DBGCLK_MASK, _CMU_CTRL_HFXOBUFCUR_MASK, _CMU_HFCORECLKEN0_LE_SHIFT, _CMU_LFCLKSEL_LFA_DISABLED, _CMU_LFCLKSEL_LFA_HFCORECLKLEDIV2, _CMU_LFCLKSEL_LFA_LFRCO, _CMU_LFCLKSEL_LFA_LFXO, _CMU_LFCLKSEL_LFA_MASK, _CMU_LFCLKSEL_LFA_SHIFT, _CMU_LFCLKSEL_LFAE_MASK, _CMU_LFCLKSEL_LFAE_SHIFT, _CMU_LFCLKSEL_LFB_MASK, _CMU_LFCLKSEL_LFB_SHIFT, _CMU_LFCLKSEL_LFBE_MASK, _CMU_LFCLKSEL_LFBE_SHIFT, BUS_RegBitWrite(), CMU, CMU_ClockFreqGet(), CMU_CMD_HFCLKSEL_HFRCO, CMU_CMD_HFCLKSEL_HFXO, CMU_CMD_HFCLKSEL_LFRCO, CMU_CMD_HFCLKSEL_LFXO, CMU_CMD_USBCCLKSEL_HFCLKNODIV, CMU_CMD_USBCCLKSEL_LFRCO, CMU_CMD_USBCCLKSEL_LFXO, CMU_CTRL_DBGCLK_AUXHFRCO, CMU_CTRL_DBGCLK_HFCLK, CMU_CTRL_HFXOBUFCUR_BOOSTABOVE32MHZ, CMU_CTRL_HFXOBUFCUR_BOOSTUPTO32MHZ, CMU_HFRCOBandGet(), CMU_OscillatorEnable(), CMU_STATUS_USBCHFCLKSEL, CMU_STATUS_USBCLFRCOSEL, CMU_STATUS_USBCLFXOSEL, cmuClock_HF, cmuClock_HFLE, cmuOsc_HFRCO, cmuOsc_HFXO, cmuOsc_LFRCO, cmuOsc_LFXO, cmuSelect_AUXHFRCO, cmuSelect_Disabled, cmuSelect_HFCLK, cmuSelect_HFCLKLE, cmuSelect_HFRCO, cmuSelect_HFXO, cmuSelect_LFRCO, cmuSelect_LFXO, cmuSelect_ULFRCO, SystemCoreClockGet(), and SystemHFXOClockGet().
Referenced by BSP_BccInit(), CAPLESENSE_setupCMU(), MIC_init(), RETARGET_SerialInit(), RTCDRV_Init(), SegmentLCD_Init(), setupOscillators(), UARTDRV_InitLeuart(), UDELAY_Calibrate(), USBD_Init(), and USBH_Init().
__STATIC_INLINE uint32_t CMU_DivToLog2 | ( | CMU_ClkDiv_TypeDef | div | ) |
Convert dividend to logarithmic value. Only works for even numbers equal to 2^n.
[in] | div | Unscaled dividend. |
Definition at line 1311 of file em_cmu.h.
Referenced by CMU_ClockDivGet(), CMU_ClockDivSet(), CMU_ClockFreqGet(), and RTCDRV_Init().
void CMU_FreezeEnable | ( | bool | enable | ) |
CMU low frequency register synchronization freeze control.
Some CMU registers requires synchronization into the low frequency (LF) domain. The freeze feature allows for several such registers to be modified before passing them to the LF domain simultaneously (which takes place when the freeze mode is disabled).
Another usage scenario of this feature, is when using an API (such as the CMU API) for modifying several bit fields consecutively in the same register. If freeze mode is enabled during this sequence, stalling can be avoided.
[in] | enable |
|
Definition at line 3000 of file em_cmu.c.
References CMU, and CMU_FREEZE_REGFREEZE.
CMU_HFRCOBand_TypeDef CMU_HFRCOBandGet | ( | void | ) |
Get HFRCO band in use.
Definition at line 3032 of file em_cmu.c.
References _CMU_HFRCOCTRL_BAND_MASK, _CMU_HFRCOCTRL_BAND_SHIFT, and CMU.
Referenced by CMU_ClockSelectSet().
void CMU_HFRCOBandSet | ( | CMU_HFRCOBand_TypeDef | band | ) |
Set HFRCO band and the tuning value based on the value in the calibration table made during production.
[in] | band | HFRCO band to activate. |
Definition at line 3049 of file em_cmu.c.
References _CMU_HFRCOCTRL_BAND_MASK, _CMU_HFRCOCTRL_BAND_SHIFT, _CMU_HFRCOCTRL_TUNING_MASK, _CMU_HFRCOCTRL_TUNING_SHIFT, _DEVINFO_HFRCOCAL0_BAND11_MASK, _DEVINFO_HFRCOCAL0_BAND11_SHIFT, _DEVINFO_HFRCOCAL0_BAND14_MASK, _DEVINFO_HFRCOCAL0_BAND14_SHIFT, _DEVINFO_HFRCOCAL0_BAND1_MASK, _DEVINFO_HFRCOCAL0_BAND1_SHIFT, _DEVINFO_HFRCOCAL0_BAND7_MASK, _DEVINFO_HFRCOCAL0_BAND7_SHIFT, _DEVINFO_HFRCOCAL1_BAND21_MASK, _DEVINFO_HFRCOCAL1_BAND21_SHIFT, _DEVINFO_HFRCOCAL1_BAND28_MASK, _DEVINFO_HFRCOCAL1_BAND28_SHIFT, CMU, CMU_ClockFreqGet(), CMU_ClockSelectGet(), cmuClock_HF, cmuClock_HFLE, cmuHFRCOBand_11MHz, cmuHFRCOBand_14MHz, cmuHFRCOBand_1MHz, cmuHFRCOBand_21MHz, cmuHFRCOBand_28MHz, cmuHFRCOBand_7MHz, cmuSelect_HFRCO, DEVINFO, and SystemCoreClockGet().
uint32_t CMU_HFRCOStartupDelayGet | ( | void | ) |
Get the HFRCO startup delay.
Please refer to the reference manual for further details.
Definition at line 3282 of file em_cmu.c.
References _CMU_HFRCOCTRL_SUDELAY_MASK, _CMU_HFRCOCTRL_SUDELAY_SHIFT, and CMU.
void CMU_HFRCOStartupDelaySet | ( | uint32_t | delay | ) |
Set the HFRCO startup delay.
Please refer to the reference manual for further details.
[in] | delay | The startup delay to set (<= 31). |
Definition at line 3299 of file em_cmu.c.
References _CMU_HFRCOCTRL_SUDELAY_MASK, _CMU_HFRCOCTRL_SUDELAY_SHIFT, and CMU.
void CMU_HFXOInit | ( | const CMU_HFXOInit_TypeDef * | hfxoInit | ) |
Set HFXO control registers.
[in] | hfxoInit | HFXO setup parameters |
Definition at line 3379 of file em_cmu.c.
References _CMU_CTRL_HFXOBOOST_MASK, _CMU_CTRL_HFXOBOOST_SHIFT, _CMU_CTRL_HFXOGLITCHDETEN_MASK, _CMU_CTRL_HFXOMODE_MASK, _CMU_CTRL_HFXOMODE_SHIFT, _CMU_CTRL_HFXOTIMEOUT_MASK, _CMU_CTRL_HFXOTIMEOUT_SHIFT, CMU_HFXOInit_TypeDef::boost, BUS_RegMaskedWrite(), CMU, CMU_ClockSelectGet(), CMU_CTRL_HFXOGLITCHDETEN, CMU_OscillatorEnable(), cmuClock_HF, cmuOsc_HFXO, cmuOscMode_AcCoupled, cmuOscMode_External, cmuSelect_HFXO, EMU, CMU_HFXOInit_TypeDef::glitchDetector, CMU_HFXOInit_TypeDef::mode, and CMU_HFXOInit_TypeDef::timeout.
__STATIC_INLINE void CMU_IntClear | ( | uint32_t | flags | ) |
__STATIC_INLINE void CMU_IntDisable | ( | uint32_t | flags | ) |
__STATIC_INLINE void CMU_IntEnable | ( | uint32_t | flags | ) |
Enable one or more CMU interrupts.
[in] | flags | CMU interrupt sources to enable. |
Definition at line 1363 of file em_cmu.h.
References CMU.
__STATIC_INLINE uint32_t CMU_IntGet | ( | void | ) |
__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.
Definition at line 1398 of file em_cmu.h.
References CMU.
__STATIC_INLINE void CMU_IntSet | ( | uint32_t | flags | ) |
uint32_t CMU_LCDClkFDIVGet | ( | void | ) |
Get the LCD framerate divisor (FDIV) setting.
Definition at line 3479 of file em_cmu.c.
References _CMU_LCDCTRL_FDIV_MASK, _CMU_LCDCTRL_FDIV_SHIFT, and CMU.
void CMU_LCDClkFDIVSet | ( | uint32_t | div | ) |
Set the LCD framerate divisor (FDIV) setting.
[in] | div | The FDIV setting to use. |
Definition at line 3502 of file em_cmu.c.
References _CMU_LCDCTRL_FDIV_MASK, _CMU_LCDCTRL_FDIV_SHIFT, CMU, CMU_LFACLKEN0_LCD, and cmuClkDiv_128.
Referenced by SegmentLCD_Init().
void CMU_LFXOInit | ( | const CMU_LFXOInit_TypeDef * | lfxoInit | ) |
Set LFXO control registers.
[in] | lfxoInit | LFXO setup parameters |
Definition at line 3534 of file em_cmu.c.
References _CMU_CTRL_LFXOBOOST_MASK, _CMU_CTRL_LFXOBOOST_SHIFT, _CMU_CTRL_LFXOMODE_MASK, _CMU_CTRL_LFXOMODE_SHIFT, _CMU_CTRL_LFXOTIMEOUT_MASK, _CMU_CTRL_LFXOTIMEOUT_SHIFT, CMU_LFXOInit_TypeDef::boost, BUS_RegBitWrite(), BUS_RegMaskedWrite(), CMU, CMU_ClockSelectGet(), CMU_OscillatorEnable(), cmuClock_HF, cmuOsc_LFXO, cmuSelect_LFXO, EMU, CMU_LFXOInit_TypeDef::mode, and CMU_LFXOInit_TypeDef::timeout.
__STATIC_INLINE void CMU_Lock | ( | void | ) |
Lock the CMU in order to protect some of its registers against unintended modification.
Please refer to the reference manual for CMU registers that will be locked.
Definition at line 1433 of file em_cmu.h.
References CMU, and CMU_LOCK_LOCKKEY_LOCK.
Referenced by EMU_EnterEM3().
__STATIC_INLINE uint32_t CMU_Log2ToDiv | ( | uint32_t | log2 | ) |
Convert logarithm of 2 prescaler to division factor.
[in] | log2 | Logarithm of 2, as used by fixed prescalers. |
Definition at line 1449 of file em_cmu.h.
Referenced by CMU_ClockDivGet(), and CMU_ClockFreqGet().
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 enable is true.
|
Definition at line 3594 of file em_cmu.c.
References _CMU_STATUS_AUXHFRCOENS_SHIFT, _CMU_STATUS_AUXHFRCORDY_SHIFT, _CMU_STATUS_HFRCOENS_SHIFT, _CMU_STATUS_HFRCORDY_SHIFT, _CMU_STATUS_HFXOENS_SHIFT, _CMU_STATUS_HFXORDY_SHIFT, _CMU_STATUS_LFRCOENS_SHIFT, _CMU_STATUS_LFRCORDY_SHIFT, _CMU_STATUS_LFXOENS_SHIFT, _CMU_STATUS_LFXORDY_SHIFT, BUS_RegBitRead(), CMU, CMU_OSCENCMD_AUXHFRCODIS, CMU_OSCENCMD_AUXHFRCOEN, CMU_OSCENCMD_HFRCODIS, CMU_OSCENCMD_HFRCOEN, CMU_OSCENCMD_HFXODIS, CMU_OSCENCMD_HFXOEN, CMU_OSCENCMD_LFRCODIS, CMU_OSCENCMD_LFRCOEN, CMU_OSCENCMD_LFXODIS, CMU_OSCENCMD_LFXOEN, CMU_OscillatorTuningGet(), CMU_OscillatorTuningSet(), cmuOsc_AUXHFRCO, cmuOsc_HFRCO, cmuOsc_HFXO, cmuOsc_LFRCO, and cmuOsc_LFXO.
Referenced by CMU_ClockSelectSet(), CMU_HFXOInit(), CMU_LFXOInit(), DBG_SWOEnable(), setupOscillators(), UDELAY_Calibrate(), and USBD_Init().
uint32_t CMU_OscillatorTuningGet | ( | CMU_Osc_TypeDef | osc | ) |
Get oscillator frequency tuning setting.
[in] | osc | Oscillator to get tuning value for, one of:
|
Definition at line 3772 of file em_cmu.c.
References _CMU_AUXHFRCOCTRL_TUNING_MASK, _CMU_AUXHFRCOCTRL_TUNING_SHIFT, _CMU_HFRCOCTRL_TUNING_MASK, _CMU_HFRCOCTRL_TUNING_SHIFT, _CMU_LFRCOCTRL_TUNING_MASK, _CMU_LFRCOCTRL_TUNING_SHIFT, CMU, cmuOsc_AUXHFRCO, cmuOsc_HFRCO, cmuOsc_HFXO, and cmuOsc_LFRCO.
Referenced by CMU_OscillatorEnable().
void CMU_OscillatorTuningSet | ( | CMU_Osc_TypeDef | osc, |
uint32_t | val | ||
) |
Set the oscillator frequency tuning control.
[in] | osc | Oscillator to set tuning value for, one of:
|
[in] | val | The oscillator frequency tuning setting to use. |
Definition at line 3830 of file em_cmu.c.
References _CMU_AUXHFRCOCTRL_TUNING_MASK, _CMU_AUXHFRCOCTRL_TUNING_SHIFT, _CMU_HFRCOCTRL_TUNING_MASK, _CMU_HFRCOCTRL_TUNING_SHIFT, _CMU_LFRCOCTRL_TUNING_MASK, _CMU_LFRCOCTRL_TUNING_SHIFT, BUS_RegBitRead(), BUS_RegMaskedWrite(), CMU, CMU_STATUS_HFXOENS, cmuOsc_AUXHFRCO, cmuOsc_HFRCO, cmuOsc_HFXO, and cmuOsc_LFRCO.
Referenced by CMU_OscillatorEnable().
bool CMU_PCNTClockExternalGet | ( | unsigned int | instance | ) |
Determine if currently selected PCNTn clock used is external or LFBCLK.
[in] | instance | PCNT instance number to get currently selected clock source for. |
Definition at line 4019 of file em_cmu.c.
References CMU, CMU_PCNTCTRL_PCNT0CLKSEL_PCNT0S0, CMU_PCNTCTRL_PCNT1CLKSEL_PCNT1S0, and CMU_PCNTCTRL_PCNT2CLKSEL_PCNT2S0.
void CMU_PCNTClockExternalSet | ( | unsigned int | instance, |
bool | external | ||
) |
Select PCNTn clock.
[in] | instance | PCNT instance number to set selected clock source for. |
[in] | external | Set to true to select external clock, false to select LFBCLK. |
Definition at line 4061 of file em_cmu.c.
References BUS_RegBitWrite(), CMU, and PCNT_COUNT.
Referenced by PCNT_Init(), and PCNT_Reset().