ACMP

Detailed Description

Analog comparator (ACMP) Peripheral API.

The Analog Comparator is used to compare voltage of two analog inputs with a digital output indicating which input voltage is higher. Inputs can either be one of the selectable internal references or from external pins. Response time and current consumption can be configured by altering the current supply to the comparator.

ACMP is available down to EM3 and is able to wake up the system when input signals pass a certain threshold. Use ACMP_IntEnable() to enable an edge interrupt to use this functionality.

This example shows how to use the em_acmp.h API for comparing an input pin to an internal 2.5 V reference voltage.

/* The ACMP is a high-frequency peripheral so we need to enable
* both the HFPER clock and the ACMP0 clock. */
/* Initialize with default settings. */
init. enable = false ;
ACMP_Init (ACMP0, &init);
/* In this example we want to compare an analog input to the 2.5 V
* internal reference. To achieve this we first have to configure the
* VB source which is used for internal reference voltages. */
ACMP_VBConfig_TypeDef vbconfig = ACMP_VBCONFIG_DEFAULT;
vbconfig. input = acmpVBInput2V5;
ACMP_VBSetup (ACMP0, &vbconfig);
/* Now we select the two inputs to compare. Here we compare the APORT0XCH0
* input to the internal 2.5V reference that we previously configured. When
* APORT0XCH0 is lower than 2.5 V then the ACMP output is 0 and when
* APORT0XCH0 is is higher than 2.5 V then the ACMP output is 1. */
ACMP_ChannelSet (ACMP0, acmpInputVBDIV, acmpInputAPORT0XCH0);
/* To be able to probe the output we can send the ACMP output to a pin.
* The second argument to this function is the pin location which is
* device dependent. */
ACMP_GPIOSetup (ACMP0, 0, true , false );
/* Finally we enable the ACMP. */
ACMP_Enable (ACMP0);
Note
ACMP can also be used to compare two separate input pins.

ACMP also contains specialized hardware for capacitive sensing. This module contains the ACMP_CapsenseInit() function to initialize ACMP for capacitive sensing and the ACMP_CapsenseChannelSet() function to select the current capsense channel.

For applications that require capacitive sensing it is recommended to use a library, such as cslib, which is provided by Silicon Labs.

Data Structures

struct ACMP_CapsenseInit_TypeDef
struct ACMP_Init_TypeDef
struct ACMP_VAConfig_TypeDef
struct ACMP_VBConfig_TypeDef

Macros

#define ACMP_CAPSENSE_INIT_DEFAULT
#define ACMP_INIT_DEFAULT
#define ACMP_VACONFIG_DEFAULT
#define ACMP_VBCONFIG_DEFAULT

Enumerations

enum ACMP_Accuracy_TypeDef {
acmpAccuracyLow = _ACMP_CTRL_ACCURACY_LOW,
acmpAccuracyHigh = _ACMP_CTRL_ACCURACY_HIGH
}
enum ACMP_CapsenseResistor_TypeDef {
acmpResistor0 = _ACMP_INPUTSEL_CSRESSEL_RES0,
acmpResistor1 = _ACMP_INPUTSEL_CSRESSEL_RES1,
acmpResistor2 = _ACMP_INPUTSEL_CSRESSEL_RES2,
acmpResistor3 = _ACMP_INPUTSEL_CSRESSEL_RES3,
acmpResistor4 = _ACMP_INPUTSEL_CSRESSEL_RES4,
acmpResistor5 = _ACMP_INPUTSEL_CSRESSEL_RES5,
acmpResistor6 = _ACMP_INPUTSEL_CSRESSEL_RES6,
acmpResistor7 = _ACMP_INPUTSEL_CSRESSEL_RES7
}
enum ACMP_Channel_TypeDef {
acmpInputAPORT0XCH0 = _ACMP_INPUTSEL_POSSEL_APORT0XCH0,
acmpInputAPORT0XCH1 = _ACMP_INPUTSEL_POSSEL_APORT0XCH1,
acmpInputAPORT0XCH2 = _ACMP_INPUTSEL_POSSEL_APORT0XCH2,
acmpInputAPORT0XCH3 = _ACMP_INPUTSEL_POSSEL_APORT0XCH3,
acmpInputAPORT0XCH4 = _ACMP_INPUTSEL_POSSEL_APORT0XCH4,
acmpInputAPORT0XCH5 = _ACMP_INPUTSEL_POSSEL_APORT0XCH5,
acmpInputAPORT0XCH6 = _ACMP_INPUTSEL_POSSEL_APORT0XCH6,
acmpInputAPORT0XCH7 = _ACMP_INPUTSEL_POSSEL_APORT0XCH7,
acmpInputAPORT0XCH8 = _ACMP_INPUTSEL_POSSEL_APORT0XCH8,
acmpInputAPORT0XCH9 = _ACMP_INPUTSEL_POSSEL_APORT0XCH9,
acmpInputAPORT0XCH10 = _ACMP_INPUTSEL_POSSEL_APORT0XCH10,
acmpInputAPORT0XCH11 = _ACMP_INPUTSEL_POSSEL_APORT0XCH11,
acmpInputAPORT0XCH12 = _ACMP_INPUTSEL_POSSEL_APORT0XCH12,
acmpInputAPORT0XCH13 = _ACMP_INPUTSEL_POSSEL_APORT0XCH13,
acmpInputAPORT0XCH14 = _ACMP_INPUTSEL_POSSEL_APORT0XCH14,
acmpInputAPORT0XCH15 = _ACMP_INPUTSEL_POSSEL_APORT0XCH15,
acmpInputAPORT0YCH0 = _ACMP_INPUTSEL_POSSEL_APORT0YCH0,
acmpInputAPORT0YCH1 = _ACMP_INPUTSEL_POSSEL_APORT0YCH1,
acmpInputAPORT0YCH2 = _ACMP_INPUTSEL_POSSEL_APORT0YCH2,
acmpInputAPORT0YCH3 = _ACMP_INPUTSEL_POSSEL_APORT0YCH3,
acmpInputAPORT0YCH4 = _ACMP_INPUTSEL_POSSEL_APORT0YCH4,
acmpInputAPORT0YCH5 = _ACMP_INPUTSEL_POSSEL_APORT0YCH5,
acmpInputAPORT0YCH6 = _ACMP_INPUTSEL_POSSEL_APORT0YCH6,
acmpInputAPORT0YCH7 = _ACMP_INPUTSEL_POSSEL_APORT0YCH7,
acmpInputAPORT0YCH8 = _ACMP_INPUTSEL_POSSEL_APORT0YCH8,
acmpInputAPORT0YCH9 = _ACMP_INPUTSEL_POSSEL_APORT0YCH9,
acmpInputAPORT0YCH10 = _ACMP_INPUTSEL_POSSEL_APORT0YCH10,
acmpInputAPORT0YCH11 = _ACMP_INPUTSEL_POSSEL_APORT0YCH11,
acmpInputAPORT0YCH12 = _ACMP_INPUTSEL_POSSEL_APORT0YCH12,
acmpInputAPORT0YCH13 = _ACMP_INPUTSEL_POSSEL_APORT0YCH13,
acmpInputAPORT0YCH14 = _ACMP_INPUTSEL_POSSEL_APORT0YCH14,
acmpInputAPORT0YCH15 = _ACMP_INPUTSEL_POSSEL_APORT0YCH15,
acmpInputAPORT1XCH0 = _ACMP_INPUTSEL_POSSEL_APORT1XCH0,
acmpInputAPORT1YCH1 = _ACMP_INPUTSEL_POSSEL_APORT1YCH1,
acmpInputAPORT1XCH2 = _ACMP_INPUTSEL_POSSEL_APORT1XCH2,
acmpInputAPORT1YCH3 = _ACMP_INPUTSEL_POSSEL_APORT1YCH3,
acmpInputAPORT1XCH4 = _ACMP_INPUTSEL_POSSEL_APORT1XCH4,
acmpInputAPORT1YCH5 = _ACMP_INPUTSEL_POSSEL_APORT1YCH5,
acmpInputAPORT1XCH6 = _ACMP_INPUTSEL_POSSEL_APORT1XCH6,
acmpInputAPORT1YCH7 = _ACMP_INPUTSEL_POSSEL_APORT1YCH7,
acmpInputAPORT1XCH8 = _ACMP_INPUTSEL_POSSEL_APORT1XCH8,
acmpInputAPORT1YCH9 = _ACMP_INPUTSEL_POSSEL_APORT1YCH9,
acmpInputAPORT1XCH10 = _ACMP_INPUTSEL_POSSEL_APORT1XCH10,
acmpInputAPORT1YCH11 = _ACMP_INPUTSEL_POSSEL_APORT1YCH11,
acmpInputAPORT1XCH12 = _ACMP_INPUTSEL_POSSEL_APORT1XCH12,
acmpInputAPORT1YCH13 = _ACMP_INPUTSEL_POSSEL_APORT1YCH13,
acmpInputAPORT1XCH14 = _ACMP_INPUTSEL_POSSEL_APORT1XCH14,
acmpInputAPORT1YCH15 = _ACMP_INPUTSEL_POSSEL_APORT1YCH15,
acmpInputAPORT1XCH16 = _ACMP_INPUTSEL_POSSEL_APORT1XCH16,
acmpInputAPORT1YCH17 = _ACMP_INPUTSEL_POSSEL_APORT1YCH17,
acmpInputAPORT1XCH18 = _ACMP_INPUTSEL_POSSEL_APORT1XCH18,
acmpInputAPORT1YCH19 = _ACMP_INPUTSEL_POSSEL_APORT1YCH19,
acmpInputAPORT1XCH20 = _ACMP_INPUTSEL_POSSEL_APORT1XCH20,
acmpInputAPORT1YCH21 = _ACMP_INPUTSEL_POSSEL_APORT1YCH21,
acmpInputAPORT1XCH22 = _ACMP_INPUTSEL_POSSEL_APORT1XCH22,
acmpInputAPORT1YCH23 = _ACMP_INPUTSEL_POSSEL_APORT1YCH23,
acmpInputAPORT1XCH24 = _ACMP_INPUTSEL_POSSEL_APORT1XCH24,
acmpInputAPORT1YCH25 = _ACMP_INPUTSEL_POSSEL_APORT1YCH25,
acmpInputAPORT1XCH26 = _ACMP_INPUTSEL_POSSEL_APORT1XCH26,
acmpInputAPORT1YCH27 = _ACMP_INPUTSEL_POSSEL_APORT1YCH27,
acmpInputAPORT1XCH28 = _ACMP_INPUTSEL_POSSEL_APORT1XCH28,
acmpInputAPORT1YCH29 = _ACMP_INPUTSEL_POSSEL_APORT1YCH29,
acmpInputAPORT1XCH30 = _ACMP_INPUTSEL_POSSEL_APORT1XCH30,
acmpInputAPORT1YCH31 = _ACMP_INPUTSEL_POSSEL_APORT1YCH31,
acmpInputAPORT2YCH0 = _ACMP_INPUTSEL_POSSEL_APORT2YCH0,
acmpInputAPORT2XCH1 = _ACMP_INPUTSEL_POSSEL_APORT2XCH1,
acmpInputAPORT2YCH2 = _ACMP_INPUTSEL_POSSEL_APORT2YCH2,
acmpInputAPORT2XCH3 = _ACMP_INPUTSEL_POSSEL_APORT2XCH3,
acmpInputAPORT2YCH4 = _ACMP_INPUTSEL_POSSEL_APORT2YCH4,
acmpInputAPORT2XCH5 = _ACMP_INPUTSEL_POSSEL_APORT2XCH5,
acmpInputAPORT2YCH6 = _ACMP_INPUTSEL_POSSEL_APORT2YCH6,
acmpInputAPORT2XCH7 = _ACMP_INPUTSEL_POSSEL_APORT2XCH7,
acmpInputAPORT2YCH8 = _ACMP_INPUTSEL_POSSEL_APORT2YCH8,
acmpInputAPORT2XCH9 = _ACMP_INPUTSEL_POSSEL_APORT2XCH9,
acmpInputAPORT2YCH10 = _ACMP_INPUTSEL_POSSEL_APORT2YCH10,
acmpInputAPORT2XCH11 = _ACMP_INPUTSEL_POSSEL_APORT2XCH11,
acmpInputAPORT2YCH12 = _ACMP_INPUTSEL_POSSEL_APORT2YCH12,
acmpInputAPORT2XCH13 = _ACMP_INPUTSEL_POSSEL_APORT2XCH13,
acmpInputAPORT2YCH14 = _ACMP_INPUTSEL_POSSEL_APORT2YCH14,
acmpInputAPORT2XCH15 = _ACMP_INPUTSEL_POSSEL_APORT2XCH15,
acmpInputAPORT2YCH16 = _ACMP_INPUTSEL_POSSEL_APORT2YCH16,
acmpInputAPORT2XCH17 = _ACMP_INPUTSEL_POSSEL_APORT2XCH17,
acmpInputAPORT2YCH18 = _ACMP_INPUTSEL_POSSEL_APORT2YCH18,
acmpInputAPORT2XCH19 = _ACMP_INPUTSEL_POSSEL_APORT2XCH19,
acmpInputAPORT2YCH20 = _ACMP_INPUTSEL_POSSEL_APORT2YCH20,
acmpInputAPORT2XCH21 = _ACMP_INPUTSEL_POSSEL_APORT2XCH21,
acmpInputAPORT2YCH22 = _ACMP_INPUTSEL_POSSEL_APORT2YCH22,
acmpInputAPORT2XCH23 = _ACMP_INPUTSEL_POSSEL_APORT2XCH23,
acmpInputAPORT2YCH24 = _ACMP_INPUTSEL_POSSEL_APORT2YCH24,
acmpInputAPORT2XCH25 = _ACMP_INPUTSEL_POSSEL_APORT2XCH25,
acmpInputAPORT2YCH26 = _ACMP_INPUTSEL_POSSEL_APORT2YCH26,
acmpInputAPORT2XCH27 = _ACMP_INPUTSEL_POSSEL_APORT2XCH27,
acmpInputAPORT2YCH28 = _ACMP_INPUTSEL_POSSEL_APORT2YCH28,
acmpInputAPORT2XCH29 = _ACMP_INPUTSEL_POSSEL_APORT2XCH29,
acmpInputAPORT2YCH30 = _ACMP_INPUTSEL_POSSEL_APORT2YCH30,
acmpInputAPORT2XCH31 = _ACMP_INPUTSEL_POSSEL_APORT2XCH31,
acmpInputAPORT3XCH0 = _ACMP_INPUTSEL_POSSEL_APORT3XCH0,
acmpInputAPORT3YCH1 = _ACMP_INPUTSEL_POSSEL_APORT3YCH1,
acmpInputAPORT3XCH2 = _ACMP_INPUTSEL_POSSEL_APORT3XCH2,
acmpInputAPORT3YCH3 = _ACMP_INPUTSEL_POSSEL_APORT3YCH3,
acmpInputAPORT3XCH4 = _ACMP_INPUTSEL_POSSEL_APORT3XCH4,
acmpInputAPORT3YCH5 = _ACMP_INPUTSEL_POSSEL_APORT3YCH5,
acmpInputAPORT3XCH6 = _ACMP_INPUTSEL_POSSEL_APORT3XCH6,
acmpInputAPORT3YCH7 = _ACMP_INPUTSEL_POSSEL_APORT3YCH7,
acmpInputAPORT3XCH8 = _ACMP_INPUTSEL_POSSEL_APORT3XCH8,
acmpInputAPORT3YCH9 = _ACMP_INPUTSEL_POSSEL_APORT3YCH9,
acmpInputAPORT3XCH10 = _ACMP_INPUTSEL_POSSEL_APORT3XCH10,
acmpInputAPORT3YCH11 = _ACMP_INPUTSEL_POSSEL_APORT3YCH11,
acmpInputAPORT3XCH12 = _ACMP_INPUTSEL_POSSEL_APORT3XCH12,
acmpInputAPORT3YCH13 = _ACMP_INPUTSEL_POSSEL_APORT3YCH13,
acmpInputAPORT3XCH14 = _ACMP_INPUTSEL_POSSEL_APORT3XCH14,
acmpInputAPORT3YCH15 = _ACMP_INPUTSEL_POSSEL_APORT3YCH15,
acmpInputAPORT3XCH16 = _ACMP_INPUTSEL_POSSEL_APORT3XCH16,
acmpInputAPORT3YCH17 = _ACMP_INPUTSEL_POSSEL_APORT3YCH17,
acmpInputAPORT3XCH18 = _ACMP_INPUTSEL_POSSEL_APORT3XCH18,
acmpInputAPORT3YCH19 = _ACMP_INPUTSEL_POSSEL_APORT3YCH19,
acmpInputAPORT3XCH20 = _ACMP_INPUTSEL_POSSEL_APORT3XCH20,
acmpInputAPORT3YCH21 = _ACMP_INPUTSEL_POSSEL_APORT3YCH21,
acmpInputAPORT3XCH22 = _ACMP_INPUTSEL_POSSEL_APORT3XCH22,
acmpInputAPORT3YCH23 = _ACMP_INPUTSEL_POSSEL_APORT3YCH23,
acmpInputAPORT3XCH24 = _ACMP_INPUTSEL_POSSEL_APORT3XCH24,
acmpInputAPORT3YCH25 = _ACMP_INPUTSEL_POSSEL_APORT3YCH25,
acmpInputAPORT3XCH26 = _ACMP_INPUTSEL_POSSEL_APORT3XCH26,
acmpInputAPORT3YCH27 = _ACMP_INPUTSEL_POSSEL_APORT3YCH27,
acmpInputAPORT3XCH28 = _ACMP_INPUTSEL_POSSEL_APORT3XCH28,
acmpInputAPORT3YCH29 = _ACMP_INPUTSEL_POSSEL_APORT3YCH29,
acmpInputAPORT3XCH30 = _ACMP_INPUTSEL_POSSEL_APORT3XCH30,
acmpInputAPORT3YCH31 = _ACMP_INPUTSEL_POSSEL_APORT3YCH31,
acmpInputAPORT4YCH0 = _ACMP_INPUTSEL_POSSEL_APORT4YCH0,
acmpInputAPORT4XCH1 = _ACMP_INPUTSEL_POSSEL_APORT4XCH1,
acmpInputAPORT4YCH2 = _ACMP_INPUTSEL_POSSEL_APORT4YCH2,
acmpInputAPORT4XCH3 = _ACMP_INPUTSEL_POSSEL_APORT4XCH3,
acmpInputAPORT4YCH4 = _ACMP_INPUTSEL_POSSEL_APORT4YCH4,
acmpInputAPORT4XCH5 = _ACMP_INPUTSEL_POSSEL_APORT4XCH5,
acmpInputAPORT4YCH6 = _ACMP_INPUTSEL_POSSEL_APORT4YCH6,
acmpInputAPORT4XCH7 = _ACMP_INPUTSEL_POSSEL_APORT4XCH7,
acmpInputAPORT4YCH8 = _ACMP_INPUTSEL_POSSEL_APORT4YCH8,
acmpInputAPORT4XCH9 = _ACMP_INPUTSEL_POSSEL_APORT4XCH9,
acmpInputAPORT4YCH10 = _ACMP_INPUTSEL_POSSEL_APORT4YCH10,
acmpInputAPORT4XCH11 = _ACMP_INPUTSEL_POSSEL_APORT4XCH11,
acmpInputAPORT4YCH12 = _ACMP_INPUTSEL_POSSEL_APORT4YCH12,
acmpInputAPORT4XCH13 = _ACMP_INPUTSEL_POSSEL_APORT4XCH13,
acmpInputAPORT4YCH16 = _ACMP_INPUTSEL_POSSEL_APORT4YCH16,
acmpInputAPORT4XCH17 = _ACMP_INPUTSEL_POSSEL_APORT4XCH17,
acmpInputAPORT4YCH18 = _ACMP_INPUTSEL_POSSEL_APORT4YCH18,
acmpInputAPORT4XCH19 = _ACMP_INPUTSEL_POSSEL_APORT4XCH19,
acmpInputAPORT4YCH20 = _ACMP_INPUTSEL_POSSEL_APORT4YCH20,
acmpInputAPORT4XCH21 = _ACMP_INPUTSEL_POSSEL_APORT4XCH21,
acmpInputAPORT4YCH22 = _ACMP_INPUTSEL_POSSEL_APORT4YCH22,
acmpInputAPORT4XCH23 = _ACMP_INPUTSEL_POSSEL_APORT4XCH23,
acmpInputAPORT4YCH24 = _ACMP_INPUTSEL_POSSEL_APORT4YCH24,
acmpInputAPORT4XCH25 = _ACMP_INPUTSEL_POSSEL_APORT4XCH25,
acmpInputAPORT4YCH26 = _ACMP_INPUTSEL_POSSEL_APORT4YCH26,
acmpInputAPORT4XCH27 = _ACMP_INPUTSEL_POSSEL_APORT4XCH27,
acmpInputAPORT4YCH28 = _ACMP_INPUTSEL_POSSEL_APORT4YCH28,
acmpInputAPORT4XCH29 = _ACMP_INPUTSEL_POSSEL_APORT4XCH29,
acmpInputAPORT4YCH30 = _ACMP_INPUTSEL_POSSEL_APORT4YCH30,
acmpInputAPORT4YCH14 = _ACMP_INPUTSEL_POSSEL_APORT4YCH14,
acmpInputAPORT4XCH15 = _ACMP_INPUTSEL_POSSEL_APORT4XCH15,
acmpInputAPORT4XCH31 = _ACMP_INPUTSEL_POSSEL_APORT4XCH31,
acmpInputDACOUT0 = _ACMP_INPUTSEL_POSSEL_DACOUT0,
acmpInputDACOUT1 = _ACMP_INPUTSEL_POSSEL_DACOUT1,
acmpInputVLP = _ACMP_INPUTSEL_POSSEL_VLP,
acmpInputVBDIV = _ACMP_INPUTSEL_POSSEL_VBDIV,
acmpInputVADIV = _ACMP_INPUTSEL_POSSEL_VADIV,
acmpInputVDD = _ACMP_INPUTSEL_POSSEL_VDD,
acmpInputVSS = _ACMP_INPUTSEL_POSSEL_VSS
}
enum ACMP_ExternalInput_Typedef {
acmpExternalInputAPORT0X = _ACMP_EXTIFCTRL_APORTSEL_APORT0X,
acmpExternalInputAPORT0Y = _ACMP_EXTIFCTRL_APORTSEL_APORT0Y,
acmpExternalInputAPORT1X = _ACMP_EXTIFCTRL_APORTSEL_APORT1X,
acmpExternalInputAPORT1Y = _ACMP_EXTIFCTRL_APORTSEL_APORT1Y,
acmpExternalInputAPORT1XY = _ACMP_EXTIFCTRL_APORTSEL_APORT1XY,
acmpExternalInputAPORT2X = _ACMP_EXTIFCTRL_APORTSEL_APORT2X,
acmpExternalInputAPORT2Y = _ACMP_EXTIFCTRL_APORTSEL_APORT2Y,
acmpExternalInputAPORT2YX = _ACMP_EXTIFCTRL_APORTSEL_APORT2YX,
acmpExternalInputAPORT3X = _ACMP_EXTIFCTRL_APORTSEL_APORT3X,
acmpExternalInputAPORT3Y = _ACMP_EXTIFCTRL_APORTSEL_APORT3Y,
acmpExternalInputAPORT3XY = _ACMP_EXTIFCTRL_APORTSEL_APORT3XY,
acmpExternalInputAPORT4X = _ACMP_EXTIFCTRL_APORTSEL_APORT4X,
acmpExternalInputAPORT4Y = _ACMP_EXTIFCTRL_APORTSEL_APORT4Y,
acmpExternalInputAPORT4YX = _ACMP_EXTIFCTRL_APORTSEL_APORT4YX
}
enum ACMP_HysteresisLevel_TypeDef {
acmpHysteresisLevel0 = _ACMP_HYSTERESIS0_HYST_HYST0,
acmpHysteresisLevel1 = _ACMP_HYSTERESIS0_HYST_HYST1,
acmpHysteresisLevel2 = _ACMP_HYSTERESIS0_HYST_HYST2,
acmpHysteresisLevel3 = _ACMP_HYSTERESIS0_HYST_HYST3,
acmpHysteresisLevel4 = _ACMP_HYSTERESIS0_HYST_HYST4,
acmpHysteresisLevel5 = _ACMP_HYSTERESIS0_HYST_HYST5,
acmpHysteresisLevel6 = _ACMP_HYSTERESIS0_HYST_HYST6,
acmpHysteresisLevel7 = _ACMP_HYSTERESIS0_HYST_HYST7,
acmpHysteresisLevel8 = _ACMP_HYSTERESIS0_HYST_HYST8,
acmpHysteresisLevel9 = _ACMP_HYSTERESIS0_HYST_HYST9,
acmpHysteresisLevel10 = _ACMP_HYSTERESIS0_HYST_HYST10,
acmpHysteresisLevel11 = _ACMP_HYSTERESIS0_HYST_HYST11,
acmpHysteresisLevel12 = _ACMP_HYSTERESIS0_HYST_HYST12,
acmpHysteresisLevel13 = _ACMP_HYSTERESIS0_HYST_HYST13,
acmpHysteresisLevel14 = _ACMP_HYSTERESIS0_HYST_HYST14,
acmpHysteresisLevel15 = _ACMP_HYSTERESIS0_HYST_HYST15
}
enum ACMP_InputRange_TypeDef {
acmpInputRangeFull = _ACMP_CTRL_INPUTRANGE_FULL,
acmpInputRangeHigh = _ACMP_CTRL_INPUTRANGE_GTVDDDIV2,
acmpInputRangeLow = _ACMP_CTRL_INPUTRANGE_LTVDDDIV2
}
enum ACMP_PowerSource_TypeDef {
acmpPowerSourceAvdd = _ACMP_CTRL_PWRSEL_AVDD,
acmpPowerSourceDvdd = _ACMP_CTRL_PWRSEL_DVDD,
acmpPowerSourceIOVdd0 = _ACMP_CTRL_PWRSEL_IOVDD0,
acmpPowerSourceIOVdd1 = _ACMP_CTRL_PWRSEL_IOVDD1
}
enum ACMP_VAInput_TypeDef {
acmpVAInputVDD = _ACMP_INPUTSEL_VASEL_VDD,
acmpVAInputAPORT2YCH0 = _ACMP_INPUTSEL_VASEL_APORT2YCH0,
acmpVAInputAPORT2YCH2 = _ACMP_INPUTSEL_VASEL_APORT2YCH2,
acmpVAInputAPORT2YCH4 = _ACMP_INPUTSEL_VASEL_APORT2YCH4,
acmpVAInputAPORT2YCH6 = _ACMP_INPUTSEL_VASEL_APORT2YCH6,
acmpVAInputAPORT2YCH8 = _ACMP_INPUTSEL_VASEL_APORT2YCH8,
acmpVAInputAPORT2YCH10 = _ACMP_INPUTSEL_VASEL_APORT2YCH10,
acmpVAInputAPORT2YCH12 = _ACMP_INPUTSEL_VASEL_APORT2YCH12,
acmpVAInputAPORT2YCH14 = _ACMP_INPUTSEL_VASEL_APORT2YCH14,
acmpVAInputAPORT2YCH16 = _ACMP_INPUTSEL_VASEL_APORT2YCH16,
acmpVAInputAPORT2YCH18 = _ACMP_INPUTSEL_VASEL_APORT2YCH18,
acmpVAInputAPORT2YCH20 = _ACMP_INPUTSEL_VASEL_APORT2YCH20,
acmpVAInputAPORT2YCH22 = _ACMP_INPUTSEL_VASEL_APORT2YCH22,
acmpVAInputAPORT2YCH24 = _ACMP_INPUTSEL_VASEL_APORT2YCH24,
acmpVAInputAPORT2YCH26 = _ACMP_INPUTSEL_VASEL_APORT2YCH26,
acmpVAInputAPORT2YCH28 = _ACMP_INPUTSEL_VASEL_APORT2YCH28,
acmpVAInputAPORT2YCH30 = _ACMP_INPUTSEL_VASEL_APORT2YCH30,
acmpVAInputAPORT1XCH0 = _ACMP_INPUTSEL_VASEL_APORT1XCH0,
acmpVAInputAPORT1YCH1 = _ACMP_INPUTSEL_VASEL_APORT1YCH1,
acmpVAInputAPORT1XCH2 = _ACMP_INPUTSEL_VASEL_APORT1XCH2,
acmpVAInputAPORT1YCH3 = _ACMP_INPUTSEL_VASEL_APORT1YCH3,
acmpVAInputAPORT1XCH4 = _ACMP_INPUTSEL_VASEL_APORT1XCH4,
acmpVAInputAPORT1YCH5 = _ACMP_INPUTSEL_VASEL_APORT1YCH5,
acmpVAInputAPORT1XCH6 = _ACMP_INPUTSEL_VASEL_APORT1XCH6,
acmpVAInputAPORT1YCH7 = _ACMP_INPUTSEL_VASEL_APORT1YCH7,
acmpVAInputAPORT1XCH8 = _ACMP_INPUTSEL_VASEL_APORT1XCH8,
acmpVAInputAPORT1YCH9 = _ACMP_INPUTSEL_VASEL_APORT1YCH9,
acmpVAInputAPORT1XCH10 = _ACMP_INPUTSEL_VASEL_APORT1XCH10,
acmpVAInputAPORT1YCH11 = _ACMP_INPUTSEL_VASEL_APORT1YCH11,
acmpVAInputAPORT1XCH12 = _ACMP_INPUTSEL_VASEL_APORT1XCH12,
acmpVAInputAPORT1YCH13 = _ACMP_INPUTSEL_VASEL_APORT1YCH13,
acmpVAInputAPORT1XCH14 = _ACMP_INPUTSEL_VASEL_APORT1XCH14,
acmpVAInputAPORT1YCH15 = _ACMP_INPUTSEL_VASEL_APORT1YCH15,
acmpVAInputAPORT1XCH16 = _ACMP_INPUTSEL_VASEL_APORT1XCH16,
acmpVAInputAPORT1YCH17 = _ACMP_INPUTSEL_VASEL_APORT1YCH17,
acmpVAInputAPORT1XCH18 = _ACMP_INPUTSEL_VASEL_APORT1XCH18,
acmpVAInputAPORT1YCH19 = _ACMP_INPUTSEL_VASEL_APORT1YCH19,
acmpVAInputAPORT1XCH20 = _ACMP_INPUTSEL_VASEL_APORT1XCH20,
acmpVAInputAPORT1YCH21 = _ACMP_INPUTSEL_VASEL_APORT1YCH21,
acmpVAInputAPORT1XCH22 = _ACMP_INPUTSEL_VASEL_APORT1XCH22,
acmpVAInputAPORT1YCH23 = _ACMP_INPUTSEL_VASEL_APORT1YCH23,
acmpVAInputAPORT1XCH24 = _ACMP_INPUTSEL_VASEL_APORT1XCH24,
acmpVAInputAPORT1YCH25 = _ACMP_INPUTSEL_VASEL_APORT1YCH25,
acmpVAInputAPORT1XCH26 = _ACMP_INPUTSEL_VASEL_APORT1XCH26,
acmpVAInputAPORT1YCH27 = _ACMP_INPUTSEL_VASEL_APORT1YCH27,
acmpVAInputAPORT1XCH28 = _ACMP_INPUTSEL_VASEL_APORT1XCH28,
acmpVAInputAPORT1YCH29 = _ACMP_INPUTSEL_VASEL_APORT1YCH29,
acmpVAInputAPORT1XCH30 = _ACMP_INPUTSEL_VASEL_APORT1XCH30,
acmpVAInputAPORT1YCH31 = _ACMP_INPUTSEL_VASEL_APORT1YCH31
}
enum ACMP_VBInput_TypeDef {
acmpVBInput1V25 = _ACMP_INPUTSEL_VBSEL_1V25,
acmpVBInput2V5 = _ACMP_INPUTSEL_VBSEL_2V5
}
enum ACMP_VLPInput_Typedef {
acmpVLPInputVADIV = _ACMP_INPUTSEL_VLPSEL_VADIV,
acmpVLPInputVBDIV = _ACMP_INPUTSEL_VLPSEL_VBDIV
}

Functions

void ACMP_CapsenseChannelSet (ACMP_TypeDef *acmp, ACMP_Channel_TypeDef channel)
Set the ACMP channel used for capacitive sensing.
void ACMP_CapsenseInit (ACMP_TypeDef *acmp, const ACMP_CapsenseInit_TypeDef *init)
Set up ACMP for use in capacitive sense applications.
void ACMP_ChannelSet (ACMP_TypeDef *acmp, ACMP_Channel_TypeDef negSel, ACMP_Channel_TypeDef posSel)
Set which channels should be used in ACMP comparisons.
void ACMP_Disable (ACMP_TypeDef *acmp)
Disable ACMP.
void ACMP_Enable (ACMP_TypeDef *acmp)
Enable ACMP.
void ACMP_ExternalInputSelect (ACMP_TypeDef *acmp, ACMP_ExternalInput_Typedef aport)
Select and enable external input.
void ACMP_GPIOSetup (ACMP_TypeDef *acmp, uint32_t location, bool enable, bool invert)
Set up GPIO output from ACMP.
void ACMP_Init (ACMP_TypeDef *acmp, const ACMP_Init_TypeDef *init)
Initialize ACMP.
__STATIC_INLINE void ACMP_IntClear (ACMP_TypeDef *acmp, uint32_t flags)
Clear one or more pending ACMP interrupts.
__STATIC_INLINE void ACMP_IntDisable (ACMP_TypeDef *acmp, uint32_t flags)
Disable one or more ACMP interrupts.
__STATIC_INLINE void ACMP_IntEnable (ACMP_TypeDef *acmp, uint32_t flags)
Enable one or more ACMP interrupts.
__STATIC_INLINE uint32_t ACMP_IntGet (ACMP_TypeDef *acmp)
Get pending ACMP interrupt flags.
__STATIC_INLINE uint32_t ACMP_IntGetEnabled (ACMP_TypeDef *acmp)
Get enabled and pending ACMP interrupt flags. Useful for handling more interrupt sources in the same interrupt handler.
__STATIC_INLINE void ACMP_IntSet (ACMP_TypeDef *acmp, uint32_t flags)
Set one or more pending ACMP interrupts from software.
void ACMP_Reset (ACMP_TypeDef *acmp)
Reset ACMP to the same state that it was in after a hardware reset.
void ACMP_VASetup (ACMP_TypeDef *acmp, const ACMP_VAConfig_TypeDef *vaconfig)
Set up the VA source.
void ACMP_VBSetup (ACMP_TypeDef *acmp, const ACMP_VBConfig_TypeDef *vbconfig)
Set up the VB Source.

Macro Definition Documentation

#define ACMP_CAPSENSE_INIT_DEFAULT
Value:
{ \
false, /* Don't use fullBias to lower power consumption. */ \
0x20, /* Using biasProg value of 0x20 (32). */ \
acmpHysteresisLevel8, /* Use hysteresis level 8 when ACMP output is 0. */ \
acmpHysteresisLevel8, /* Use hysteresis level 8 when ACMP output is 1. */ \
acmpResistor5, /* Use internal resistor value 5. */ \
0x30, /* VDD level high. */ \
0x10, /* VDD level low. */ \
true /* Enable after initialization. */ \
}

A default configuration for capacitive sense mode initialization.

Definition at line 693 of file em_acmp.h .

Referenced by CAPSENSE_Init() .

#define ACMP_INIT_DEFAULT
Value:
{ \
false, /* fullBias */ \
0x7, /* biasProg */ \
false, /* No interrupt on falling edge. */ \
false, /* No interrupt on rising edge. */ \
acmpInputRangeFull, /* Input range from 0 to VDD. */ \
acmpAccuracyLow, /* Low accuracy, less current usage. */ \
acmpPowerSourceAvdd, /* Use the AVDD supply. */ \
acmpHysteresisLevel5, /* Use hysteresis level 5 when output is 0 */ \
acmpHysteresisLevel5, /* Use hysteresis level 5 when output is 1 */ \
acmpVLPInputVADIV, /* Use VADIV as the VLP input source. */ \
false, /* Output 0 when ACMP is inactive. */ \
true /* Enable after init. */ \
}

Default configuration for ACMP regular initialization.

Definition at line 838 of file em_acmp.h .

#define ACMP_VACONFIG_DEFAULT
Value:
{ \
acmpVAInputVDD, /* Use VDD as VA voltage input source. */ \
63, /* No division of the VA source when ACMP output is 0. */ \
63, /* No division of the VA source when ACMP output is 1. */ \
}

Definition at line 895 of file em_acmp.h .

#define ACMP_VBCONFIG_DEFAULT
Value:
{ \
acmpVBInput1V25, /* Use 1.25 V as VB voltage input source. */ \
63, /* No division of the VB source when ACMP output is 0. */ \
63, /* No division of the VB source when ACMP output is 1. */ \
}

Definition at line 928 of file em_acmp.h .

Enumeration Type Documentation

ACMP accuracy mode.

Enumerator
acmpAccuracyLow

Low-accuracy mode which consumes less current.

acmpAccuracyHigh

High-accuracy mode which consumes more current.

Definition at line 189 of file em_acmp.h .

Resistor values used for the internal capacative sense resistor. See data sheet for your device for details on each resistor value.

Enumerator
acmpResistor0

Resistor value 0

acmpResistor1

Resistor value 1

acmpResistor2

Resistor value 2

acmpResistor3

Resistor value 3

acmpResistor4

Resistor value 4

acmpResistor5

Resistor value 5

acmpResistor6

Resistor value 6

acmpResistor7

Resistor value 7

Definition at line 62 of file em_acmp.h .

ACMP Input Selection.

Definition at line 359 of file em_acmp.h .

ACMP external input select. This type is used to select which APORT is used by an external module, such as LESENSE, when it's taking control over the ACMP input.

Definition at line 582 of file em_acmp.h .

Hysteresis level. See data sheet for your device for details on each level.

Enumerator
acmpHysteresisLevel0

Hysteresis level 0

acmpHysteresisLevel1

Hysteresis level 1

acmpHysteresisLevel2

Hysteresis level 2

acmpHysteresisLevel3

Hysteresis level 3

acmpHysteresisLevel4

Hysteresis level 4

acmpHysteresisLevel5

Hysteresis level 5

acmpHysteresisLevel6

Hysteresis level 6

acmpHysteresisLevel7

Hysteresis level 7

acmpHysteresisLevel8

Hysteresis level 8

acmpHysteresisLevel9

Hysteresis level 9

acmpHysteresisLevel10

Hysteresis level 10

acmpHysteresisLevel11

Hysteresis level 11

acmpHysteresisLevel12

Hysteresis level 12

acmpHysteresisLevel13

Hysteresis level 13

acmpHysteresisLevel14

Hysteresis level 14

acmpHysteresisLevel15

Hysteresis level 15

Definition at line 87 of file em_acmp.h .

Adjust ACMP performance for a given input voltage range.

Enumerator
acmpInputRangeFull

Input can be from 0 to VDD.

acmpInputRangeHigh

Input will always be greater than VDD/2.

acmpInputRangeLow

Input will always be less than VDD/2.

Definition at line 158 of file em_acmp.h .

ACMP Power source.

Enumerator
acmpPowerSourceAvdd

Power ACMP using the AVDD supply.

acmpPowerSourceDvdd

Power ACMP using the DVDD supply.

acmpPowerSourceIOVdd0

Power ACMP using the IOVDD/IOVDD0 supply.

acmpPowerSourceIOVdd1

Power ACMP using the IOVDD1 supply (if the part has two I/O voltages).

Definition at line 174 of file em_acmp.h .

ACMP input to the VA divider. This enumeration is used to select the input for the VA Divider.

Definition at line 203 of file em_acmp.h .

ACMP input to the VB divider. This enumeration is used to select the input for the VB divider.

Definition at line 261 of file em_acmp.h .

ACMP Low-Power Input Selection.

Definition at line 271 of file em_acmp.h .

Function Documentation

void ACMP_CapsenseChannelSet ( ACMP_TypeDef * acmp,
ACMP_Channel_TypeDef channel
)

Set the ACMP channel used for capacitive sensing.

Note
A basic example of capacitive sensing can be found in the STK BSP (capsense demo).
Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] channel The ACMP channel to use for capacitive sensing (Possel).

Definition at line 247 of file em_acmp.c .

References BUS_RegMaskedWrite() .

Referenced by CAPSENSE_Measure() .

void ACMP_CapsenseInit ( ACMP_TypeDef * acmp,
const ACMP_CapsenseInit_TypeDef * init
)

Set up ACMP for use in capacitive sense applications.

This function sets up ACMP for use in capacitive sense applications. To use the capacitive sense functionality in the ACMP, use the PRS output of the ACMP module to count the number of oscillations in the capacitive sense circuit (possibly using a TIMER).

Note
A basic example of capacitive sensing can be found in the STK BSP (capsense demo).
Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] init A pointer to the initialization structure used to configure ACMP for capacitive sensing operation.

Definition at line 165 of file em_acmp.c .

References ACMP_Disable() , ACMP_Enable() , ACMP_CapsenseInit_TypeDef::biasProg , BUS_RegBitWrite() , ACMP_CapsenseInit_TypeDef::enable , ACMP_CapsenseInit_TypeDef::fullBias , ACMP_CapsenseInit_TypeDef::hysteresisLevel_0 , ACMP_CapsenseInit_TypeDef::hysteresisLevel_1 , ACMP_CapsenseInit_TypeDef::resistor , ACMP_CapsenseInit_TypeDef::vddLevelHigh , and ACMP_CapsenseInit_TypeDef::vddLevelLow .

Referenced by CAPLESENSE_setupACMP() , and CAPSENSE_Init() .

void ACMP_ChannelSet ( ACMP_TypeDef * acmp,
ACMP_Channel_TypeDef negSel,
ACMP_Channel_TypeDef posSel
)

Set which channels should be used in ACMP comparisons.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.
negSel A channel to use on the negative input to the ACMP.
posSel A channel to use on the positive input to the ACMP.

Definition at line 496 of file em_acmp.c .

void ACMP_Disable ( ACMP_TypeDef * acmp )

Disable ACMP.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.

Definition at line 288 of file em_acmp.c .

Referenced by ACMP_CapsenseInit() , ACMP_Init() , ACMP_Reset() , and CAPSENSE_Sense() .

void ACMP_Enable ( ACMP_TypeDef * acmp )

Enable ACMP.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.

Definition at line 310 of file em_acmp.c .

Referenced by ACMP_CapsenseInit() , ACMP_Init() , ACMP_Reset() , and CAPSENSE_Sense() .

void ACMP_ExternalInputSelect ( ACMP_TypeDef * acmp,
ACMP_ExternalInput_Typedef aport
)

Select and enable external input.

This is used when an external module needs to take control of the ACMP POSSEL field to configure the APORT input for the ACMP. Modules, such as LESENSE, use this to change the ACMP input during a scan sequence.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] aport This parameter decides which APORT(s) the ACMP will use when it's controlled by an external module.

Definition at line 339 of file em_acmp.c .

void ACMP_GPIOSetup ( ACMP_TypeDef * acmp,
uint32_t location,
bool enable,
bool invert
)

Set up GPIO output from ACMP.

Note
GPIO must be enabled in the CMU before this function call, i.e.,
CMU_ClockEnable(cmuClock_GPIO, true); 
Parameters
[in] acmp A pointer to the ACMP peripheral register block.
location The pin location to use. See the data sheet for location to pin mappings.
enable Enable or disable pin output.
invert Invert output.

Definition at line 451 of file em_acmp.c .

References BUS_RegMaskedWrite() .

Referenced by CAPLESENSE_setupACMP() .

__STATIC_INLINE void ACMP_IntClear ( ACMP_TypeDef * acmp,
uint32_t flags
)

Clear one or more pending ACMP interrupts.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] flags Pending ACMP interrupt source to clear. Use a bitwise logic OR combination of valid interrupt flags for the ACMP module. The flags can be, for instance, ACMP_IFC_EDGE or ACMP_IFC_WARMUP.

Definition at line 974 of file em_acmp.h .

__STATIC_INLINE void ACMP_IntDisable ( ACMP_TypeDef * acmp,
uint32_t flags
)

Disable one or more ACMP interrupts.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] flags ACMP interrupt sources to disable. Use a bitwise logic OR combination of valid interrupt flags for the ACMP module. The flags can be, for instance, ACMP_IEN_EDGE or ACMP_IEN_WARMUP.

Definition at line 995 of file em_acmp.h .

References BUS_RegMaskedClear() .

__STATIC_INLINE void ACMP_IntEnable ( ACMP_TypeDef * acmp,
uint32_t flags
)

Enable one or more ACMP interrupts.

Note
Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. Consider using ACMP_IntClear() prior to enabling if a pending interrupt should be ignored.
Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] flags ACMP interrupt sources to enable. Use a bitwise logic OR combination of valid interrupt flags for the ACMP module. The flags can be, for instance, ACMP_IEN_EDGE or ACMP_IEN_WARMUP.

Definition at line 1017 of file em_acmp.h .

__STATIC_INLINE uint32_t ACMP_IntGet ( ACMP_TypeDef * acmp )

Get pending ACMP interrupt flags.

Note
This function does not clear event bits.
Parameters
[in] acmp A pointer to the ACMP peripheral register block.
Returns
Pending ACMP interrupt sources. A bitwise logic OR combination of valid interrupt flags for the ACMP module. The pending interrupt sources can be, for instance, ACMP_IF_EDGE or ACMP_IF_WARMUP.

Definition at line 1041 of file em_acmp.h .

__STATIC_INLINE uint32_t ACMP_IntGetEnabled ( ACMP_TypeDef * acmp )

Get enabled and pending ACMP interrupt flags. Useful for handling more interrupt sources in the same interrupt handler.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.
Note
This function does not clear interrupt flags.
Returns
Pending and enabled ACMP interrupt sources. The return value is the bitwise AND combination of
  • the OR combination of enabled interrupt sources in ACMPx_IEN_nnn register (ACMPx_IEN_nnn) and
  • the OR combination of valid interrupt flags of the ACMP module (ACMPx_IF_nnn).

Definition at line 1065 of file em_acmp.h .

__STATIC_INLINE void ACMP_IntSet ( ACMP_TypeDef * acmp,
uint32_t flags
)

Set one or more pending ACMP interrupts from software.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] flags ACMP interrupt sources to set as pending. Use a bitwise logic OR combination of valid interrupt flags for the ACMP module. The flags can be, for instance, ACMP_IFS_EDGE or ACMP_IFS_WARMUP.

Definition at line 1089 of file em_acmp.h .

void ACMP_Reset ( ACMP_TypeDef * acmp )

Reset ACMP to the same state that it was in after a hardware reset.

Note
The GPIO ACMP ROUTE register is NOT reset by this function to allow for centralized setup of this feature.
The peripheral may be enabled and disabled during reset.
Parameters
[in] acmp A pointer to the ACMP peripheral register block.

Definition at line 362 of file em_acmp.c .

References ACMP_Disable() , and ACMP_Enable() .

void ACMP_VASetup ( ACMP_TypeDef * acmp,
const ACMP_VAConfig_TypeDef * vaconfig
)

Set up the VA source.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] vaconfig A pointer to the structure used to configure the VA source. This structure contains the input source and the 2 divider values.

Definition at line 636 of file em_acmp.c .

References BUS_RegMaskedWrite() , ACMP_VAConfig_TypeDef::div0 , ACMP_VAConfig_TypeDef::div1 , and ACMP_VAConfig_TypeDef::input .

void ACMP_VBSetup ( ACMP_TypeDef * acmp,
const ACMP_VBConfig_TypeDef * vbconfig
)

Set up the VB Source.

Parameters
[in] acmp A pointer to the ACMP peripheral register block.
[in] vbconfig A pointer to the structure used to configure the VB source. This structure contains the input source and the 2 divider values.

Definition at line 662 of file em_acmp.c .

References BUS_RegMaskedWrite() , ACMP_VBConfig_TypeDef::div0 , ACMP_VBConfig_TypeDef::div1 , and ACMP_VBConfig_TypeDef::input .