Analog to Digital Converter (ADC) Peripheral API. More...
![]() |
Data Structures | |
struct | ADC_Init_TypeDef |
struct | ADC_InitScan_TypeDef |
struct | ADC_InitSingle_TypeDef |
Defines | |
#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 } |
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 { adcSingleInpCh0 = _ADC_SINGLECTRL_INPUTSEL_CH0, adcSingleInpCh1 = _ADC_SINGLECTRL_INPUTSEL_CH1, adcSingleInpCh2 = _ADC_SINGLECTRL_INPUTSEL_CH2, adcSingleInpCh3 = _ADC_SINGLECTRL_INPUTSEL_CH3, adcSingleInpCh4 = _ADC_SINGLECTRL_INPUTSEL_CH4, adcSingleInpCh5 = _ADC_SINGLECTRL_INPUTSEL_CH5, adcSingleInpCh6 = _ADC_SINGLECTRL_INPUTSEL_CH6, adcSingleInpCh7 = _ADC_SINGLECTRL_INPUTSEL_CH7, adcSingleInpTemp = _ADC_SINGLECTRL_INPUTSEL_TEMP, adcSingleInpVDDDiv3 = _ADC_SINGLECTRL_INPUTSEL_VDDDIV3, adcSingleInpVDD = _ADC_SINGLECTRL_INPUTSEL_VDD, adcSingleInpVSS = _ADC_SINGLECTRL_INPUTSEL_VSS, adcSingleInpVrefDiv2 = _ADC_SINGLECTRL_INPUTSEL_VREFDIV2, adcSingleInpDACOut0 = _ADC_SINGLECTRL_INPUTSEL_DAC0OUT0, adcSingleInpDACOut1 = _ADC_SINGLECTRL_INPUTSEL_DAC0OUT1, adcSingleInpATEST = 15, adcSingleInpCh0Ch1 = _ADC_SINGLECTRL_INPUTSEL_CH0CH1, adcSingleInpCh2Ch3 = _ADC_SINGLECTRL_INPUTSEL_CH2CH3, adcSingleInpCh4Ch5 = _ADC_SINGLECTRL_INPUTSEL_CH4CH5, adcSingleInpCh6Ch7 = _ADC_SINGLECTRL_INPUTSEL_CH6CH7, adcSingleInpDiff0 = 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_DataSingleGet (ADC_TypeDef *adc) |
Get single conversion result. | |
__STATIC_INLINE uint32_t | ADC_DataScanGet (ADC_TypeDef *adc) |
Get scan 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 ADC scan sequence. | |
void | ADC_InitSingle (ADC_TypeDef *adc, const ADC_InitSingle_TypeDef *init) |
Initialize 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 void | ADC_IntSet (ADC_TypeDef *adc, uint32_t flags) |
Set one or more pending ADC interrupts from SW. | |
uint8_t | ADC_PrescaleCalc (uint32_t adcFreq, uint32_t hfperFreq) |
Calculate prescaler value used to determine ADC clock. | |
__STATIC_INLINE void | ADC_Start (ADC_TypeDef *adc, ADC_Start_TypeDef cmd) |
Start scan sequence and/or single conversion. | |
void | ADC_Reset (ADC_TypeDef *adc) |
Reset ADC to same state as after a HW reset. | |
uint8_t | ADC_TimebaseCalc (uint32_t hfperFreq) |
Calculate timebase value in order to get a timebase providing at least 1us. |
Analog to Digital Converter (ADC) Peripheral API.
#define ADC_INIT_DEFAULT |
{ adcOvsRateSel2, /* 2x oversampling (if enabled). */ \ adcLPFilterBypass, /* No input filter selected. */ \ adcWarmupNormal, /* ADC shutdown after each conversion. */ \ _ADC_CTRL_TIMEBASE_DEFAULT, /* Use HW default value. */ \ _ADC_CTRL_PRESC_DEFAULT, /* Use HW default value. */ \ false /* Do not use tailgate. */ \ }
Default config for ADC init structure.
#define ADC_INITSCAN_DEFAULT |
{ adcPRSSELCh0, /* PRS ch0 (if enabled). */ \ adcAcqTime1, /* 1 ADC_CLK cycle acquisition time. */ \ adcRef1V25, /* 1.25V 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 config for ADC scan init structure.
#define ADC_INITSINGLE_DEFAULT |
{ adcPRSSELCh0, /* PRS ch0 (if enabled). */ \ adcAcqTime1, /* 1 ADC_CLK cycle acquisition time. */ \ adcRef1V25, /* 1.25V 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 config for ADC single conversion init structure.
enum ADC_AcqTime_TypeDef |
Acquisition time (in ADC clock cycles).
enum ADC_LPFilter_TypeDef |
Oversample rate select.
enum ADC_PRSSEL_TypeDef |
enum ADC_Ref_TypeDef |
Reference to ADC sample.
enum ADC_Res_TypeDef |
Single sample input selection.
enum ADC_Start_TypeDef |
enum ADC_Warmup_TypeDef |
__STATIC_INLINE uint32_t ADC_DataScanGet | ( | ADC_TypeDef * | adc | ) |
__STATIC_INLINE uint32_t ADC_DataSingleGet | ( | ADC_TypeDef * | adc | ) |
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, please refer to ADC_InitSingle() and ADC_InitScan() respectively.
[in] | adc | Pointer to ADC peripheral register block. |
[in] | init | Pointer to ADC initialization structure. |
Definition at line 255 of file em_adc.c.
References 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.
void ADC_InitScan | ( | ADC_TypeDef * | adc, | |
const ADC_InitScan_TypeDef * | init | |||
) |
Initialize ADC scan sequence.
Please refer to ADC_Start() for starting 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.
[in] | adc | Pointer to ADC peripheral register block. |
[in] | init | Pointer to ADC initialization structure. |
Definition at line 299 of file em_adc.c.
References ADC_InitScan_TypeDef::acqTime, 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.
void ADC_InitSingle | ( | ADC_TypeDef * | adc, | |
const ADC_InitSingle_TypeDef * | init | |||
) |
Initialize single ADC sample conversion.
Please refer to ADC_Start() for starting 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.
[in] | adc | Pointer to ADC peripheral register block. |
[in] | init | Pointer to ADC initialization structure. |
Definition at line 361 of file em_adc.c.
References ADC_InitSingle_TypeDef::acqTime, 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.
__STATIC_INLINE void ADC_IntClear | ( | ADC_TypeDef * | adc, | |
uint32_t | flags | |||
) |
__STATIC_INLINE void ADC_IntDisable | ( | ADC_TypeDef * | adc, | |
uint32_t | flags | |||
) |
__STATIC_INLINE void ADC_IntEnable | ( | ADC_TypeDef * | adc, | |
uint32_t | flags | |||
) |
Enable one or more ADC interrupts.
[in] | adc | Pointer to ADC peripheral register block. |
[in] | flags | ADC interrupt sources to enable. Use a bitwise logic OR combination of valid interrupt flags for the ADC module (ADC_IF_nnn). |
__STATIC_INLINE uint32_t ADC_IntGet | ( | ADC_TypeDef * | adc | ) |
Get pending ADC interrupt flags.
[in] | adc | Pointer to ADC peripheral register block. |
__STATIC_INLINE void ADC_IntSet | ( | ADC_TypeDef * | adc, | |
uint32_t | flags | |||
) |
uint8_t ADC_PrescaleCalc | ( | uint32_t | adcFreq, | |
uint32_t | hfperFreq | |||
) |
Calculate prescaler value used to determine ADC clock.
The ADC clock is given by: HFPERCLK / (prescale + 1).
[in] | adcFreq | ADC frequency wanted. The frequency will automatically be adjusted to be within valid range according to reference manual. |
[in] | hfperFreq | Frequency in Hz of reference HFPER clock. Set to 0 to use currently defined HFPER clock setting. |
adcFreq
. Definition at line 420 of file em_adc.c.
References CMU_ClockFreqGet(), and cmuClock_HFPER.
void ADC_Reset | ( | ADC_TypeDef * | adc | ) |
Reset ADC to same state as after a HW reset.
[in] | adc | Pointer to ADC peripheral register block. |
Definition at line 461 of file em_adc.c.
References adcRef1V25.
__STATIC_INLINE void ADC_Start | ( | ADC_TypeDef * | adc, | |
ADC_Start_TypeDef | cmd | |||
) |
uint8_t ADC_TimebaseCalc | ( | uint32_t | hfperFreq | ) |
Calculate timebase value in order to get a timebase providing at least 1us.
[in] | hfperFreq | Frequency in Hz of reference HFPER clock. Set to 0 to use currently defined HFPER clock setting. |
Definition at line 490 of file em_adc.c.
References CMU_ClockFreqGet(), and cmuClock_HFPER.