34 #if defined(IDAC_COUNT) && (IDAC_COUNT > 0)
51 #if defined(_SILICON_LABS_32B_SERIES_0) \
52 && (defined(_EFM32_ZERO_FAMILY) || defined(_EFM32_HAPPY_FAMILY))
53 #define ERRATA_FIX_IDAC_E101_EN
83 EFM_ASSERT(IDAC_REF_VALID(idac));
85 tmp = (uint32_t)(init->
prsSel);
95 #if defined(_IDAC_CTRL_OUTENPRS_MASK)
96 tmp |= IDAC_CTRL_OUTENPRS;
122 EFM_ASSERT(IDAC_REF_VALID(idac));
136 EFM_ASSERT(IDAC_REF_VALID(idac));
138 #if defined(ERRATA_FIX_IDAC_E101_EN)
151 idac->
DUTYCONFIG = IDAC_DUTYCONFIG_DUTYCYCLEEN;
157 #if defined ( _IDAC_CAL_MASK )
158 idac->CAL = _IDAC_CAL_RESETVALUE;
175 EFM_ASSERT(IDAC_REF_VALID(idac));
199 #if defined( _IDAC_CURPROG_TUNING_MASK )
204 EFM_ASSERT(IDAC_REF_VALID(idac));
208 #if defined ( _IDAC_CAL_MASK )
214 idac->CAL = (
DEVINFO->IDAC0CAL0 & _DEVINFO_IDAC0CAL0_RANGE0_MASK)
215 >> _DEVINFO_IDAC0CAL0_RANGE0_SHIFT;
218 idac->CAL = (
DEVINFO->IDAC0CAL0 & _DEVINFO_IDAC0CAL0_RANGE1_MASK)
219 >> _DEVINFO_IDAC0CAL0_RANGE1_SHIFT;
222 idac->CAL = (
DEVINFO->IDAC0CAL0 & _DEVINFO_IDAC0CAL0_RANGE2_MASK)
223 >> _DEVINFO_IDAC0CAL0_RANGE2_SHIFT;
226 idac->CAL = (
DEVINFO->IDAC0CAL0 & _DEVINFO_IDAC0CAL0_RANGE3_MASK)
227 >> _DEVINFO_IDAC0CAL0_RANGE3_SHIFT;
232 tmp |= (uint32_t)range;
234 #elif defined( _IDAC_CURPROG_TUNING_MASK )
238 EFM_ASSERT(idac ==
IDAC0);
303 tmp |= (uint32_t)range;
306 #warning "IDAC calibration register definition unknown."
327 EFM_ASSERT(IDAC_REF_VALID(idac));
349 EFM_ASSERT(IDAC_REF_VALID(idac));
350 #if defined(_IDAC_CTRL_OUTEN_MASK)
#define _DEVINFO_IDAC0CAL0_SOURCERANGE1TUNING_MASK
Clock management unit (CMU) API.
#define _DEVINFO_IDAC0CAL1_SINKRANGE0TUNING_MASK
#define _IDAC_CURPROG_RANGESEL_SHIFT
#define _DEVINFO_IDAC0CAL1_SINKRANGE2TUNING_SHIFT
#define _IDAC_CTRL_EN_SHIFT
#define _IDAC_CTRL_MINOUTTRANS_SHIFT
IDAC_PRSSEL_TypeDef prsSel
Emlib peripheral API "assert" implementation.
RAM and peripheral bit-field set and clear API.
Current Digital to Analog Converter (IDAC) peripheral API.
#define _DEVINFO_IDAC0CAL0_SOURCERANGE1TUNING_SHIFT
#define IDAC_CTRL_APORTOUTENPRS
#define _IDAC_CTRL_APORTOUTEN_SHIFT
#define _DEVINFO_IDAC0CAL1_SINKRANGE3TUNING_SHIFT
void IDAC_Enable(IDAC_TypeDef *idac, bool enable)
Enable/disable IDAC.
__IOM uint32_t DUTYCONFIG
#define _DEVINFO_IDAC0CAL1_SINKRANGE0TUNING_SHIFT
#define _DEVINFO_IDAC0CAL0_SOURCERANGE0TUNING_SHIFT
void IDAC_MinimalOutputTransitionMode(IDAC_TypeDef *idac, bool enable)
Enable/disable Minimal Output Transition mode.
#define _DEVINFO_IDAC0CAL1_SINKRANGE1TUNING_MASK
#define _IDAC_CURPROG_TUNING_MASK
#define _IDAC_CURPROG_RESETVALUE
#define _DEVINFO_IDAC0CAL0_SOURCERANGE3TUNING_SHIFT
void IDAC_RangeSet(IDAC_TypeDef *idac, const IDAC_Range_TypeDef range)
Set the current range of the IDAC output.
#define _DEVINFO_IDAC0CAL0_SOURCERANGE2TUNING_MASK
#define _IDAC_CTRL_RESETVALUE
#define _DEVINFO_IDAC0CAL1_SINKRANGE1TUNING_SHIFT
void IDAC_Init(IDAC_TypeDef *idac, const IDAC_Init_TypeDef *init)
Initialize IDAC.
#define _IDAC_CURPROG_STEPSEL_MASK
IDAC_OutMode_TypeDef outMode
void IDAC_StepSet(IDAC_TypeDef *idac, const uint32_t step)
Set the current step of the IDAC output.
#define _IDAC_CURPROG_STEPSEL_SHIFT
#define _DEVINFO_IDAC0CAL0_SOURCERANGE3TUNING_MASK
#define _DEVINFO_IDAC0CAL0_SOURCERANGE0TUNING_MASK
#define IDAC_CURPROG_RANGESEL_RANGE0
void IDAC_Reset(IDAC_TypeDef *idac)
Reset IDAC to same state as after a HW reset.
void IDAC_OutEnable(IDAC_TypeDef *idac, bool enable)
Enable/disable the IDAC OUT pin.
#define _DEVINFO_IDAC0CAL1_SINKRANGE3TUNING_MASK
#define _IDAC_CURPROG_RANGESEL_MASK
#define IDAC_CTRL_CURSINK
#define _DEVINFO_IDAC0CAL0_SOURCERANGE2TUNING_SHIFT
__STATIC_INLINE void BUS_RegBitWrite(volatile uint32_t *addr, unsigned int bit, unsigned int val)
Perform a single-bit write operation on a peripheral register.
#define _IDAC_CURPROG_TUNING_SHIFT
#define _DEVINFO_IDAC0CAL1_SINKRANGE2TUNING_MASK
#define _IDAC_DUTYCONFIG_RESETVALUE