ADCEMLIB

Detailed Description

Analog to Digital Converter (ADC) Peripheral API.

This module contains functions to control the ADC peripheral of Silicon Labs 32-bit MCUs and SoCs. The ADC is used to convert analog signals into a digital representation.

Data Structures

struct  ADC_Init_TypeDef
 
struct  ADC_InitScan_TypeDef
 
struct  ADC_InitScanInput_TypeDef
 
struct  ADC_InitSingle_TypeDef
 

Macros

#define ADC_INIT_DEFAULT
 
#define ADC_INITSCAN_DEFAULT
 
#define ADC_INITSINGLE_DEFAULT
 

Enumerations

enum  ADC_AcqTime_TypeDef {
  adcAcqTime1 = _ADC_SINGLECTRL_AT_1CYCLE,
  adcAcqTime2 = _ADC_SINGLECTRL_AT_2CYCLES,
  adcAcqTime4 = _ADC_SINGLECTRL_AT_4CYCLES,
  adcAcqTime8 = _ADC_SINGLECTRL_AT_8CYCLES,
  adcAcqTime16 = _ADC_SINGLECTRL_AT_16CYCLES,
  adcAcqTime32 = _ADC_SINGLECTRL_AT_32CYCLES,
  adcAcqTime64 = _ADC_SINGLECTRL_AT_64CYCLES,
  adcAcqTime128 = _ADC_SINGLECTRL_AT_128CYCLES,
  adcAcqTime256 = _ADC_SINGLECTRL_AT_256CYCLES
}
 
enum  ADC_LPFilter_TypeDef {
  adcLPFilterBypass = _ADC_CTRL_LPFMODE_BYPASS,
  adcLPFilterRC = _ADC_CTRL_LPFMODE_RCFILT,
  adcLPFilterDeCap = _ADC_CTRL_LPFMODE_DECAP
}
 
enum  ADC_OvsRateSel_TypeDef {
  adcOvsRateSel2 = _ADC_CTRL_OVSRSEL_X2,
  adcOvsRateSel4 = _ADC_CTRL_OVSRSEL_X4,
  adcOvsRateSel8 = _ADC_CTRL_OVSRSEL_X8,
  adcOvsRateSel16 = _ADC_CTRL_OVSRSEL_X16,
  adcOvsRateSel32 = _ADC_CTRL_OVSRSEL_X32,
  adcOvsRateSel64 = _ADC_CTRL_OVSRSEL_X64,
  adcOvsRateSel128 = _ADC_CTRL_OVSRSEL_X128,
  adcOvsRateSel256 = _ADC_CTRL_OVSRSEL_X256,
  adcOvsRateSel512 = _ADC_CTRL_OVSRSEL_X512,
  adcOvsRateSel1024 = _ADC_CTRL_OVSRSEL_X1024,
  adcOvsRateSel2048 = _ADC_CTRL_OVSRSEL_X2048,
  adcOvsRateSel4096 = _ADC_CTRL_OVSRSEL_X4096
}
 
enum  ADC_PRSSEL_TypeDef {
  adcPRSSELCh0 = _ADC_SINGLECTRL_PRSSEL_PRSCH0,
  adcPRSSELCh1 = _ADC_SINGLECTRL_PRSSEL_PRSCH1,
  adcPRSSELCh2 = _ADC_SINGLECTRL_PRSSEL_PRSCH2,
  adcPRSSELCh3 = _ADC_SINGLECTRL_PRSSEL_PRSCH3,
  adcPRSSELCh4 = _ADC_SINGLECTRL_PRSSEL_PRSCH4,
  adcPRSSELCh5 = _ADC_SINGLECTRL_PRSSEL_PRSCH5,
  adcPRSSELCh6 = _ADC_SINGLECTRL_PRSSEL_PRSCH6,
  adcPRSSELCh7 = _ADC_SINGLECTRL_PRSSEL_PRSCH7,
  adcPRSSELCh8 = _ADC_SINGLECTRL_PRSSEL_PRSCH8,
  adcPRSSELCh9 = _ADC_SINGLECTRL_PRSSEL_PRSCH9,
  adcPRSSELCh10 = _ADC_SINGLECTRL_PRSSEL_PRSCH10,
  adcPRSSELCh11 = _ADC_SINGLECTRL_PRSSEL_PRSCH11
}
 
enum  ADC_Ref_TypeDef {
  adcRef1V25 = _ADC_SINGLECTRL_REF_1V25,
  adcRef2V5 = _ADC_SINGLECTRL_REF_2V5,
  adcRefVDD = _ADC_SINGLECTRL_REF_VDD,
  adcRef5VDIFF = _ADC_SINGLECTRL_REF_5VDIFF,
  adcRefExtSingle = _ADC_SINGLECTRL_REF_EXTSINGLE,
  adcRef2xExtDiff = _ADC_SINGLECTRL_REF_2XEXTDIFF,
  adcRef2xVDD = _ADC_SINGLECTRL_REF_2XVDD
}
 
enum  ADC_Res_TypeDef {
  adcRes12Bit = _ADC_SINGLECTRL_RES_12BIT,
  adcRes8Bit = _ADC_SINGLECTRL_RES_8BIT,
  adcRes6Bit = _ADC_SINGLECTRL_RES_6BIT,
  adcResOVS = _ADC_SINGLECTRL_RES_OVS
}
 
enum  ADC_SingleInput_TypeDef {
  adcSingleInputCh0 = _ADC_SINGLECTRL_INPUTSEL_CH0,
  adcSingleInputCh1 = _ADC_SINGLECTRL_INPUTSEL_CH1,
  adcSingleInputCh2 = _ADC_SINGLECTRL_INPUTSEL_CH2,
  adcSingleInputCh3 = _ADC_SINGLECTRL_INPUTSEL_CH3,
  adcSingleInputCh4 = _ADC_SINGLECTRL_INPUTSEL_CH4,
  adcSingleInputCh5 = _ADC_SINGLECTRL_INPUTSEL_CH5,
  adcSingleInputCh6 = _ADC_SINGLECTRL_INPUTSEL_CH6,
  adcSingleInputCh7 = _ADC_SINGLECTRL_INPUTSEL_CH7,
  adcSingleInputTemp = _ADC_SINGLECTRL_INPUTSEL_TEMP,
  adcSingleInputVDDDiv3 = _ADC_SINGLECTRL_INPUTSEL_VDDDIV3,
  adcSingleInputVDD = _ADC_SINGLECTRL_INPUTSEL_VDD,
  adcSingleInputVSS = _ADC_SINGLECTRL_INPUTSEL_VSS,
  adcSingleInputVrefDiv2 = _ADC_SINGLECTRL_INPUTSEL_VREFDIV2,
  adcSingleInputDACOut0 = _ADC_SINGLECTRL_INPUTSEL_DAC0OUT0,
  adcSingleInputDACOut1 = _ADC_SINGLECTRL_INPUTSEL_DAC0OUT1,
  adcSingleInputATEST = 15,
  adcSingleInputCh0Ch1 = _ADC_SINGLECTRL_INPUTSEL_CH0CH1,
  adcSingleInputCh2Ch3 = _ADC_SINGLECTRL_INPUTSEL_CH2CH3,
  adcSingleInputCh4Ch5 = _ADC_SINGLECTRL_INPUTSEL_CH4CH5,
  adcSingleInputCh6Ch7 = _ADC_SINGLECTRL_INPUTSEL_CH6CH7,
  adcSingleInputDiff0 = 4
}
 
enum  ADC_Start_TypeDef {
  adcStartSingle = ADC_CMD_SINGLESTART,
  adcStartScan = ADC_CMD_SCANSTART,
  adcStartScanAndSingle = ADC_CMD_SCANSTART | ADC_CMD_SINGLESTART
}
 
enum  ADC_Warmup_TypeDef {
  adcWarmupNormal = _ADC_CTRL_WARMUPMODE_NORMAL,
  adcWarmupFastBG = _ADC_CTRL_WARMUPMODE_FASTBG,
  adcWarmupKeepScanRefWarm = _ADC_CTRL_WARMUPMODE_KEEPSCANREFWARM,
  adcWarmupKeepADCWarm = _ADC_CTRL_WARMUPMODE_KEEPADCWARM
}
 

Functions

__STATIC_INLINE uint32_t ADC_DataScanGet (ADC_TypeDef *adc)
 Get a scan result.
 
__STATIC_INLINE uint32_t ADC_DataScanPeek (ADC_TypeDef *adc)
 Peek scan result.
 
__STATIC_INLINE uint32_t ADC_DataSingleGet (ADC_TypeDef *adc)
 Get a single conversion result.
 
__STATIC_INLINE uint32_t ADC_DataSinglePeek (ADC_TypeDef *adc)
 Peek single conversion result.
 
void ADC_Init (ADC_TypeDef *adc, const ADC_Init_TypeDef *init)
 Initialize ADC.
 
void ADC_InitScan (ADC_TypeDef *adc, const ADC_InitScan_TypeDef *init)
 Initialize the ADC scan sequence.
 
void ADC_InitSingle (ADC_TypeDef *adc, const ADC_InitSingle_TypeDef *init)
 Initialize the single ADC sample conversion.
 
__STATIC_INLINE void ADC_IntClear (ADC_TypeDef *adc, uint32_t flags)
 Clear one or more pending ADC interrupts.
 
__STATIC_INLINE void ADC_IntDisable (ADC_TypeDef *adc, uint32_t flags)
 Disable one or more ADC interrupts.
 
__STATIC_INLINE void ADC_IntEnable (ADC_TypeDef *adc, uint32_t flags)
 Enable one or more ADC interrupts.
 
__STATIC_INLINE uint32_t ADC_IntGet (ADC_TypeDef *adc)
 Get pending ADC interrupt flags.
 
__STATIC_INLINE uint32_t ADC_IntGetEnabled (ADC_TypeDef *adc)
 Get enabled and pending ADC interrupt flags. Useful for handling more interrupt sources in the same interrupt handler.
 
__STATIC_INLINE void ADC_IntSet (ADC_TypeDef *adc, uint32_t flags)
 Set one or more pending ADC interrupts from software.
 
uint8_t ADC_PrescaleCalc (uint32_t adcFreq, uint32_t hfperFreq)
 Calculate the prescaler value used to determine the ADC clock.
 
void ADC_Reset (ADC_TypeDef *adc)
 Reset ADC to a state that it was in after a hardware reset.
 
__STATIC_INLINE void ADC_Start (ADC_TypeDef *adc, ADC_Start_TypeDef cmd)
 Start scan sequence and/or single conversion.
 
uint8_t ADC_TimebaseCalc (uint32_t hfperFreq)
 Calculate a timebase value to get a timebase providing at least 1 us.
 

Macro Definition Documentation

#define ADC_INIT_DEFAULT
Value:
{ \
adcOvsRateSel2, /* 2x oversampling (if enabled). */ \
adcLPFilterBypass, /* No input filter selected. */ \
adcWarmupNormal, /* ADC shutdown after each conversion. */ \
_ADC_CTRL_TIMEBASE_DEFAULT, /* Use hardware default value. */ \
_ADC_CTRL_PRESC_DEFAULT, /* Use hardware default value. */ \
false /* Do not use tailgate. */ \
}

Default configuration for ADC initialization structure.

Definition at line 821 of file em_adc.h.

Referenced by adcInit(), MIC_init(), and TOUCH_Init().

#define ADC_INITSCAN_DEFAULT
Value:
{ \
adcPRSSELCh0, /* PRS ch0 (if enabled). */ \
adcAcqTime1, /* 1 ADC_CLK cycle acquisition time. */ \
adcRef1V25, /* 1.25 V internal reference. */ \
adcRes12Bit, /* 12 bit resolution. */ \
0, /* No input selected. */ \
false, /* Single-ended input. */ \
false, /* PRS disabled. */ \
false, /* Right adjust. */ \
false, /* Deactivate conversion after one scan sequence. */ \
}

Default configuration for ADC scan initialization structure.

Definition at line 927 of file em_adc.h.

Referenced by MIC_init().

#define ADC_INITSINGLE_DEFAULT
Value:
{ \
adcPRSSELCh0, /* PRS ch0 (if enabled). */ \
adcAcqTime1, /* 1 ADC_CLK cycle acquisition time. */ \
adcRef1V25, /* 1.25 V internal reference. */ \
adcRes12Bit, /* 12 bit resolution. */ \
adcSingleInpCh0, /* CH0 input selected. */ \
false, /* Single-ended input. */ \
false, /* PRS disabled. */ \
false, /* Right adjust. */ \
false /* Deactivate conversion after one scan sequence. */ \
}

Default configuration for ADC single conversion initialization structure.

Definition at line 1028 of file em_adc.h.

Referenced by adcInit().

Enumeration Type Documentation

Acquisition time (in ADC clock cycles).

Enumerator
adcAcqTime1 

1 clock cycle.

adcAcqTime2 

2 clock cycles.

adcAcqTime4 

4 clock cycles.

adcAcqTime8 

8 clock cycles.

adcAcqTime16 

16 clock cycles.

adcAcqTime32 

32 clock cycles.

adcAcqTime64 

64 clock cycles.

adcAcqTime128 

128 clock cycles.

adcAcqTime256 

256 clock cycles.

Definition at line 59 of file em_adc.h.

Lowpass filter mode.

Enumerator
adcLPFilterBypass 

No filter or decoupling capacitor.

adcLPFilterRC 

On-chip RC filter.

adcLPFilterDeCap 

On-chip decoupling capacitor.

Definition at line 73 of file em_adc.h.

Oversample rate select.

Enumerator
adcOvsRateSel2 

2 samples per conversion result.

adcOvsRateSel4 

4 samples per conversion result.

adcOvsRateSel8 

8 samples per conversion result.

adcOvsRateSel16 

16 samples per conversion result.

adcOvsRateSel32 

32 samples per conversion result.

adcOvsRateSel64 

64 samples per conversion result.

adcOvsRateSel128 

128 samples per conversion result.

adcOvsRateSel256 

256 samples per conversion result.

adcOvsRateSel512 

512 samples per conversion result.

adcOvsRateSel1024 

1024 samples per conversion result.

adcOvsRateSel2048 

2048 samples per conversion result.

adcOvsRateSel4096 

4096 samples per conversion result.

Definition at line 86 of file em_adc.h.

Peripheral Reflex System signal used to trigger a single sample.

Enumerator
adcPRSSELCh0 

PRS channel 0.

adcPRSSELCh1 

PRS channel 1.

adcPRSSELCh2 

PRS channel 2.

adcPRSSELCh3 

PRS channel 3.

adcPRSSELCh4 

PRS channel 4.

adcPRSSELCh5 

PRS channel 5.

adcPRSSELCh6 

PRS channel 6.

adcPRSSELCh7 

PRS channel 7.

adcPRSSELCh8 

PRS channel 8.

adcPRSSELCh9 

PRS channel 9.

adcPRSSELCh10 

PRS channel 10.

adcPRSSELCh11 

PRS channel 11.

Definition at line 125 of file em_adc.h.

Single and scan mode voltage references. Using unshifted enumerations and or in ADC_CTRLX_VREFSEL_REG to select the extension register CTRLX_VREFSEL.

Enumerator
adcRef1V25 

Internal 1.25 V reference.

adcRef2V5 

Internal 2.5 V reference.

adcRefVDD 

Buffered VDD.

adcRef5VDIFF 

Internal differential 5 V reference.

adcRefExtSingle 

Single-ended external reference from pin 6.

adcRef2xExtDiff 

Differential external reference from pin 6 and 7.

adcRef2xVDD 

Unbuffered 2xVDD.

Definition at line 190 of file em_adc.h.

Sample resolution.

Enumerator
adcRes12Bit 

12 bit sampling.

adcRes8Bit 

8 bit sampling.

adcRes6Bit 

6 bit sampling.

adcResOVS 

Oversampling.

Definition at line 266 of file em_adc.h.

Single sample input selection.

Enumerator
adcSingleInputCh0 

Channel 0.

adcSingleInputCh1 

Channel 1.

adcSingleInputCh2 

Channel 2.

adcSingleInputCh3 

Channel 3.

adcSingleInputCh4 

Channel 4.

adcSingleInputCh5 

Channel 5.

adcSingleInputCh6 

Channel 6.

adcSingleInputCh7 

Channel 7.

adcSingleInputTemp 

Temperature reference.

adcSingleInputVDDDiv3 

VDD divided by 3.

adcSingleInputVDD 

VDD.

adcSingleInputVSS 

VSS.

adcSingleInputVrefDiv2 

Vref divided by 2.

adcSingleInputDACOut0 

DAC output 0.

adcSingleInputDACOut1 

DAC output 1.

adcSingleInputATEST 

ATEST.

adcSingleInputCh0Ch1 

Positive Ch0, negative Ch1.

adcSingleInputCh2Ch3 

Positive Ch2, negative Ch3.

adcSingleInputCh4Ch5 

Positive Ch4, negative Ch5.

adcSingleInputCh6Ch7 

Positive Ch6, negative Ch7.

adcSingleInputDiff0 

Differential 0.

Definition at line 275 of file em_adc.h.

ADC start command.

Enumerator
adcStartSingle 

Start a single conversion.

adcStartScan 

Start a scan sequence.

adcStartScanAndSingle 

Start a scan sequence and single conversion, typically used when tailgating a single conversion after a scan sequence.

Definition at line 723 of file em_adc.h.

Warm-up mode.

Enumerator
adcWarmupNormal 

ADC shutdown after each conversion.

adcWarmupFastBG 

Do not warm up bandgap references.

adcWarmupKeepScanRefWarm 

Reference selected for scan mode kept warm.

adcWarmupKeepADCWarm 

ADC and reference selected for scan mode kept at warmup allowing continuous conversion.

Definition at line 738 of file em_adc.h.

Function Documentation

__STATIC_INLINE uint32_t ADC_DataScanGet ( ADC_TypeDef *  adc)

Get a scan result.

Note
Check data valid flag before calling this function.
Parameters
[in]adcA pointer to the ADC peripheral register block.
Returns
Scan conversion data.

Definition at line 1111 of file em_adc.h.

__STATIC_INLINE uint32_t ADC_DataScanPeek ( ADC_TypeDef *  adc)

Peek scan result.

Note
Check data valid flag before calling this function.
Parameters
[in]adcA pointer to the ADC peripheral register block.
Returns
Scan conversion data.

Definition at line 1129 of file em_adc.h.

__STATIC_INLINE uint32_t ADC_DataSingleGet ( ADC_TypeDef *  adc)

Get a single conversion result.

Note
Check data valid flag before calling this function.
Parameters
[in]adcA pointer to the ADC peripheral register block.
Returns
Single conversion data.

Definition at line 1075 of file em_adc.h.

Referenced by ADC0_IRQHandler(), and getAdcSample().

__STATIC_INLINE uint32_t ADC_DataSinglePeek ( ADC_TypeDef *  adc)

Peek single conversion result.

Note
Check data valid flag before calling this function.
Parameters
[in]adcA pointer to the ADC peripheral register block.
Returns
Single conversion data.

Definition at line 1093 of file em_adc.h.

void ADC_Init ( ADC_TypeDef *  adc,
const ADC_Init_TypeDef init 
)

Initialize ADC.

Initializes common parts for both single conversion and scan sequence. In addition, single and/or scan control configuration must be done. See ADC_InitSingle() and ADC_InitScan() respectively. For ADC architectures with the ADCn->SCANINPUTSEL register, use ADC_ScanSingleEndedInputAdd() to configure single-ended scan inputs or ADC_ScanDifferentialInputAdd() to configure differential scan inputs. ADC_ScanInputClear() is also provided for applications that need to update the input configuration.

Note
This function will stop any ongoing conversion.
Parameters
[in]adcA pointer to the ADC peripheral register block.
[in]initA pointer to the ADC initialization structure.

Definition at line 379 of file em_adc.c.

References ADC_IntClear(), ADC_PrescaleCalc(), BUS_RegMaskedWrite(), CMU_ClockFreqGet(), cmuClock_ADC0, ADC_Init_TypeDef::lpfMode, ADC_Init_TypeDef::ovsRateSel, ADC_Init_TypeDef::prescale, ADC_Init_TypeDef::tailgate, ADC_Init_TypeDef::timebase, and ADC_Init_TypeDef::warmUpMode.

Referenced by adcInit(), MIC_init(), and TOUCH_Init().

void ADC_InitScan ( ADC_TypeDef *  adc,
const ADC_InitScan_TypeDef init 
)

Initialize the ADC scan sequence.

See ADC_Start() for starting a scan sequence.

When selecting an external reference, the gain and offset calibration must be set explicitly (CAL register). For other references, the calibration is updated with values defined during manufacturing. For ADC architectures with the ADCn->SCANINPUTSEL register, use ADC_ScanSingleEndedInputAdd() to configure single-ended scan inputs or ADC_ScanDifferentialInputAdd() to configure differential scan inputs. ADC_ScanInputClear() is also provided for applications that need to update the input configuration.

Note
This function will stop any ongoing scan sequence.
Parameters
[in]adcA pointer to the ADC peripheral register block.
[in]initA pointer to the ADC initialization structure.

Definition at line 710 of file em_adc.c.

References ADC_InitScan_TypeDef::acqTime, BUS_RegBitWrite(), ADC_InitScan_TypeDef::diff, ADC_InitScan_TypeDef::input, ADC_InitScan_TypeDef::leftAdjust, ADC_InitScan_TypeDef::prsEnable, ADC_InitScan_TypeDef::prsSel, ADC_InitScan_TypeDef::reference, ADC_InitScan_TypeDef::rep, and ADC_InitScan_TypeDef::resolution.

Referenced by MIC_init().

void ADC_InitSingle ( ADC_TypeDef *  adc,
const ADC_InitSingle_TypeDef init 
)

Initialize the single ADC sample conversion.

See ADC_Start() for starting a single conversion.

When selecting an external reference, the gain and offset calibration must be set explicitly (CAL register). For other references, the calibration is updated with values defined during manufacturing.

Note
This function will stop any ongoing single conversion.
Parameters
[in]adcA pointer to the ADC peripheral register block.
[in]initA pointer to the ADC initialization structure.

Definition at line 847 of file em_adc.c.

References ADC_InitSingle_TypeDef::acqTime, adcAcqTime8, adcRef1V25, BUS_RegBitWrite(), ADC_InitSingle_TypeDef::diff, ADC_InitSingle_TypeDef::input, ADC_InitSingle_TypeDef::leftAdjust, ADC_InitSingle_TypeDef::prsEnable, ADC_InitSingle_TypeDef::prsSel, ADC_InitSingle_TypeDef::reference, ADC_InitSingle_TypeDef::rep, and ADC_InitSingle_TypeDef::resolution.

Referenced by ADC0_IRQHandler(), adcInit(), and TOUCH_Init().

__STATIC_INLINE void ADC_IntClear ( ADC_TypeDef *  adc,
uint32_t  flags 
)

Clear one or more pending ADC interrupts.

Parameters
[in]adcA pointer to the ADC peripheral register block.
[in]flagsPending ADC interrupt source to clear. Use a bitwise logic OR combination of valid interrupt flags for the ADC module (ADC_IF_nnn).

Definition at line 1168 of file em_adc.h.

Referenced by ADC0_IRQHandler(), ADC_Init(), and TOUCH_Init().

__STATIC_INLINE void ADC_IntDisable ( ADC_TypeDef *  adc,
uint32_t  flags 
)

Disable one or more ADC interrupts.

Parameters
[in]adcA pointer to the ADC peripheral register block.
[in]flagsADC interrupt sources to disable. Use a bitwise logic OR combination of valid interrupt flags for the ADC module (ADC_IF_nnn).

Definition at line 1184 of file em_adc.h.

Referenced by TOUCH_GetPos(), and TOUCH_Init().

__STATIC_INLINE void ADC_IntEnable ( ADC_TypeDef *  adc,
uint32_t  flags 
)

Enable one or more ADC interrupts.

Note
Depending on use, a pending interrupt may already be set prior to enabling the interrupt. Consider using ADC_IntClear() prior to enabling if the pending interrupt should be ignored.
Parameters
[in]adcA pointer to the ADC peripheral register block.
[in]flagsADC interrupt sources to enable. Use a bitwise logic OR combination of valid interrupt flags for the ADC module (ADC_IF_nnn).

Definition at line 1205 of file em_adc.h.

Referenced by TOUCH_GetPos(), and TOUCH_Init().

__STATIC_INLINE uint32_t ADC_IntGet ( ADC_TypeDef *  adc)

Get pending ADC interrupt flags.

Note
This function does not clear event bits.
Parameters
[in]adcA pointer to the ADC peripheral register block.
Returns
ADC interrupt sources pending. A bitwise logic OR combination of valid interrupt flags for the ADC module (ADC_IF_nnn).

Definition at line 1224 of file em_adc.h.

Referenced by getAdcSample().

__STATIC_INLINE uint32_t ADC_IntGetEnabled ( ADC_TypeDef *  adc)

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

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

Definition at line 1248 of file em_adc.h.

__STATIC_INLINE void ADC_IntSet ( ADC_TypeDef *  adc,
uint32_t  flags 
)

Set one or more pending ADC interrupts from software.

Parameters
[in]adcA pointer to the ADC peripheral register block.
[in]flagsADC interrupt sources to set to pending. Use a bitwise logic OR combination of valid interrupt flags for the ADC module (ADC_IF_nnn).

Definition at line 1271 of file em_adc.h.

uint8_t ADC_PrescaleCalc ( uint32_t  adcFreq,
uint32_t  hfperFreq 
)

Calculate the prescaler value used to determine the ADC clock.

The ADC clock is given by: (HFPERCLK or HFPERCCLK) / (prescale + 1).

Note
The return value is clamped to the maximum prescaler value that the hardware supports.
Parameters
[in]adcFreqADC frequency wanted. The frequency will automatically be adjusted to a valid range according to the reference manual.
[in]hfperFreqFrequency in Hz of reference HFPER/HFPERC clock. Set to 0 to use currently defined HFPER/HFPERC clock setting.
Returns
A prescaler value to use for ADC in order to achieve a clock value <= adcFreq.

Definition at line 1009 of file em_adc.c.

References CMU_ClockFreqGet(), and cmuClock_HFPER.

Referenced by ADC_Init(), adcInit(), MIC_init(), and TOUCH_Init().

void ADC_Reset ( ADC_TypeDef *  adc)

Reset ADC to a state that it was in after a hardware reset.

Note
The ROUTE register is NOT reset by this function to allow a centralized setup of this feature.
Parameters
[in]adcA pointer to ADC peripheral register block.

Definition at line 1054 of file em_adc.c.

References adcRef1V25.

__STATIC_INLINE void ADC_Start ( ADC_TypeDef *  adc,
ADC_Start_TypeDef  cmd 
)

Start scan sequence and/or single conversion.

Parameters
[in]adcA pointer to the ADC peripheral register block.
[in]cmdA command indicating which type of sampling to start.

Definition at line 1286 of file em_adc.h.

Referenced by ADC0_IRQHandler(), getAdcSample(), and TOUCH_Init().

uint8_t ADC_TimebaseCalc ( uint32_t  hfperFreq)

Calculate a timebase value to get a timebase providing at least 1 us.

Parameters
[in]hfperFreqFrequency in Hz of the reference HFPER/HFPERC clock. Set to 0 to use currently defined HFPER/HFPERC clock setting.
Returns
A timebase value to use for ADC to achieve at least 1 us.

Definition at line 1105 of file em_adc.c.

References CMU_ClockFreqGet(), and cmuClock_HFPER.

Referenced by adcInit(), and MIC_init().