DAC - Digital to Analog Converter
Description
Digital to Analog Converter (DAC) Peripheral API.
This module contains functions to control the DAC peripheral of Silicon Labs 32-bit MCUs and SoCs. The DAC converts digital values to analog signals at up to 500 ksps with 12-bit accuracy. The DAC is designed for low-energy consumption and can also provide very good performance.
Data Structures |
|
struct | DAC_Init_TypeDef |
DAC initialization structure, common for both channels.
|
|
struct | DAC_InitChannel_TypeDef |
DAC channel initialization structure.
|
|
Functions |
|
void | DAC_Enable (DAC_TypeDef *dac, unsigned int ch, bool enable) |
Enable/disable the DAC channel.
|
|
void | DAC_Init (DAC_TypeDef *dac, const DAC_Init_TypeDef *init) |
Initialize DAC.
|
|
void | DAC_InitChannel (DAC_TypeDef *dac, const DAC_InitChannel_TypeDef *init, unsigned int ch) |
Initialize DAC channel.
|
|
void | DAC_ChannelOutputSet (DAC_TypeDef *dac, unsigned int channel, uint32_t value) |
Set the output signal of a DAC channel to a given value.
|
|
void | DAC_Channel0OutputSet (DAC_TypeDef *dac, uint32_t value) |
Set the output signal of DAC channel 0 to a given value.
|
|
void | DAC_Channel1OutputSet (DAC_TypeDef *dac, uint32_t value) |
Set the output signal of DAC channel 1 to a given value.
|
|
void | DAC_IntClear (DAC_TypeDef *dac, uint32_t flags) |
Clear one or more pending DAC interrupts.
|
|
void | DAC_IntDisable (DAC_TypeDef *dac, uint32_t flags) |
Disable one or more DAC interrupts.
|
|
void | DAC_IntEnable (DAC_TypeDef *dac, uint32_t flags) |
Enable one or more DAC interrupts.
|
|
uint32_t | DAC_IntGet (DAC_TypeDef *dac) |
Get pending DAC interrupt flags.
|
|
uint32_t | DAC_IntGetEnabled (DAC_TypeDef *dac) |
Get enabled and pending DAC interrupt flags.
|
|
void | DAC_IntSet (DAC_TypeDef *dac, uint32_t flags) |
Set one or more pending DAC interrupts from SW.
|
|
uint8_t | DAC_PrescaleCalc (uint32_t dacFreq, uint32_t hfperFreq) |
Calculate prescaler value used to determine the DAC clock.
|
|
void | DAC_Reset (DAC_TypeDef *dac) |
Reset DAC to the same state that it was in after a hardware reset.
|
|
Macros |
|
#define | DAC_INIT_DEFAULT |
Default configuration for DAC initialization structure.
|
|
#define | DAC_INITCHANNEL_DEFAULT |
Default configuration for DAC channel initialization structure.
|
|
Enumerations |
|
enum |
DAC_ConvMode_TypeDef
{
dacConvModeContinuous = _DAC_CTRL_CONVMODE_CONTINUOUS, dacConvModeSampleHold = _DAC_CTRL_CONVMODE_SAMPLEHOLD, dacConvModeSampleOff = _DAC_CTRL_CONVMODE_SAMPLEOFF } |
Conversion mode.
|
|
enum |
DAC_Output_TypeDef
{
dacOutputDisable = _DAC_CTRL_OUTMODE_DISABLE, dacOutputPin = _DAC_CTRL_OUTMODE_PIN, dacOutputADC = _DAC_CTRL_OUTMODE_ADC, dacOutputPinADC = _DAC_CTRL_OUTMODE_PINADC } |
Output mode.
|
|
enum |
DAC_PRSSEL_TypeDef
{
dacPRSSELCh0 = _DAC_CH0CTRL_PRSSEL_PRSCH0, dacPRSSELCh1 = _DAC_CH0CTRL_PRSSEL_PRSCH1, dacPRSSELCh2 = _DAC_CH0CTRL_PRSSEL_PRSCH2, dacPRSSELCh3 = _DAC_CH0CTRL_PRSSEL_PRSCH3, dacPRSSELCh4 = _DAC_CH0CTRL_PRSSEL_PRSCH4, dacPRSSELCh5 = _DAC_CH0CTRL_PRSSEL_PRSCH5, dacPRSSELCh6 = _DAC_CH0CTRL_PRSSEL_PRSCH6, dacPRSSELCh7 = _DAC_CH0CTRL_PRSSEL_PRSCH7, dacPRSSELCh8 = _DAC_CH0CTRL_PRSSEL_PRSCH8, dacPRSSELCh9 = _DAC_CH0CTRL_PRSSEL_PRSCH9, dacPRSSELCh10 = _DAC_CH0CTRL_PRSSEL_PRSCH10, dacPRSSELCh11 = _DAC_CH0CTRL_PRSSEL_PRSCH11 } |
Peripheral Reflex System signal used to trigger single sample.
|
|
enum |
DAC_Ref_TypeDef
{
dacRef1V25 = _DAC_CTRL_REFSEL_1V25, dacRef2V5 = _DAC_CTRL_REFSEL_2V5, dacRefVDD = _DAC_CTRL_REFSEL_VDD } |
Reference voltage for DAC.
|
|
enum |
DAC_Refresh_TypeDef
{
dacRefresh8 = _DAC_CTRL_REFRSEL_8CYCLES, dacRefresh16 = _DAC_CTRL_REFRSEL_16CYCLES, dacRefresh32 = _DAC_CTRL_REFRSEL_32CYCLES, dacRefresh64 = _DAC_CTRL_REFRSEL_64CYCLES } |
Refresh interval.
|
|
Function Documentation
◆ DAC_Enable()
void DAC_Enable | ( | DAC_TypeDef * |
dac,
|
unsigned int |
ch,
|
||
bool |
enable
|
||
) |
Enable/disable the DAC channel.
- Parameters
-
[in] dac
A pointer to the DAC peripheral register block. [in] ch
A channel to enable/disable. [in] enable
true to enable DAC channel, false to disable.
◆ DAC_Init()
void DAC_Init | ( | DAC_TypeDef * |
dac,
|
const DAC_Init_TypeDef * |
init
|
||
) |
Initialize DAC.
Initializes common parts for both channels. In addition, channel control configuration must be done. See DAC_InitChannel() .
- Note
- This function will disable both channels prior to configuration.
- Parameters
-
[in] dac
A pointer to the DAC peripheral register block. [in] init
A pointer to the DAC initialization structure.
◆ DAC_InitChannel()
void DAC_InitChannel | ( | DAC_TypeDef * |
dac,
|
const DAC_InitChannel_TypeDef * |
init,
|
||
unsigned int |
ch
|
||
) |
Initialize DAC channel.
- Parameters
-
[in] dac
A pointer to the DAC peripheral register block. [in] init
A pointer to the DAC initialization structure. [in] ch
A channel number to initialize.
◆ DAC_ChannelOutputSet()
void DAC_ChannelOutputSet | ( | DAC_TypeDef * |
dac,
|
unsigned int |
channel,
|
||
uint32_t |
value
|
||
) |
Set the output signal of a DAC channel to a given value.
This function sets the output signal of a DAC channel by writing
value
to the corresponding CHnDATA register.
- Parameters
-
[in] dac
A pointer to the DAC peripheral register block. [in] channel
A channel number to set the output. [in] value
A value to write to the channel output register CHnDATA.
◆ DAC_Channel0OutputSet()
|
inline |
Set the output signal of DAC channel 0 to a given value.
This function sets the output signal of DAC channel 0 by writing
value
to the CH0DATA register.
- Parameters
-
[in] dac
Pointer to DAC peripheral register block. [in] value
Value to write to the channel 0 output register CH0DATA.
◆ DAC_Channel1OutputSet()
|
inline |
Set the output signal of DAC channel 1 to a given value.
Sets the output signal of DAC channel 1 by writing
value
to the CH1DATA register.
- Parameters
-
[in] dac
Pointer to DAC peripheral register block. [in] value
Value to write to the channel 1 output register CH1DATA.
◆ DAC_IntClear()
|
inline |
Clear one or more pending DAC interrupts.
- Parameters
-
[in] dac
Pointer to DAC peripheral register block. [in] flags
Pending DAC interrupt source to clear. Use a bitwise logic OR combination of valid interrupt flags for the DAC module (DAC_IF_nnn).
◆ DAC_IntDisable()
|
inline |
Disable one or more DAC interrupts.
- Parameters
-
[in] dac
Pointer to DAC peripheral register block. [in] flags
DAC interrupt sources to disable. Use a bitwise logic OR combination of valid interrupt flags for the DAC module (DAC_IF_nnn).
◆ DAC_IntEnable()
|
inline |
Enable one or more DAC interrupts.
- Note
- Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. To ignore a pending interrupt, consider using DAC_IntClear() prior to enabling the interrupt.
- Parameters
-
[in] dac
Pointer to DAC peripheral register block. [in] flags
DAC interrupt sources to enable. Use a bitwise logic OR combination of valid interrupt flags for the DAC module (DAC_IF_nnn).
◆ DAC_IntGet()
|
inline |
Get pending DAC interrupt flags.
- Note
- Event bits are not cleared by the use of this function.
- Parameters
-
[in] dac
Pointer to DAC peripheral register block.
- Returns
- DAC interrupt sources pending. A bitwise logic OR combination of valid interrupt flags for the DAC module (DAC_IF_nnn).
◆ DAC_IntGetEnabled()
|
inline |
Get enabled and pending DAC interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Parameters
-
[in] dac
Pointer to DAC peripheral register block.
- Note
- Interrupt flags are not cleared by the use of this function.
- Returns
-
Pending and enabled DAC interrupt sources. Return value is the bitwise AND combination of
- the OR combination of enabled interrupt sources in DACx_IEN_nnn register (DACx_IEN_nnn) and
- the OR combination of valid interrupt flags of the DAC module (DACx_IF_nnn).
◆ DAC_IntSet()
|
inline |
Set one or more pending DAC interrupts from SW.
- Parameters
-
[in] dac
Pointer to DAC peripheral register block. [in] flags
DAC interrupt sources to set to pending. Use a bitwise logic OR combination of valid interrupt flags for the DAC module (DAC_IF_nnn).
◆ DAC_PrescaleCalc()
uint8_t DAC_PrescaleCalc | ( | uint32_t |
dacFreq,
|
uint32_t |
hfperFreq
|
||
) |