VCMP - Voltage Comparator

Description

Supply Voltage Comparator (VCMP) Peripheral API.

This module contains functions to control the VCMP peripheral of Silicon Labs 32-bit MCUs and SoCs. The VCMP monitors the input voltage supply and generates interrupts on events using as little as 100 nA.

Data Structures

struct VCMP_Init_TypeDef
VCMP Initialization structure.

Functions

void VCMP_Init (const VCMP_Init_TypeDef *vcmpInit)
Configure and enable Voltage Comparator.
void VCMP_LowPowerRefSet (bool enable)
Enable or disable Low Power Reference setting.
void VCMP_TriggerSet (int level)
Configure the trigger level of the voltage comparator.
void VCMP_Enable (void)
Enable Voltage Comparator.
void VCMP_Disable (void)
Disable Voltage Comparator.
uint32_t VCMP_VoltageToLevel (float v)
Calculate voltage to trigger level.
bool VCMP_VDDLower (void)
Check if VDD is lower than trigger level.
bool VCMP_VDDHigher (void)
Check if VDD is higher than trigger level.
bool VCMP_Ready (void)
Check if VCMP output is ready.
void VCMP_IntClear (uint32_t flags)
Clear one or more pending VCMP interrupts.
void VCMP_IntSet (uint32_t flags)
Set one or more pending VCMP interrupts from SW.
void VCMP_IntDisable (uint32_t flags)
Disable one or more VCMP interrupts.
void VCMP_IntEnable (uint32_t flags)
Enable one or more VCMP interrupts.
uint32_t VCMP_IntGet (void)
Get pending VCMP interrupt flags.
uint32_t VCMP_IntGetEnabled (void)
Get enabled and pending VCMP interrupt flags.

Macros

#define VCMP_INIT_DEFAULT
Default VCMP initialization structure.

Enumerations

enum VCMP_WarmTime_TypeDef {
vcmpWarmTime4Cycles = _VCMP_CTRL_WARMTIME_4CYCLES,
vcmpWarmTime8Cycles = _VCMP_CTRL_WARMTIME_8CYCLES,
vcmpWarmTime16Cycles = _VCMP_CTRL_WARMTIME_16CYCLES,
vcmpWarmTime32Cycles = _VCMP_CTRL_WARMTIME_32CYCLES,
vcmpWarmTime64Cycles = _VCMP_CTRL_WARMTIME_64CYCLES,
vcmpWarmTime128Cycles = _VCMP_CTRL_WARMTIME_128CYCLES,
vcmpWarmTime256Cycles = _VCMP_CTRL_WARMTIME_256CYCLES,
vcmpWarmTime512Cycles = _VCMP_CTRL_WARMTIME_512CYCLES
}
Warm-up Time in High Frequency Peripheral Clock cycles.
enum VCMP_Hysteresis_TypeDef {
vcmpHystNone ,
vcmpHyst20mV
}
Hysteresis configuration.

Function Documentation

VCMP_Init()

void VCMP_Init ( const VCMP_Init_TypeDef * vcmpInit )

Configure and enable Voltage Comparator.

Parameters
[in] vcmpInit The VCMP Initialization structure.

VCMP_LowPowerRefSet()

void VCMP_LowPowerRefSet ( bool enable )

Enable or disable Low Power Reference setting.

Parameters
[in] enable If true, enables low power reference. If false, disable low power reference.

VCMP_TriggerSet()

void VCMP_TriggerSet ( int level )

Configure the trigger level of the voltage comparator.

Parameters
[in] level A trigger value, in range 0-63.

VCMP_Enable()

void VCMP_Enable ( void )
inline

Enable Voltage Comparator.

VCMP_Disable()

void VCMP_Disable ( void )
inline

Disable Voltage Comparator.

VCMP_VoltageToLevel()

uint32_t VCMP_VoltageToLevel ( float v )
inline

Calculate voltage to trigger level.

Note
Soft float support is needed for this function to work.
Parameters
[in] v Voltage Level for trigger.
Returns
Trigger level.

VCMP_VDDLower()

bool VCMP_VDDLower ( void )
inline

Check if VDD is lower than trigger level.

Returns
True if Voltage Comparator indicated VDD < trigger level, else returns false.

VCMP_VDDHigher()

bool VCMP_VDDHigher ( void )
inline

Check if VDD is higher than trigger level.

Returns
True if Voltage Comparator indicated VDD > trigger level, else returns false.

VCMP_Ready()

bool VCMP_Ready ( void )
inline

Check if VCMP output is ready.

Returns
True if VCMP output is ready.

VCMP_IntClear()

void VCMP_IntClear ( uint32_t flags )
inline

Clear one or more pending VCMP interrupts.

Parameters
[in] flags VCMP interrupt sources to clear. Use a set of interrupt flags OR-ed together to clear multiple interrupt sources for the VCMP module (VCMP_IFS_nnn).

VCMP_IntSet()

void VCMP_IntSet ( uint32_t flags )
inline

Set one or more pending VCMP interrupts from SW.

Parameters
[in] flags VCMP interrupt sources to set to pending. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the VCMP module (VCMP_IFS_nnn).

VCMP_IntDisable()

void VCMP_IntDisable ( uint32_t flags )
inline

Disable one or more VCMP interrupts.

Parameters
[in] flags VCMP interrupt sources to enable. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the VCMP module (VCMP_IFS_nnn).

VCMP_IntEnable()

void VCMP_IntEnable ( uint32_t flags )
inline

Enable one or more VCMP interrupts.

Parameters
[in] flags VCMP interrupt sources to enable. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the VCMP module (VCMP_IFS_nnn).

VCMP_IntGet()

uint32_t VCMP_IntGet ( void )
inline

Get pending VCMP interrupt flags.

Note
The event bits are not cleared by the use of this function.
Returns
Pending VCMP interrupt sources. Returns a set of interrupt flags OR-ed together for multiple interrupt sources in the VCMP module (VCMP_IFS_nnn).

VCMP_IntGetEnabled()

uint32_t VCMP_IntGetEnabled ( void )
inline

Get enabled and pending VCMP 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 VCMP interrupt sources. The return value is the bitwise AND combination of
  • the OR combination of enabled interrupt sources in VCMP_IEN_nnn register (VCMP_IEN_nnn) and
  • the OR combination of valid interrupt flags of the VCMP module (VCMP_IF_nnn).

Macro Definition Documentation

VCMP_INIT_DEFAULT

#define VCMP_INIT_DEFAULT
Value:
{ \
true, \
0x7, \
false, \
false, \
vcmpWarmTime4Cycles, \
vcmpHystNone, \
0, \
true, \
39, \
true, \
}

Default VCMP initialization structure.

Enumeration Type Documentation

VCMP_WarmTime_TypeDef

Warm-up Time in High Frequency Peripheral Clock cycles.

Enumerator
vcmpWarmTime4Cycles

4 cycles

vcmpWarmTime8Cycles

8 cycles

vcmpWarmTime16Cycles

16 cycles

vcmpWarmTime32Cycles

32 cycles

vcmpWarmTime64Cycles

64 cycles

vcmpWarmTime128Cycles

128 cycles

vcmpWarmTime256Cycles

256 cycles

vcmpWarmTime512Cycles

512 cycles

VCMP_Hysteresis_TypeDef

Hysteresis configuration.

Enumerator
vcmpHystNone

Normal operation, no hysteresis.

vcmpHyst20mV

Digital output will not toggle until positive edge is at least 20 mV above or below negative input voltage.