IADC - Incremental ADC
Description
Incremental Analog to Digital Converter (IADC) Peripheral API.
This module contains functions to control the IADC peripheral of Silicon Labs 32-bit MCUs and SoCs. The IADC is used to convert analog signals into a digital representation.
Data Structures |
|
struct | IADC_Init_t |
IADC init structure, common for single conversion and scan sequence.
|
|
struct | IADC_Config_t |
IADC config structure.
|
|
struct | IADC_AllConfigs_t |
Structure for all IADC configs.
|
|
struct | IADC_InitScan_t |
IADC scan init structure.
|
|
struct | IADC_InitSingle_t |
IADC single init structure.
|
|
struct | IADC_SingleInput_t |
IADC single input selection structure.
|
|
struct | IADC_ScanTableEntry_t |
IADC scan table entry structure.
|
|
struct | IADC_ScanTable_t |
Structure for IADC scan table.
|
|
struct | IADC_Result_t |
Structure holding IADC result, including data and ID.
|
|
Functions |
|
void | IADC_init (IADC_TypeDef *iadc, const IADC_Init_t *init, const IADC_AllConfigs_t *allConfigs) |
Initialize IADC.
|
|
void | IADC_reset (IADC_TypeDef *iadc) |
Reset IADC to same state as after a HW reset.
|
|
void | IADC_initScan (IADC_TypeDef *iadc, const IADC_InitScan_t *init, const IADC_ScanTable_t *scanTable) |
Initialize IADC scan sequence.
|
|
void | IADC_updateScanEntry (IADC_TypeDef *iadc, uint8_t id, IADC_ScanTableEntry_t *entry) |
Add/update entry in scan table.
|
|
void | IADC_setScanMask (IADC_TypeDef *iadc, uint32_t mask) |
Set mask of IADC scan table entries to include in scan.
|
|
void | IADC_initSingle (IADC_TypeDef *iadc, const IADC_InitSingle_t *init, const IADC_SingleInput_t *input) |
Initialize single IADC conversion.
|
|
void | IADC_updateSingleInput (IADC_TypeDef *iadc, const IADC_SingleInput_t *input) |
Update IADC single input selection.
|
|
uint8_t | IADC_calcSrcClkPrescale (IADC_TypeDef *iadc, uint32_t srcClkFreq, uint32_t cmuClkFreq) |
Calculate prescaler for CLK_SRC_ADC high speed clock.
|
|
uint32_t | IADC_calcAdcClkPrescale (IADC_TypeDef *iadc, uint32_t adcClkFreq, uint32_t cmuClkFreq, IADC_CfgAdcMode_t adcMode, uint8_t srcClkPrescaler) |
Calculate prescaler for ADC_CLK clock.
|
|
uint8_t | IADC_calcTimebase (IADC_TypeDef *iadc, uint32_t srcClkFreq) |
Calculate timebase value in order to get a timebase providing at least 1us.
|
|
IADC_Result_t | IADC_readSingleResult (IADC_TypeDef *iadc) |
Read most recent single conversion result.
|
|
IADC_Result_t | IADC_pullSingleFifoResult (IADC_TypeDef *iadc) |
Pull result from single data FIFO.
|
|
IADC_Result_t | IADC_readScanResult (IADC_TypeDef *iadc) |
Read most recent scan conversion result.
|
|
IADC_Result_t | IADC_pullScanFifoResult (IADC_TypeDef *iadc) |
Pull result from scan data FIFO.
|
|
uint32_t | IADC_getReferenceVoltage ( IADC_CfgReference_t reference) |
Get reference voltage selection.
|
|
uint32_t | IADC_pullSingleFifoData (IADC_TypeDef *iadc) |
Pull data from single data FIFO.
|
|
uint32_t | IADC_readSingleData (IADC_TypeDef *iadc) |
Read most recent single conversion data.
|
|
uint32_t | IADC_pullScanFifoData (IADC_TypeDef *iadc) |
Pull data from scan data FIFO.
|
|
uint32_t | IADC_readScanData (IADC_TypeDef *iadc) |
Read most recent scan conversion data.
|
|
void | IADC_clearInt (IADC_TypeDef *iadc, uint32_t flags) |
Clear one or more pending IADC interrupts.
|
|
void | IADC_disableInt (IADC_TypeDef *iadc, uint32_t flags) |
Disable one or more IADC interrupts.
|
|
void | IADC_enableInt (IADC_TypeDef *iadc, uint32_t flags) |
Enable one or more IADC interrupts.
|
|
uint32_t | IADC_getInt (IADC_TypeDef *iadc) |
Get pending IADC interrupt flags.
|
|
uint32_t | IADC_getEnabledInt (IADC_TypeDef *iadc) |
Get enabled and pending IADC interrupt flags.
|
|
void | IADC_setInt (IADC_TypeDef *iadc, uint32_t flags) |
Set one or more pending IADC interrupts from SW.
|
|
void | IADC_command (IADC_TypeDef *iadc, IADC_Cmd_t cmd) |
Start/stop scan sequence, single conversion and/or timer.
|
|
uint32_t | IADC_getScanMask (IADC_TypeDef *iadc) |
Get the scan mask currently used in the IADC.
|
|
uint32_t | IADC_getStatus (IADC_TypeDef *iadc) |
Get status bits of IADC.
|
|
uint8_t | IADC_getSingleFifoCnt (IADC_TypeDef *iadc) |
Get the number of elements in the IADC single FIFO.
|
|
uint8_t | IADC_getScanFifoCnt (IADC_TypeDef *iadc) |
Get the number of elements in the IADC scan FIFO.
|
|
IADC_NegInput_t | IADC_portPinToNegInput ( GPIO_Port_TypeDef port, uint8_t pin) |
Convert the GPIO port/pin to IADC negative input selection.
|
|
IADC_PosInput_t | IADC_portPinToPosInput ( GPIO_Port_TypeDef port, uint8_t pin) |
Convert the GPIO port/pin to IADC positive input selection.
|
|
Macros |
|
#define | IADC_INIT_DEFAULT |
Default config for IADC init structure.
|
|
#define | IADC_CONFIG_DEFAULT |
Default IADC config structure.
|
|
#define | IADC_ALLCONFIGS_DEFAULT |
Default IADC sructure for all configs.
|
|
#define | IADC_INITSCAN_DEFAULT |
Default config for IADC scan init structure.
|
|
#define | IADC_INITSINGLE_DEFAULT |
Default config for IADC single init structure.
|
|
#define | IADC_SINGLEINPUT_DEFAULT |
Default config for IADC single input structure.
|
|
#define | IADC_SCANTABLEENTRY_DEFAULT |
Default config for IADC scan table entry structure.
|
|
#define | IADC_SCANTABLE_DEFAULT |
Default IADC structure for scan table.
|
|
Function Documentation
◆ IADC_init()
void IADC_init | ( | IADC_TypeDef * |
iadc,
|
const IADC_Init_t * |
init,
|
||
const IADC_AllConfigs_t * |
allConfigs
|
||
) |
Initialize IADC.
Initializes common parts for both single conversion and scan sequence. In addition, single and/or scan control configuration must be done, please refer to IADC_initSingle() and IADC_initScan() respectively.
- Note
- This function will stop any ongoing conversions.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] init
Pointer to IADC initialization structure. [in] allConfigs
Pointer to structure holding all configs.
◆ IADC_reset()
void IADC_reset | ( | IADC_TypeDef * |
iadc
|
) |
Reset IADC to same state as after a HW reset.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
◆ IADC_initScan()
void IADC_initScan | ( | IADC_TypeDef * |
iadc,
|
const IADC_InitScan_t * |
init,
|
||
const IADC_ScanTable_t * |
scanTable
|
||
) |
Initialize IADC scan sequence.
This function will configure scan mode and set up entries in the scan table. The scan table mask can be updated by calling IADC_updateScanMask.
- Note
- This function will stop any ongoing conversions.
- If an even numbered pin is selected for the positive input, the negative input must use an odd numbered pin and vice versa.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] init
Pointer to IADC initialization structure. [in] scanTable
Pointer to IADC scan table structure.
◆ IADC_updateScanEntry()
void IADC_updateScanEntry | ( | IADC_TypeDef * |
iadc,
|
uint8_t |
id,
|
||
IADC_ScanTableEntry_t * |
entry
|
||
) |
Add/update entry in scan table.
This function will update or add an entry in the scan table with a specific ID.
- Note
- This function will stop any ongoing conversions.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] id
ID of scan table entry to add. [in] entry
Pointer to scan table entry structure.
◆ IADC_setScanMask()
void IADC_setScanMask | ( | IADC_TypeDef * |
iadc,
|
uint32_t |
mask
|
||
) |
Set mask of IADC scan table entries to include in scan.
Set mask of scan table entries to include in next scan. This function can be called while scan conversions are ongoing, but the new scan mask will take effect once the ongoing scan is completed.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] mask
Mask of scan table entries to include in scan.
◆ IADC_initSingle()
void IADC_initSingle | ( | IADC_TypeDef * |
iadc,
|
const IADC_InitSingle_t * |
init,
|
||
const IADC_SingleInput_t * |
input
|
||
) |
Initialize single IADC conversion.
This function will initialize the single conversion and configure the single input selection.
- Note
- This function will stop any ongoing conversions.
- If an even numbered pin is selected for the positive input, the negative input must use an odd numbered pin and vice versa.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] init
Pointer to IADC single initialization structure. [in] input
Pointer to IADC single input selection initialization structure.
◆ IADC_updateSingleInput()
void IADC_updateSingleInput | ( | IADC_TypeDef * |
iadc,
|
const IADC_SingleInput_t * |
input
|
||
) |
Update IADC single input selection.
This function updates the single input selection. The function can be called while single and/or scan conversions are ongoing and the new input configuration will take place on the next single conversion.
- Note
- If an even numbered pin is selected for the positive input, the negative input must use an odd numbered pin and vice versa.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] input
Pointer to single input selection structure.
◆ IADC_calcSrcClkPrescale()
uint8_t IADC_calcSrcClkPrescale | ( | IADC_TypeDef * |
iadc,
|
uint32_t |
srcClkFreq,
|
||
uint32_t |
cmuClkFreq
|
||
) |
Calculate prescaler for CLK_SRC_ADC high speed clock.
The IADC high speed clock is given by: CLK_SRC_ADC / (srcClkPrescaler + 1).
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] srcClkFreq
CLK_SRC_ADC frequency wanted. The frequency will automatically be adjusted to be within valid range according to reference manual. [in] cmuClkFreq
Frequency in Hz of reference CLK_CMU_ADC. Set to 0 to use currently defined CMU clock setting for the IADC.
- Returns
-
Divider value to use for IADC in order to achieve a high speed clock value <=
srcClkFreq
.
◆ IADC_calcAdcClkPrescale()
uint32_t IADC_calcAdcClkPrescale | ( | IADC_TypeDef * |
iadc,
|
uint32_t |
adcClkFreq,
|
||
uint32_t |
cmuClkFreq,
|
||
IADC_CfgAdcMode_t |
adcMode,
|
||
uint8_t |
srcClkPrescaler
|
||
) |
Calculate prescaler for ADC_CLK clock.
The ADC_CLK is given by: CLK_SRC_ADC / (adcClkprescale + 1).
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] adcClkFreq
ADC_CLK frequency wanted. The frequency will automatically be adjusted to be within valid range according to reference manual. [in] cmuClkFreq
Frequency in Hz of CLK_CMU_ADC Set to 0 to use currently defined IADC clock setting (in CMU). [in] adcMode
Mode for IADC config. [in] srcClkPrescaler
Precaler setting for ADC_CLK
- Returns
-
Divider value to use for IADC in order to achieve a ADC_CLK frequency <=
adcClkFreq
.
◆ IADC_calcTimebase()
uint8_t IADC_calcTimebase | ( | IADC_TypeDef * |
iadc,
|
uint32_t |
srcClkFreq
|
||
) |
Calculate timebase value in order to get a timebase providing at least 1us.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] srcClkFreq
Frequency in Hz of reference CLK_SRC_ADC clock. Set to 0 to derive srcClkFreq from CLK_CMU_ADC and prescaler HSCLKRATE.
- Returns
- Timebase value to use for IADC in order to achieve at least 1 us.
◆ IADC_readSingleResult()
IADC_Result_t IADC_readSingleResult | ( | IADC_TypeDef * |
iadc
|
) |
Read most recent single conversion result.
The result struct includes both the data and the ID (0x20) if showId was set when initializing single mode. Calling this function will not affect the state of the single data FIFO.
- Note
- Check data valid flag before calling this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Single conversion result struct holding data and id.
◆ IADC_pullSingleFifoResult()
IADC_Result_t IADC_pullSingleFifoResult | ( | IADC_TypeDef * |
iadc
|
) |
Pull result from single data FIFO.
The result struct includes both the data and the ID (0x20) if showId was set when initializing single mode.
- Note
- Check data valid flag before calling this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Single conversion result struct holding data and id.
◆ IADC_readScanResult()
IADC_Result_t IADC_readScanResult | ( | IADC_TypeDef * |
iadc
|
) |
Read most recent scan conversion result.
The result struct includes both the data and the ID (0x20) if showId was set when initializing scan entry. Calling this function will not affect the state of the scan data FIFO.
- Note
- Check data valid flag before calling this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Scan conversion result struct holding data and id.
◆ IADC_pullScanFifoResult()
IADC_Result_t IADC_pullScanFifoResult | ( | IADC_TypeDef * |
iadc
|
) |
Pull result from scan data FIFO.
The result struct includes both the data and the ID (0x20) if showId was set when initializing scan entry.
- Note
- Check data valid flag before calling this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Scan conversion result struct holding data and id.
◆ IADC_getReferenceVoltage()
uint32_t IADC_getReferenceVoltage | ( | IADC_CfgReference_t |
reference
|
) |
Get reference voltage selection.
- Parameters
-
[in] reference
IADC Reference selection.
- Returns
- IADC reference voltage in millivolts.
◆ IADC_pullSingleFifoData()
|
inline |
Pull data from single data FIFO.
If showId was set when initializing single mode, the results will contain the ID (0x20).
- Note
- Check data valid flag before calling this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Single conversion data.
◆ IADC_readSingleData()
|
inline |
Read most recent single conversion data.
If showId was set when initializing single mode, the data will contain the ID (0x20). Calling this function will not affect the state of the single data FIFO.
- Note
- Check data valid flag before calling this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Single conversion data.
◆ IADC_pullScanFifoData()
|
inline |
Pull data from scan data FIFO.
If showId was set for the scan entry initialization, the data will contain the ID of the scan entry.
- Note
- Check data valid flag before calling this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Scan conversion data.
◆ IADC_readScanData()
|
inline |
Read most recent scan conversion data.
If showId was set for the scan entry initialization, the data will contain the ID of the scan entry. Calling this function will not affect the state of the scan data FIFO.
- Note
- Check data valid flag before calling this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Scan conversion data.
◆ IADC_clearInt()
|
inline |
Clear one or more pending IADC interrupts.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] flags
Pending IADC interrupt source to clear. Use a bitwise logic OR combination of valid interrupt flags for the IADC module (IADC_IF_nnn).
◆ IADC_disableInt()
|
inline |
Disable one or more IADC interrupts.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] flags
IADC interrupt sources to disable. Use a bitwise logic OR combination of valid interrupt flags for the IADC module (IADC_IF_nnn).
◆ IADC_enableInt()
|
inline |
Enable one or more IADC interrupts.
- Note
- Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. Consider using IADC_intClear() prior to enabling if such a pending interrupt should be ignored.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] flags
IADC interrupt sources to enable. Use a bitwise logic OR combination of valid interrupt flags for the IADC module (IADC_IF_nnn).
◆ IADC_getInt()
|
inline |
Get pending IADC interrupt flags.
- Note
- The event bits are not cleared by the use of this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- IADC interrupt sources pending. A bitwise logic OR combination of valid interrupt flags for the IADC module (IADC_IF_nnn).
◆ IADC_getEnabledInt()
|
inline |
Get enabled and pending IADC interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Note
- Interrupt flags are not cleared by the use of this function.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
-
Pending and enabled IADC interrupt sources. The return value is the bitwise AND combination of
- the OR combination of enabled interrupt sources in IADCx_IEN_nnn register (IADCx_IEN_nnn) and
- the OR combination of valid interrupt flags of the IADC module (IADCx_IF_nnn).
◆ IADC_setInt()
|
inline |
Set one or more pending IADC interrupts from SW.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] flags
IADC interrupt sources to set to pending. Use a bitwise logic OR combination of valid interrupt flags for the IADC module (IADC_IF_nnn).
◆ IADC_command()
|
inline |
Start/stop scan sequence, single conversion and/or timer.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block. [in] cmd
Command to be performed.
◆ IADC_getScanMask()
|
inline |
Get the scan mask currently used in the IADC.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Mask of scan table entries currently included in scan.
◆ IADC_getStatus()
|
inline |
Get status bits of IADC.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- IADC status bits
◆ IADC_getSingleFifoCnt()
|
inline |
Get the number of elements in the IADC single FIFO.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Number of elements in single FIFO
◆ IADC_getScanFifoCnt()
|
inline |
Get the number of elements in the IADC scan FIFO.
- Parameters
-
[in] iadc
Pointer to IADC peripheral register block.
- Returns
- Number of elements in scan FIFO
◆ IADC_portPinToNegInput()
|
inline |
Convert the GPIO port/pin to IADC negative input selection.
- Parameters
-
[in] port
GPIO port [in] pin
GPIO in
- Returns
- IADC negative input selection
◆ IADC_portPinToPosInput()
|
inline |
Convert the GPIO port/pin to IADC positive input selection.
- Parameters
-
[in] port
GPIO port [in] pin
GPIO in
- Returns
- IADC positive input selection
Macro Definition Documentation
◆ IADC_INIT_DEFAULT
#define IADC_INIT_DEFAULT |
Default config for IADC init structure.
◆ IADC_CONFIG_DEFAULT
#define IADC_CONFIG_DEFAULT |
Default IADC config structure.
◆ IADC_ALLCONFIGS_DEFAULT
#define IADC_ALLCONFIGS_DEFAULT |
Default IADC sructure for all configs.
◆ IADC_INITSCAN_DEFAULT
#define IADC_INITSCAN_DEFAULT |
Default config for IADC scan init structure.
◆ IADC_INITSINGLE_DEFAULT
#define IADC_INITSINGLE_DEFAULT |
Default config for IADC single init structure.
◆ IADC_SINGLEINPUT_DEFAULT
#define IADC_SINGLEINPUT_DEFAULT |
Default config for IADC single input structure.
◆ IADC_SCANTABLEENTRY_DEFAULT
#define IADC_SCANTABLEENTRY_DEFAULT |
Default config for IADC scan table entry structure.
◆ IADC_SCANTABLE_DEFAULT
#define IADC_SCANTABLE_DEFAULT |
Default IADC structure for scan table.
Enumeration Type Documentation
◆ IADC_Warmup_t
enum IADC_Warmup_t |
◆ IADC_Alignment_t
enum IADC_Alignment_t |
IADC result alignment.
◆ IADC_NegInput_t
enum IADC_NegInput_t |
IADC negative input selection.
◆ IADC_PosInput_t
enum IADC_PosInput_t |
IADC positive port selection.
◆ IADC_Cmd_t
enum IADC_Cmd_t |
◆ IADC_CfgAdcMode_t
enum IADC_CfgAdcMode_t |
◆ IADC_CfgOsrHighSpeed_t
IADC Over sampling rate for high speed.
◆ IADC_CfgOsrHighAccuracy_t
IADC Over sampling rate for high accuracy.
◆ IADC_CfgAnalogGain_t
enum IADC_CfgAnalogGain_t |
◆ IADC_CfgReference_t
enum IADC_CfgReference_t |
IADC Reference.
◆ IADC_CfgTwosComp_t
enum IADC_CfgTwosComp_t |
IADC Two's complement results.
◆ IADC_TriggerSel_t
enum IADC_TriggerSel_t |
IADC trigger action.
◆ IADC_TriggerAction_t
enum IADC_TriggerAction_t |
◆ IADC_FifoCfgDvl_t
enum IADC_FifoCfgDvl_t |
IADC data valid level before requesting DMA transfer.