VCMP - Voltage Comparator#

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.

Modules#

VCMP_Init_TypeDef

Enumerations#

enum
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
vcmpHystNone
vcmpHyst20mV
}

Hysteresis configuration.

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

Enable Voltage Comparator.

void

Disable Voltage Comparator.

uint32_t

Calculate voltage to trigger level.

bool

Check whether VDD is lower than the trigger level.

bool

Check whether VDD is higher than the trigger level.

bool

Check whether the 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

Get pending VCMP interrupt flags.

uint32_t

Get enabled and pending VCMP interrupt flags.

Macros#

#define
VCMP_INIT_DEFAULT undefined

Default VCMP initialization structure.

Enumeration Documentation#

VCMP_WarmTime_TypeDef#

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#

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.


Function Documentation#

VCMP_Init#

void VCMP_Init (const VCMP_Init_TypeDef * vcmpInit)

Configure and enable Voltage Comparator.

Parameters
TypeDirectionArgument NameDescription
const VCMP_Init_TypeDef *[in]vcmpInit

The VCMP Initialization structure.


VCMP_LowPowerRefSet#

void VCMP_LowPowerRefSet (bool enable)

Enable or disable Low Power Reference setting.

Parameters
TypeDirectionArgument NameDescription
bool[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
TypeDirectionArgument NameDescription
int[in]level

A trigger value, in range 0-63.


VCMP_Enable#

void VCMP_Enable (void )

Enable Voltage Comparator.

Parameters
TypeDirectionArgument NameDescription
voidN/A

VCMP_Disable#

void VCMP_Disable (void )

Disable Voltage Comparator.

Parameters
TypeDirectionArgument NameDescription
voidN/A

VCMP_VoltageToLevel#

uint32_t VCMP_VoltageToLevel (float v)

Calculate voltage to trigger level.

Parameters
TypeDirectionArgument NameDescription
float[in]v

Voltage Level for trigger.

Note

  • Soft float support is needed for this function to work.

Returns

  • Trigger level.


VCMP_VDDLower#

bool VCMP_VDDLower (void )

Check whether VDD is lower than the trigger level.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

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


VCMP_VDDHigher#

bool VCMP_VDDHigher (void )

Check whether VDD is higher than the trigger level.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

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


VCMP_Ready#

bool VCMP_Ready (void )

Check whether the VCMP output is ready.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • True if VCMP output is ready.


VCMP_IntClear#

void VCMP_IntClear (uint32_t flags)

Clear one or more pending VCMP interrupts.

Parameters
TypeDirectionArgument NameDescription
uint32_t[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)

Set one or more pending VCMP interrupts from SW.

Parameters
TypeDirectionArgument NameDescription
uint32_t[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)

Disable one or more VCMP interrupts.

Parameters
TypeDirectionArgument NameDescription
uint32_t[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)

Enable one or more VCMP interrupts.

Parameters
TypeDirectionArgument NameDescription
uint32_t[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 )

Get pending VCMP interrupt flags.

Parameters
TypeDirectionArgument NameDescription
voidN/A

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 )

Get enabled and pending VCMP interrupt flags.

Parameters
TypeDirectionArgument NameDescription
voidN/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 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).