IDACEMLIB

Detailed Description

Current Digital-to-Analog Converter (IDAC) Peripheral API.

IDAC can source or sink a configurable constant current, which can be output on, or sinked from pin or ADC. Current is configurable with several ranges of various step sizes. IDAC can be used with PRS and can operate down to EM3.

The following steps are necessary for basic operation:

Clock enable:

/* IDAC is a HFPERCLK peripheral */

Initialize peripheral with default settings and modify selected fields, such as output select:

/* Initialize with default settings. Change output to ADC. */

Set output:

/* Set 50nA step and enable output */

Data Structures

struct IDAC_Init_TypeDef

Macros

#define IDAC_INIT_DEFAULT

Enumerations

enum IDAC_OutMode_TypeDef {
idacOutputPin = IDAC_CTRL_OUTMODE_PIN,
idacOutputADC = IDAC_CTRL_OUTMODE_ADC
}
enum IDAC_PRSSEL_TypeDef {
idacPRSSELCh0 = IDAC_CTRL_PRSSEL_PRSCH0,
idacPRSSELCh1 = IDAC_CTRL_PRSSEL_PRSCH1,
idacPRSSELCh2 = IDAC_CTRL_PRSSEL_PRSCH2,
idacPRSSELCh3 = IDAC_CTRL_PRSSEL_PRSCH3,
idacPRSSELCh4 = IDAC_CTRL_PRSSEL_PRSCH4,
idacPRSSELCh5 = IDAC_CTRL_PRSSEL_PRSCH5
}
enum IDAC_Range_TypeDef {
idacCurrentRange0 = IDAC_CURPROG_RANGESEL_RANGE0,
idacCurrentRange1 = IDAC_CURPROG_RANGESEL_RANGE1,
idacCurrentRange2 = IDAC_CURPROG_RANGESEL_RANGE2,
idacCurrentRange3 = IDAC_CURPROG_RANGESEL_RANGE3
}

Functions

void IDAC_Enable ( IDAC_TypeDef *idac, bool enable)
Enable/disable IDAC.
void IDAC_Init ( IDAC_TypeDef *idac, const IDAC_Init_TypeDef *init)
Initialize IDAC.
void IDAC_MinimalOutputTransitionMode ( IDAC_TypeDef *idac, bool enable)
Enable/disable Minimal Output Transition mode.
void IDAC_OutEnable ( IDAC_TypeDef *idac, bool enable)
Enable/disable the IDAC OUT pin.
void IDAC_RangeSet ( IDAC_TypeDef *idac, const IDAC_Range_TypeDef range)
Set the current range of the IDAC output.
void IDAC_Reset ( IDAC_TypeDef *idac)
Reset IDAC to the same state that it was in after a hardware reset.
void IDAC_StepSet ( IDAC_TypeDef *idac, const uint32_t step)
Set the current step of the IDAC output.

Macro Definition Documentation

#define IDAC_INIT_DEFAULT
Value:
{ \
false, \
idacOutputPin, \
false, \
idacPRSSELCh0, \
false \
}

Default configuration for IDAC initialization structure.

Definition at line 192 of file em_idac.h .

Enumeration Type Documentation

Output mode.

Enumerator
idacOutputPin

Output to IDAC OUT pin.

idacOutputADC

Output to ADC.

Definition at line 92 of file em_idac.h .

Selects which Peripheral Reflex System (PRS) signal to use when PRS is set to control IDAC output.

Enumerator
idacPRSSELCh0

PRS channel 0.

idacPRSSELCh1

PRS channel 1.

idacPRSSELCh2

PRS channel 2.

idacPRSSELCh3

PRS channel 3.

idacPRSSELCh4

PRS channel 4.

idacPRSSELCh5

PRS channel 5.

Definition at line 134 of file em_idac.h .

Selects which current range to use.

Enumerator
idacCurrentRange0

current range 0.

idacCurrentRange1

current range 1.

idacCurrentRange2

current range 2.

idacCurrentRange3

current range 3.

Definition at line 154 of file em_idac.h .

Function Documentation

void IDAC_Enable ( IDAC_TypeDef * idac,
bool enable
)

Enable/disable IDAC.

Parameters
[in] idac A pointer to the IDAC peripheral register block.
[in] enable True to enable IDAC, false to disable.

Definition at line 114 of file em_idac.c .

References _IDAC_CTRL_EN_SHIFT , BUS_RegBitWrite() , and IDAC_TypeDef::CTRL .

void IDAC_Init ( IDAC_TypeDef * idac,
const IDAC_Init_TypeDef * init
)

Initialize IDAC.

Initializes IDAC according to the initialization structure parameter and sets the default calibration value stored in the DEVINFO structure.

Note
This function will disable IDAC prior to configuration.
Parameters
[in] idac A pointer to the IDAC peripheral register block.
[in] init A pointer to the IDAC initialization structure.

Definition at line 77 of file em_idac.c .

References IDAC_TypeDef::CTRL , IDAC_Init_TypeDef::enable , IDAC_CTRL_CURSINK , IDAC_CTRL_EN , IDAC_CTRL_OUTENPRS , IDAC_Init_TypeDef::outMode , IDAC_Init_TypeDef::prsEnable , IDAC_Init_TypeDef::prsSel , and IDAC_Init_TypeDef::sinkEnable .

void IDAC_MinimalOutputTransitionMode ( IDAC_TypeDef * idac,
bool enable
)

Enable/disable Minimal Output Transition mode.

Parameters
[in] idac A pointer to the IDAC peripheral register block.
[in] enable True to enable Minimal Output Transition mode, false to disable.

Definition at line 165 of file em_idac.c .

References _IDAC_CTRL_MINOUTTRANS_SHIFT , BUS_RegBitWrite() , and IDAC_TypeDef::CTRL .

void IDAC_OutEnable ( IDAC_TypeDef * idac,
bool enable
)

Enable/disable the IDAC OUT pin.

Parameters
[in] idac A pointer to the IDAC peripheral register block.
[in] enable True to enable the IDAC OUT pin, false to disable.

Definition at line 330 of file em_idac.c .

References _IDAC_CTRL_OUTEN_SHIFT , BUS_RegBitWrite() , and IDAC_TypeDef::CTRL .

void IDAC_RangeSet ( IDAC_TypeDef * idac,
const IDAC_Range_TypeDef range
)

Set the current range of the IDAC output.

This function sets the current range of the IDAC output. The function also updates the IDAC calibration register (IDAC_CAL) with the default calibration value from DEVINFO (factory calibration) corresponding to the specified range.

Parameters
[in] idac A pointer to the IDAC peripheral register block.
[in] range The current range value.

Definition at line 187 of file em_idac.c .

References _DEVINFO_IDAC0CAL0_RANGE0_MASK , _DEVINFO_IDAC0CAL0_RANGE0_SHIFT , _DEVINFO_IDAC0CAL0_RANGE1_MASK , _DEVINFO_IDAC0CAL0_RANGE1_SHIFT , _DEVINFO_IDAC0CAL0_RANGE2_MASK , _DEVINFO_IDAC0CAL0_RANGE2_SHIFT , _DEVINFO_IDAC0CAL0_RANGE3_MASK , _DEVINFO_IDAC0CAL0_RANGE3_SHIFT , _IDAC_CURPROG_RANGESEL_MASK , _IDAC_CURPROG_RANGESEL_SHIFT , IDAC_TypeDef::CAL , IDAC_TypeDef::CTRL , IDAC_TypeDef::CURPROG , DEVINFO , IDAC0 , IDAC_CTRL_CURSINK , idacCurrentRange0 , idacCurrentRange1 , idacCurrentRange2 , and idacCurrentRange3 .

void IDAC_Reset ( IDAC_TypeDef * idac )

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

Parameters
[in] idac A pointer to the IDAC peripheral register block.

Definition at line 127 of file em_idac.c .

References _IDAC_CAL_RESETVALUE , _IDAC_CTRL_RESETVALUE , _IDAC_CURPROG_RESETVALUE , _IDAC_CURPROG_STEPSEL_SHIFT , _IDAC_DUTYCONFIG_RESETVALUE , IDAC_TypeDef::CAL , IDAC_TypeDef::CTRL , IDAC_TypeDef::CURPROG , IDAC_TypeDef::DUTYCONFIG , IDAC_CTRL_EN , IDAC_CURPROG_RANGESEL_RANGE0 , and IDAC_DUTYCONFIG_DUTYCYCLEEN .

void IDAC_StepSet ( IDAC_TypeDef * idac,
const uint32_t step
)

Set the current step of the IDAC output.

Parameters
[in] idac A pointer to the IDAC peripheral register block.
[in] step A step value for the IDAC output. A valid range is 0-31.

Definition at line 307 of file em_idac.c .

References _IDAC_CURPROG_STEPSEL_MASK , _IDAC_CURPROG_STEPSEL_SHIFT , and IDAC_TypeDef::CURPROG .