14. Digital-to-analog converter (DAC)

This section applies to STM32F05x, STM32F07x and STM32F09x devices only. The second DAC channel (DAC_OUT2) and some other features are available only on STM32F07x and STM32F09x devices.

14.1 Introduction

The DAC module is a 12-bit, voltage output digital-to-analog converter. The DAC can be configured in 8- or 12-bit mode and may be used in conjunction with the DMA controller. In 12-bit mode, the data could be left- or right-aligned. An input reference voltage, \( V_{DDA} \) (shared with ADC), is available. The output can optionally be buffered for higher current drive.

14.2 DAC main features

The devices integrate one 12-bit DAC channel DAC_OUT1. A second channel DAC_OUT2 is available on STM32F07x and STM32F09x devices.

DAC main features are the following:

Figure 48 shows the block diagram of a DAC channel and Table 51 gives the pin description.

Figure 48. DAC block diagram

Figure 48. DAC block diagram. The diagram shows the internal architecture of the DAC. On the left, external pins include EXTI_9, V_DDA, and V_SSA. The internal components include a 'trigger selector' block receiving inputs from SWTRIGx, TIM6_TRGO, TIM3_TRGO, TIM15_TRGO, and TIM2_TRGO. This selector is controlled by TSELx[2:0] bits from the 'DAC control register'. The 'trigger selector' output goes to 'Control logic'. The 'DAC control register' also provides DMAENx, DMA requestx, and TENx signals to the 'Control logic'. The 'Control logic' receives a 12-bit input from 'DHRx' and sends a 12-bit output to 'DORx'. The 'DORx' output goes to the 'Digital-to-analog converterx' block. The 'Digital-to-analog converterx' block also receives V_DDA and V_SSA. Its output goes through a buffer (indicated by a triangle symbol) and a switch to the 'DAC_OUT' pin. The 'BOFF' bit from the 'DAC control register' controls the buffer. The diagram is labeled MS19883V3.
Figure 48. DAC block diagram. The diagram shows the internal architecture of the DAC. On the left, external pins include EXTI_9, V_DDA, and V_SSA. The internal components include a 'trigger selector' block receiving inputs from SWTRIGx, TIM6_TRGO, TIM3_TRGO, TIM15_TRGO, and TIM2_TRGO. This selector is controlled by TSELx[2:0] bits from the 'DAC control register'. The 'trigger selector' output goes to 'Control logic'. The 'DAC control register' also provides DMAENx, DMA requestx, and TENx signals to the 'Control logic'. The 'Control logic' receives a 12-bit input from 'DHRx' and sends a 12-bit output to 'DORx'. The 'DORx' output goes to the 'Digital-to-analog converterx' block. The 'Digital-to-analog converterx' block also receives V_DDA and V_SSA. Its output goes through a buffer (indicated by a triangle symbol) and a switch to the 'DAC_OUT' pin. The 'BOFF' bit from the 'DAC control register' controls the buffer. The diagram is labeled MS19883V3.

Table 51. DAC pins

NameSignal typeRemarks
V DDAInput, analog supplyAnalog power supply
V SSAInput, analog supply groundGround for analog power supply
DAC_OUTAnalog output signalDAC channelx analog output

Note: Once DAC_Channelx is enabled, the corresponding GPIO pin (PA4 or PA5) is automatically connected to the analog converter output (DAC_OUTx). In order to avoid parasitic consumption, the PA4 or PA5 pin should first be configured to analog (AIN).

14.3 DAC output buffer enable

The DAC integrates one output buffer that can be used to reduce the output impedance and to drive external loads directly without having to add an external operational amplifier.

The DAC channel output buffers can be enabled and disabled through the corresponding BOFFx bit in the DAC_CR register.

14.4 DAC channel enable

Each DAC channel can be powered on by setting the corresponding ENx bit in the DAC_CR register. Each DAC channel is then enabled after a startup time \( t_{WAKEUP} \) .

Note: The ENx bit enables the analog DAC Channelx macrocell only. The DAC Channelx digital interface is enabled even if the ENx bit is reset.

14.5 Single mode functional description

14.5.1 DAC data format

There are three possibilities:

Depending on the loaded DAC_DHRyyxx register, the data written by the user is shifted and stored into the corresponding DHRx (data holding registerx, which are internal non-memory-mapped registers). The DHRx register is then loaded into the DORx register either automatically, by software trigger or by an external event trigger.

Figure 49. Data registers in single DAC channel mode

Diagram showing bit alignment for 8-bit right, 12-bit left, and 12-bit right modes within a 32-bit register structure.
31241570Alignment Mode
Data [7:0]8-bit right aligned
Data [15:4]12-bit left aligned
Data [11:0]12-bit right aligned

ai14710b

Diagram showing bit alignment for 8-bit right, 12-bit left, and 12-bit right modes within a 32-bit register structure.

14.5.2 DAC channel conversion

The DAC_DORx cannot be written directly and any data transfer to the DAC channelx must be performed by loading the DAC_DHRx register (write to DAC_DHR8Rx, DAC_DHR12Lx, DAC_DHR12Rx).

Data stored in the DAC_DHRx register are automatically transferred to the DAC_DORx register after one APB clock cycle, if no hardware trigger is selected (TENx bit in DAC_CR register is reset). However, when a hardware trigger is selected (TENx bit in DAC_CR register is set) and a trigger occurs, the transfer is performed three PCLK clock cycles later.

When DAC_DORx is loaded with the DAC_DHRx contents, the analog output voltage becomes available after a time \( t_{SETTLING} \) that depends on the power supply voltage and the analog output load.

Figure 50. Timing diagram for conversion with trigger disabled TEN = 0

Timing diagram for conversion with trigger disabled TEN = 0. The diagram shows three signals: APB1_CLK (a periodic square wave), DHR (Digital-to-Analog Register), and DOR (Output Register). The DHR signal is shown with a value of 0x1AC. The DOR signal is shown with a value of 0x1AC, and an arrow points from it to the text 'Output voltage available on DAC_OUT pin'. A horizontal double-headed arrow labeled 'tSETTLING' indicates the time interval between the DHR update and the DOR update. The reference 'ai14711b' is in the bottom right corner.
Timing diagram for conversion with trigger disabled TEN = 0. The diagram shows three signals: APB1_CLK (a periodic square wave), DHR (Digital-to-Analog Register), and DOR (Output Register). The DHR signal is shown with a value of 0x1AC. The DOR signal is shown with a value of 0x1AC, and an arrow points from it to the text 'Output voltage available on DAC_OUT pin'. A horizontal double-headed arrow labeled 'tSETTLING' indicates the time interval between the DHR update and the DOR update. The reference 'ai14711b' is in the bottom right corner.

Independent trigger with single LFSR generation

To configure the DAC in this conversion mode (see Section 14.7: Noise generation (STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the DAC channel trigger enable bit TENx.
  2. 2. Configure the trigger source by setting TSELx[2:0] bits.
  3. 3. Configure the DAC channel WAVEx[1:0] bits as “01” and the same LFSR mask value in the MAMPx[3:0] bits
  4. 4. Load the DAC channel data into the desired DAC_DHRx register (DHR12RD, DHR12LD or DHR8RD).

When a DAC channelx trigger arrives, the LFSRx counter, with the same mask, is added to the DHRx register and the sum is transferred into DAC_DORx (three APB clock cycles later). Then the LFSRx counter is updated.

Independent trigger with single triangle generation

To configure the DAC in this conversion mode (see Section 14.8: Triangle-wave generation (STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the DAC channelx trigger enable TENx bits.
  2. 2. Configure the trigger source by setting TSELx[2:0] bits.
  3. 3. Configure the DAC channelx WAVEx[1:0] bits as “1x” and the same maximum amplitude value in the MAMPx[3:0] bits
  4. 4. Load the DAC channelx data into the desired DAC_DHRx register. (DHR12RD, DHR12LD or DHR8RD).

When a DAC channelx trigger arrives, the DAC channelx triangle counter, with the same triangle amplitude, is added to the DHRx register and the sum is transferred into DAC_DORx (three APB clock cycles later). The DAC channelx triangle counter is then updated.

14.5.3 DAC output voltage

Digital inputs are converted to output voltages on a linear conversion between 0 and V DDA .

The analog output voltages on each DAC channel pin are determined by the following equation:

\[ \text{DACoutput} = V_{\text{DDA}} \times \frac{\text{DOR}}{4096} \]

14.5.4 DAC trigger selection

If the TENx control bit is set, conversion can then be triggered by an external event (timer counter, external interrupt line). The TSELx[2:0] control bits determine which possible events will trigger conversion as shown in Table 52 .

Table 52. External triggers

SourceTypeTSEL[2:0]
TIM6_TRGO eventInternal signal from on-chip timers000
TIM3_TRGO event001
TIM7_TRGO event010
TIM15_TRGO event011
TIM2_TRGO event100
Reserved101
EXTI line9External pin110
SWTRIGSoftware control bit111

Each time a DAC interface detects a rising edge on the selected timer TRGO output, or on the selected external interrupt line 9, the last data stored into the DAC_DHRx register are transferred into the DAC_DORx register. The DAC_DORx register is updated three APB cycles after the trigger occurs.

If the software trigger is selected, the conversion starts once the SWTRIG bit is set. SWTRIG is reset by hardware once the DAC_DORx register has been loaded with the DAC_DHRx register contents.

Note: TSELx[2:0] bit cannot be changed when the ENx bit is set. When software trigger is selected, the transfer from the DAC_DHRx register to the DAC_DORx register takes only one APB clock cycle.

14.6 Dual-mode functional description (STM32F07x and STM32F09x devices)

14.6.1 DAC data format

In Dual DAC channel mode, there are three possibilities:

Depending on the loaded DAC_DHRyyyD register, the data written by the user is shifted and stored in DHR1 and DHR2 (data holding registers, which are internal non-memory-mapped registers). The DHR1 and DHR2 registers are then loaded into the DOR1 and DOR2 registers, respectively, either automatically, by software trigger or by an external event trigger.

Figure 51. Data registers in dual DAC channel mode

Figure 51: Data registers in dual DAC channel mode. The diagram shows three rows of a 32-bit register (bits 31 to 0) representing different alignment modes for two 12-bit DAC channels. The top row, labeled '8-bit right aligned', shows the first 8 bits (31-24) and last 8 bits (7-0) shaded. The middle row, labeled '12-bit left aligned', shows the first 12 bits (31-20) and last 12 bits (11-0) shaded. The bottom row, labeled '12-bit right aligned', shows the first 12 bits (31-20) and last 12 bits (11-0) shaded. Bit positions 31, 24, 15, 7, and 0 are marked at the top. The identifier 'ai14709b' is in the bottom right corner.
Figure 51: Data registers in dual DAC channel mode. The diagram shows three rows of a 32-bit register (bits 31 to 0) representing different alignment modes for two 12-bit DAC channels. The top row, labeled '8-bit right aligned', shows the first 8 bits (31-24) and last 8 bits (7-0) shaded. The middle row, labeled '12-bit left aligned', shows the first 12 bits (31-20) and last 12 bits (11-0) shaded. The bottom row, labeled '12-bit right aligned', shows the first 12 bits (31-20) and last 12 bits (11-0) shaded. Bit positions 31, 24, 15, 7, and 0 are marked at the top. The identifier 'ai14709b' is in the bottom right corner.

14.6.2 DAC channel conversion in dual mode

The DAC channel conversion in dual mode is performed in the same way as in single mode (refer to Section 14.5.2 ) except that the data have to be loaded by writing to DAC_DHR8Rx, DAC_DHR12Lx, DAC_DHR12Rx, DAC_DHR8RD, DAC_DHR12LD or DAC_DHR12RD.

14.6.3 Description of dual conversion modes

To efficiently use the bus bandwidth in applications that require the two DAC channels at the same time, three dual registers are implemented: DHR8RD, DHR12RD and DHR12LD. A unique register access is then required to drive both DAC channels at the same time.

Eleven conversion modes are possible using the two DAC channels and these dual registers. All the conversion modes can nevertheless be obtained using separate DHRx registers if needed.

All modes are described in the paragraphs below.

Refer to Section 14.5.2: DAC channel conversion for details on the APB bus (APB or APB1) that clocks the DAC conversions.

Independent trigger without wave generation

To configure the DAC in this conversion mode, the following sequence is required:

  1. 1. Set the two DAC channel trigger enable bits TEN1 and TEN2
  2. 2. Configure different trigger sources by setting different values in the TSEL1[2:0] and TSEL2[2:0] bits
  3. 3. Load the dual DAC channel data into the desired DHR register (DAC_DHR12RD, DAC_DHR12LD or DAC_DHR8RD)

When a DAC channel1 trigger arrives, the DHR1 register is transferred into DAC_DOR1 (three APB clock cycles later).

When a DAC channel2 trigger arrives, the DHR2 register is transferred into DAC_DOR2 (three APB clock cycles later).

For code example refer to the Appendix section A.8.1: Independent trigger without wave generation code example

Independent trigger with single LFSR generation

To configure the DAC in this conversion mode (refer to Section 14.7: Noise generation(STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the two DAC channel trigger enable bits TEN1 and TEN2
  2. 2. Configure different trigger sources by setting different values in the TSEL1[2:0] and TSEL2[2:0] bits
  3. 3. Configure the two DAC channel WAVEx[1:0] bits as “01” and the same LFSR mask value in the MAMPx[3:0] bits
  4. 4. Load the dual DAC channel data into the desired DHR register (DHR12RD, DHR12LD or DHR8RD)

For code example refer to the Appendix section A.8.2: Independent trigger with single LFSR generation code example

When a DAC channel1 trigger arrives, the LFSR1 counter, with the same mask, is added to the DHR1 register and the sum is transferred into DAC_DOR1 (three APB clock cycles later). Then the LFSR1 counter is updated.

When a DAC channel2 trigger arrives, the LFSR2 counter, with the same mask, is added to the DHR2 register and the sum is transferred into DAC_DOR2 (three APB clock cycles later). Then the LFSR2 counter is updated.

Independent trigger with different LFSR generation

To configure the DAC in this conversion mode (refer to Section 14.7: Noise generation(STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the two DAC channel trigger enable bits TEN1 and TEN2
  2. 2. Configure different trigger sources by setting different values in the TSEL1[2:0] and TSEL2[2:0] bits
  3. 3. Configure the two DAC channel WAVEx[1:0] bits as “01” and set different LFSR masks values in the MAMP1[3:0] and MAMP2[3:0] bits
  4. 4. Load the dual DAC channel data into the desired DHR register (DAC_DHR12RD, DAC_DHR12LD or DAC_DHR8RD)

For code example refer to the Appendix section A.8.3: Independent trigger with different LFSR generation code example .

When a DAC channel1 trigger arrives, the LFSR1 counter, with the mask configured by MAMP1[3:0], is added to the DHR1 register and the sum is transferred into DAC_DOR1 (three APB clock cycles later). Then the LFSR1 counter is updated.

When a DAC channel2 trigger arrives, the LFSR2 counter, with the mask configured by MAMP2[3:0], is added to the DHR2 register and the sum is transferred into DAC_DOR2 (three APB clock cycles later). Then the LFSR2 counter is updated.

Independent trigger with single triangle generation

To configure the DAC in this conversion mode (refer to Section 14.8: Triangle-wave generation (STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the DAC channelx trigger enable TENx bits.
  2. 2. Configure different trigger sources by setting different values in the TSELx[2:0] bits
  3. 3. Configure the DAC channelx WAVEx[1:0] bits as “1x” and the same maximum amplitude value in the MAMPx[3:0] bits
  4. 4. Load the DAC channelx data into the desired DAC_DHRx register.

For code example refer to the Appendix section A.8.4: Independent trigger with single triangle generation code example .

Refer to Section 14.5.2: DAC channel conversion for details on the APB bus (APB or APB1) that clocks the DAC conversions.

When a DAC channelx trigger arrives, the DAC channelx triangle counter, with the same triangle amplitude, is added to the DHRx register and the sum is transferred into DAC_DORx (three APB clock cycles later). The DAC channelx triangle counter is then updated.

Independent trigger with different triangle generation

To configure the DAC in this conversion mode (refer to Section 14.8: Triangle-wave generation (STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the DAC channelx trigger enable TENx bits.
  2. 2. Configure different trigger sources by setting different values in the TSELx[2:0] bits
  3. 3. Configure the DAC channelx WAVEx[1:0] bits as “1x” and set different maximum amplitude values in the MAMPx[3:0] bits
  4. 4. Load the DAC channelx data into the desired DAC_DHRx register.

For code example refer to the Appendix section A.8.5: Independent trigger with different triangle generation code example .

When a DAC channelx trigger arrives, the DAC channelx triangle counter, with a triangle amplitude configured by MAMPx[3:0], is added to the DHRx register and the sum is transferred into DAC_DORx (three APB clock cycles later). The DAC channelx triangle counter is then updated.

Simultaneous software start

To configure the DAC in this conversion mode, the following sequence is required:

  1. 1. Load the dual DAC channel data to the desired DHR register (DAC_DHR12RD, DAC_DHR12LD or DAC_DHR8RD)

In this configuration, one APB clock cycles).

For code example refer to the Appendix section A.8.6: Simultaneous software start code example .

Simultaneous trigger without wave generation

To configure the DAC in this conversion mode, the following sequence is required:

  1. 1. Set the two DAC channel trigger enable bits TEN1 and TEN2
  2. 2. Configure the same trigger source for both DAC channels by setting the same value in the TSEL1[2:0] and TSEL2[2:0] bits
  3. 3. Load the dual DAC channel data to the desired DHR register (DAC_DHR12RD, DAC_DHR12LD or DAC_DHR8RD)

When a trigger arrives, the DHR1 and DHR2 registers are transferred into DAC_DOR1 and DAC_DOR2, respectively (after three APB clock cycles).

For code example refer to the Appendix section A.8.7: Simultaneous trigger without wave generation code example .

Simultaneous trigger with single LFSR generation

To configure the DAC in this conversion mode (refer to Section 14.7: Noise generation(STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the two DAC channel trigger enable bits TEN1 and TEN2
  2. 2. Configure the same trigger source for both DAC channels by setting the same value in the TSEL1[2:0] and TSEL2[2:0] bits
  3. 3. Configure the two DAC channel WAVEx[1:0] bits as “01” and the same LFSR mask value in the MAMPx[3:0] bits
  4. 4. Load the dual DAC channel data to the desired DHR register (DHR12RD, DHR12LD or DHR8RD)

For code example refer to the Appendix section A.8.8: Simultaneous trigger with single LFSR generation code example .

When a trigger arrives, the LFSR1 counter, with the same mask, is added to the DHR1 register and the sum is transferred into DAC_DOR1 (three APB clock cycles later). The LFSR1 counter is then updated. At the same time, the LFSR2 counter, with the same mask, is added to the DHR2 register and the sum is transferred into DAC_DOR2 (three APB clock cycles later). The LFSR2 counter is then updated.

Simultaneous trigger with different LFSR generation

To configure the DAC in this conversion mode (refer to Section 14.7: Noise generation(STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the two DAC channel trigger enable bits TEN1 and TEN2
  2. 2. Configure the same trigger source for both DAC channels by setting the same value in the TSEL1[2:0] and TSEL2[2:0] bits
  3. 3. Configure the two DAC channel WAVEx[1:0] bits as “01” and set different LFSR mask values using the MAMP1[3:0] and MAMP2[3:0] bits
  4. 4. Load the dual DAC channel data into the desired DHR register (DAC_DHR12RD, DAC_DHR12LD or DAC_DHR8RD)

For code example refer to the Appendix section A.8.9: Simultaneous trigger with different LFSR generation code example .

When a trigger arrives, the LFSR1 counter, with the mask configured by MAMP1[3:0], is added to the DHR1 register and the sum is transferred into DAC_DOR1 (three APB clock cycles later). The LFSR1 counter is then updated.

At the same time, the LFSR2 counter, with the mask configured by MAMP2[3:0], is added to the DHR2 register and the sum is transferred into DAC_DOR2 (three APB clock cycles later). The LFSR2 counter is then updated.

Simultaneous trigger with single triangle generation

To configure the DAC in this conversion mode (refer to Section 14.8: Triangle-wave generation (STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the DAC channelx trigger enable TEN1x bits.
  2. 2. Configure the same trigger source for both DAC channels by setting the same value in the TSELx[2:0] bits.
  3. 3. Configure the DAC channelx WAVEx[1:0] bits as “1x” and the same maximum amplitude value using the MAMPx[3:0] bits
  4. 4. Load the DAC channelx data into the desired DAC_DHRx registers.

For code example refer to the Appendix section A.8.10: Simultaneous trigger with single triangle generation code example .

When a trigger arrives, the DAC channelx triangle counter, with the same triangle amplitude, is added to the DHRx register and the sum is transferred into DAC_DORx (three APB clock cycles later). The DAC channelx triangle counter is then updated.

Simultaneous trigger with different triangle generation

To configure the DAC in this conversion mode (refer to Section 14.8: Triangle-wave generation (STM32F07x and STM32F09x devices) ), the following sequence is required:

  1. 1. Set the DAC channelx trigger enable TENx bits.
  2. 2. Configure the same trigger source for DAC channelx by setting the same value in the TSELx[2:0] bits
  3. 3. Configure the DAC channelx WAVEx[1:0] bits as “1x” and set different maximum amplitude values in the MAMPx[3:0] bits.
  4. 4. Load the DAC channelx data into the desired DAC_DHRx registers.

For code example refer to the Appendix section A.8.11: Simultaneous trigger with different triangle generation code example .

When a trigger arrives, the DAC channelx triangle counter, with a triangle amplitude configured by MAMPx[3:0], is added to the DHRx register and the sum is transferred into DAC_DORx (three APB clock cycles later). Then the DAC channelx triangle counter is updated.

14.6.4 DAC output voltage

Refer to Section 14.5.3: DAC output voltage .

14.6.5 DAC trigger selection

Refer to Section 14.5.4: DAC trigger selection

14.7 Noise generation(STM32F07x and STM32F09x devices)

In order to generate a variable-amplitude pseudonoise, an LFSR (linear feedback shift register) is available. DAC noise generation is selected by setting WAVEx[1:0] to “01”. The preloaded value in LFSR is 0xAAA. This register is updated three APB clock cycles after each trigger event, following a specific calculation algorithm.

Figure 52. DAC LFSR register calculation algorithm

Diagram of the DAC LFSR register calculation algorithm. It shows a 12-bit shift register with cells numbered 11 down to 0. The output of cell 0 is fed back through an XOR gate and also through a NOR gate. The XOR gate has multiple inputs, with the first one being the output of cell 11 (labeled X^12). The outputs of cells 6 (X^6), 4 (X^4), 1 (X), and 0 (X^0) are also connected to the XOR gate. The output of the NOR gate is fed back into cell 11. The diagram is labeled ai14713c.
Diagram of the DAC LFSR register calculation algorithm. It shows a 12-bit shift register with cells numbered 11 down to 0. The output of cell 0 is fed back through an XOR gate and also through a NOR gate. The XOR gate has multiple inputs, with the first one being the output of cell 11 (labeled X^12). The outputs of cells 6 (X^6), 4 (X^4), 1 (X), and 0 (X^0) are also connected to the XOR gate. The output of the NOR gate is fed back into cell 11. The diagram is labeled ai14713c.

The LFSR value, that may be masked partially or totally by means of the MAMPx[3:0] bits in the DAC_CR register, is added up to the DAC_DHRx contents without overflow and this value is then stored into the DAC_DORx register.

If LFSR is 0x0000, a ‘1’ is injected into it (antilock-up mechanism).

It is possible to reset LFSR wave generation by resetting the WAVEx[1:0] bits.

Figure 53. DAC conversion (SW trigger enabled) with LFSR wave generation

Timing diagram showing the relationship between APB1_CLK, DHR, DOR, and SWTRIG signals. APB1_CLK is a periodic square wave. DHR is initially 0x00. DOR is initially 0xAAA. SWTRIG is a pulse that triggers a change in DOR to 0xD55. The diagram is labeled ai14714b.
Timing diagram showing the relationship between APB1_CLK, DHR, DOR, and SWTRIG signals. APB1_CLK is a periodic square wave. DHR is initially 0x00. DOR is initially 0xAAA. SWTRIG is a pulse that triggers a change in DOR to 0xD55. The diagram is labeled ai14714b.

Note: The DAC trigger must be enabled for noise generation by setting the TENx bit in the DAC_CR register.

14.8 Triangle-wave generation (STM32F07x and STM32F09x devices)

It is possible to add a small-amplitude triangular waveform on a DC or slowly varying signal. DAC triangle-wave generation is selected by setting WAVEx[1:0] to “10”. The amplitude is configured through the MAMPx[3:0] bits in the DAC_CR register. An internal triangle counter is incremented three APB clock cycles after each trigger event. The value of this counter is then added to the DAC_DHRx register without overflow and the sum is stored into the DAC_DORx register. The triangle counter is incremented as long as it is less than the maximum amplitude defined by the MAMPx[3:0] bits. Once the configured amplitude is reached, the counter is decremented down to 0, then incremented again and so on.

It is possible to reset triangle wave generation by resetting the WAVEx[1:0] bits.

Figure 54. DAC triangle wave generation

Figure 54: DAC triangle wave generation graph showing a triangular waveform oscillating between a base value and a maximum amplitude.

The graph shows a triangular waveform over time. The vertical axis represents the DAC output value, with a horizontal line indicating the 'DAC_DHRx base value' and a dashed horizontal line at the top indicating the 'MAMPx[3:0] max amplitude + DAC_DHRx base value'. The waveform starts at the base value, rises linearly (labeled 'Incrementation'), reaches the maximum amplitude, falls linearly (labeled 'Decrementation'), reaches a minimum below the base value, and then rises again. The origin is marked '0'. The identifier 'ai14715c' is in the bottom right corner.

Figure 54: DAC triangle wave generation graph showing a triangular waveform oscillating between a base value and a maximum amplitude.

Figure 55. DAC conversion (SW trigger enabled) with triangle wave generation

Figure 55: Timing diagram for DAC conversion with triangle wave generation, showing APB1_CLK, DHR, DOR, and SWTRIG signals.

The timing diagram shows four signals over time:

Vertical dashed lines indicate the timing of the SWTRIG transitions relative to the clock and the resulting changes in the DOR register. The identifier 'ai14716b' is in the bottom right corner.

Figure 55: Timing diagram for DAC conversion with triangle wave generation, showing APB1_CLK, DHR, DOR, and SWTRIG signals.

Note: The DAC trigger must be enabled for triangle generation by setting the TENx bit in the DAC_CR register.

The MAMPx[3:0] bits must be configured before enabling the DAC, otherwise they cannot be changed.

14.9 DMA request

Each DAC channel has a DMA capability. Two DMA channels are used to service DAC channel DMA requests.

A DAC DMA request is generated when an external trigger (but not a software trigger) occurs while the DMAENx bit is set. The value of the DAC_DHRx register is then transferred to the DAC_DORx register.

In dual mode, if both DMAENx bits are set, two DMA requests are generated. If only one DMA request is needed, user should set only the corresponding DMAENx bit. In this way, the application can manage both DAC channels in dual mode by using one DMA request and a unique DMA channel.

For code example refer to the Appendix section A.8.12: DMA initialization code example .

DMA underrun

The DAC DMA request is not queued so that if a second external trigger arrives before the acknowledgment for the first external trigger is received (first request), then no new request is issued and the DMA channelx underrun flag DMAUDRx in the DAC_SR register is set, reporting the error condition. DMA data transfers are then disabled and no further DMA request is treated. The DAC channelx continues to convert old data.

The software should clear the DMAUDRx flag by writing “1”, clear the DMAEN bit of the used DMA stream and re-initialize both DMA and DAC channelx to restart the transfer correctly. The software should modify the DAC trigger conversion frequency or lighten the DMA workload to avoid a new DMA. Finally, the DAC conversion can be resumed by enabling both DMA data transfer and conversion trigger.

For each DAC channel, an interrupt is also generated if the corresponding DMAUDRIEx bit in the DAC_CR register is enabled.

14.10 DAC registers

Refer to Section 1.2 on page 42 for a list of abbreviations used in register descriptions.

The peripheral registers have to be accessed by words (32-bit).

14.10.1 DAC control register (DAC_CR)

Address offset: 0x00

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.DMAU
DRIE2
DMA
EN2
MAMP2[3:0]WAVE2[1:0]TSEL2[2:0]TEN2BOFF2EN2
rwrwrwrwrwrwrwrwrwrwrwrwrwrw

1514131211109876543210
Res.Res.DMAU
DRIE1
DMA
EN1
MAMP1[3:0]WAVE1[1:0]TSEL1[2:0]TEN1BOFF1EN1
rwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:30 Reserved, must be kept at reset value.

Bit 29 DMAUDRIE2 : DAC channel2 DMA underrun interrupt enable

This bit is set and cleared by software.

0: DAC channel2 DMA underrun interrupt disabled

1: DAC channel2 DMA underrun interrupt enabled

Note: This bit is available in dual mode only. It is reserved in single mode.

Bit 28 DMAEN2 : DAC channel2 DMA enable

This bit is set and cleared by software.

0: DAC channel2 DMA mode disabled

1: DAC channel2 DMA mode enabled

Note: This bit is available in dual mode only. It is reserved in single mode.

Bits 27:24 MAMP2[3:0] : DAC channel2 mask/amplitude selector

These bits are written by software to select mask in wave generation mode or amplitude in triangle generation mode.

0000: Unmask bit0 of LFSR/ triangle amplitude equal to 1

0001: Unmask bits[1:0] of LFSR/ triangle amplitude equal to 3

0010: Unmask bits[2:0] of LFSR/ triangle amplitude equal to 7

0011: Unmask bits[3:0] of LFSR/ triangle amplitude equal to 15

0100: Unmask bits[4:0] of LFSR/ triangle amplitude equal to 31

0101: Unmask bits[5:0] of LFSR/ triangle amplitude equal to 63

0110: Unmask bits[6:0] of LFSR/ triangle amplitude equal to 127

0111: Unmask bits[7:0] of LFSR/ triangle amplitude equal to 255

1000: Unmask bits[8:0] of LFSR/ triangle amplitude equal to 511

1001: Unmask bits[9:0] of LFSR/ triangle amplitude equal to 1023

1010: Unmask bits[10:0] of LFSR/ triangle amplitude equal to 2047

≥1011: Unmask bits[11:0] of LFSR/ triangle amplitude equal to 4095

Note: These bits are available only in dual mode when wave generation is supported. Otherwise, they are reserved and must be kept at reset value.

Bits 23:22 WAVE2[1:0] : DAC channel2 noise/triangle wave generation enable

These bits are set/reset by software.

00: wave generation disabled

01: Noise wave generation enabled

1x: Triangle wave generation enabled

Note: Only used if bit TEN2 = 1 (DAC channel2 trigger enabled)

These bits are available only in dual mode when wave generation is supported.

Otherwise, they are reserved and must be kept at reset value.

Bits 21:19 TSEL2[2:0] : DAC channel2 trigger selection

These bits select the external event used to trigger DAC channel2

000: Timer 6 TRGO event

001: Timer 3 TRGO event

010: Timer 7 TRGO event

011: Timer 15 TRGO event

100: Timer 2 TRGO event

101: Reserved

110: EXTI line9

111: Software trigger

Note: Only used if bit TEN2 = 1 (DAC channel2 trigger enabled).

These bits are available in dual mode only. They are reserved in single mode.

Bit 18 TEN2 : DAC channel2 trigger enable

This bit is set and cleared by software to enable/disable DAC channel2 trigger

0: DAC channel2 trigger disabled and data written into the DAC_DHRx register are transferred one APB clock cycle later to the DAC_DOR2 register

1: DAC channel2 trigger enabled and data from the DAC_DHRx register are transferred three APB clock cycles later to the DAC_DOR2 register

Note: When software trigger is selected, the transfer from the DAC_DHRx register to the DAC_DOR2 register takes only one APB clock cycle.

Note: This bit is available in dual mode only. It is reserved in single mode.

Bit 17 BOFF2 : DAC channel2 output buffer disable

This bit is set and cleared by software to enable/disable DAC channel2 output buffer.

0: DAC channel2 output buffer enabled

1: DAC channel2 output buffer disabled

Note: This bit is available in dual mode only. It is reserved in single mode.

Bit 16 EN2 : DAC channel2 enable

This bit is set and cleared by software to enable/disable DAC channel2.

0: DAC channel2 disabled

1: DAC channel2 enabled

Note: This bit is available in dual mode only. It is reserved in single mode.

Bits 15:14 Reserved, must be kept at reset value.

Bit 13 DMAUDRIE1 : DAC channel1 DMA Underrun Interrupt enable

This bit is set and cleared by software.

0: DAC channel1 DMA Underrun Interrupt disabled

1: DAC channel1 DMA Underrun Interrupt enabled

Bit 12 DMAEN1 : DAC channel1 DMA enable

This bit is set and cleared by software.

0: DAC channel1 DMA mode disabled

1: DAC channel1 DMA mode enabled

Bits 11:8 MAMP1[3:0] : DAC channel1 mask/amplitude selector

These bits are written by software to select mask in wave generation mode or amplitude in triangle generation mode.

0000: Unmask bit0 of LFSR/ triangle amplitude equal to 1

0001: Unmask bits[1:0] of LFSR/ triangle amplitude equal to 3

0010: Unmask bits[2:0] of LFSR/ triangle amplitude equal to 7

0011: Unmask bits[3:0] of LFSR/ triangle amplitude equal to 15

0100: Unmask bits[4:0] of LFSR/ triangle amplitude equal to 31

0101: Unmask bits[5:0] of LFSR/ triangle amplitude equal to 63

0110: Unmask bits[6:0] of LFSR/ triangle amplitude equal to 127

0111: Unmask bits[7:0] of LFSR/ triangle amplitude equal to 255

1000: Unmask bits[8:0] of LFSR/ triangle amplitude equal to 511

1001: Unmask bits[9:0] of LFSR/ triangle amplitude equal to 1023

1010: Unmask bits[10:0] of LFSR/ triangle amplitude equal to 2047

≥ 1011: Unmask bits[11:0] of LFSR/ triangle amplitude equal to 4095

Bits 7:6 WAVE1[1:0] : DAC channel1 noise/triangle wave generation enable

These bits are set and cleared by software.

00: Wave generation disabled

01: Noise wave generation enabled

1x: Triangle wave generation enabled

Note: Only used if bit TEN1 = 1 (DAC channel1 trigger enabled).

Bits 5:3 TSEL1[2:0] : DAC channel1 trigger selection

These bits select the external event used to trigger DAC channel1.

000: Timer 6 TRGO event

001: Timer 3 TRGO event

010: Timer 7 TRGO event

011: Timer 15 TRGO event

100: Timer 2 TRGO event

101: Reserved

110: EXTI line9

111: Software trigger

Note: Only used if bit TEN1 = 1 (DAC channel1 trigger enabled).

Bit 2 TEN1: DAC channel1 trigger enable

This bit is set and cleared by software to enable/disable DAC channel1 trigger.

0: DAC channel1 trigger disabled and data written into the DAC_DHRx register are transferred one APB clock cycle later to the DAC_DOR1 register

1: DAC channel1 trigger enabled and data from the DAC_DHRx register are transferred three APB clock cycles later to the DAC_DOR1 register

Note: When software trigger is selected, the transfer from the DAC_DHRx register to the DAC_DOR1 register takes only one APB clock cycle.

Bit 1 BOFF1: DAC channel1 output buffer disable

This bit is set and cleared by software to enable/disable DAC channel1 output buffer.

0: DAC channel1 output buffer enabled

1: DAC channel1 output buffer disabled

Bit 0 EN1: DAC channel1 enable

This bit is set and cleared by software to enable/disable DAC channel1.

0: DAC channel1 disabled

1: DAC channel1 enabled

14.10.2 DAC software trigger register (DAC_SWTRIGR)

Address offset: 0x04

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.SWTRIG2SWTRIG1
ww

Bits 31:2 Reserved, must be kept at reset value.

Bit 1 SWTRIG2 : DAC channel2 software trigger

This bit is set and cleared by software to enable/disable the software trigger.

0: Software trigger disabled

1: Software trigger enabled

Note: This bit is cleared by hardware (one APB clock cycle later) once the DAC_DHR2 register value has been loaded into the DAC_DOR2 register.

This bit is available in dual mode only. It is reserved in single mode.

Bit 0 SWTRIG1 : DAC channel1 software trigger

This bit is set and cleared by software to enable/disable the software trigger.

0: Software trigger disabled

1: Software trigger enabled

Note: This bit is cleared by hardware (one APB clock cycle later) once the DAC_DHR1 register value has been loaded into the DAC_DOR1 register.

14.10.3 DAC channel1 12-bit right-aligned data holding register (DAC_DHR12R1)

Address offset: 0x08

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.DACC1DHR[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:12 Reserved, must be kept at reset value.

Bits 11:0 DACC1DHR[11:0] : DAC channel1 12-bit right-aligned data

These bits are written by software which specifies 12-bit data for DAC channel1.

14.10.4 DAC channel1 12-bit left-aligned data holding register (DAC_DHR12L1)

Address offset: 0x0C

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
DACC1DHR[11:0]vRes.Res.Res.
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:4 DACC1DHR[11:0] : DAC channel1 12-bit left-aligned data

These bits are written by software which specifies 12-bit data for DAC channel1.

Bits 3:0 Reserved, must be kept at reset value.

14.10.5 DAC channel1 8-bit right-aligned data holding register (DAC_DHR8R1)

Address offset: 0x10

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.DACC1DHR[7:0]
rwrwrwrwrwrwrwrw

Bits 31:8 Reserved, must be kept at reset value.

Bits 7:0 DACC1DHR[7:0] : DAC channel1 8-bit right-aligned data

These bits are written by software which specifies 8-bit data for DAC channel1.

14.10.6 DAC channel2 12-bit right-aligned data holding register (DAC_DHR12R2)

Address offset: 0x14

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.DACC2DHR[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:12 Reserved, must be kept at reset value.

Bits 11:0 DACC2DHR[11:0] : DAC channel2 12-bit right-aligned data

These bits are written by software which specifies 12-bit data for DAC channel2.

14.10.7 DAC channel2 12-bit left-aligned data holding register (DAC_DHR12L2)

Address offset: 0x18

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
DACC2DHR[11:0]Res.Res.Res.Res.
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:4 DACC2DHR[11:0] : DAC channel2 12-bit left-aligned data

These bits are written by software which specify 12-bit data for DAC channel2.

Bits 3:0 Reserved, must be kept at reset value.

14.10.8 DAC channel2 8-bit right-aligned data holding register (DAC_DHR8R2)

Address offset: 0x1C

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.DACC2DHR[7:0]
rwrwrwrwrwrwrwrw

Bits 31:8 Reserved, must be kept at reset value.

Bits 7:0 DACC2DHR[7:0] : DAC channel2 8-bit right-aligned data

These bits are written by software which specifies 8-bit data for DAC channel2.

14.10.9 Dual DAC 12-bit right-aligned data holding register (DAC_DHR12RD)

Address offset: 0x20

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.DACC2DHR[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.DACC1DHR[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:28 Reserved, must be kept at reset value.

Bits 27:16 DACC2DHR[11:0] : DAC channel2 12-bit right-aligned data

These bits are written by software which specifies 12-bit data for DAC channel2.

Bits 15:12 Reserved, must be kept at reset value.

Bits 11:0 DACC1DHR[11:0] : DAC channel1 12-bit right-aligned data

These bits are written by software which specifies 12-bit data for DAC channel1.

14.10.10 Dual DAC 12-bit left-aligned data holding register (DAC_DHR12LD)

Address offset: 0x24

Reset value: 0x0000 0000

31302928272625242322212019181716
DACC2DHR[11:0]Res.Res.Res.Res.
rwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
DACC1DHR[11:0]Res.Res.Res.Res.
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:20 DACC2DHR[11:0] : DAC channel2 12-bit left-aligned data

These bits are written by software which specifies 12-bit data for DAC channel2.

Bits 19:16 Reserved, must be kept at reset value.

Bits 15:4 DACC1DHR[11:0] : DAC channel1 12-bit left-aligned data

These bits are written by software which specifies 12-bit data for DAC channel1.

Bits 3:0 Reserved, must be kept at reset value.

14.10.11 Dual DAC 8-bit right-aligned data holding register (DAC_DHR8RD)

Address offset: 0x28

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
DACC2DHR[7:0]DACC1DHR[7:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:8 DACC2DHR[7:0] : DAC channel2 8-bit right-aligned data

These bits are written by software which specifies 8-bit data for DAC channel2.

Bits 7:0 DACC1DHR[7:0] : DAC channel1 8-bit right-aligned data

These bits are written by software which specifies 8-bit data for DAC channel1.

14.10.12 DAC channel1 data output register (DAC_DOR1)

Address offset: 0x2C

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.DACC1DOR[11:0]
rrrrrrrrrrrr

Bits 31:12 Reserved, must be kept at reset value.

Bits 11:0 DACC1DOR[11:0] : DAC channel1 data output

These bits are read-only, they contain data output for DAC channel1.

14.10.13 DAC channel2 data output register (DAC_DOR2)

Address offset: 0x30

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.DACC2DOR[11:0]
rrrrrrrrrrrr

Bits 31:12 Reserved, must be kept at reset value.

Bits 11:0 DACC2DOR[11:0] : DAC channel2 data output

These bits are read-only, they contain data output for DAC channel2.

14.10.14 DAC status register (DAC_SR)

Address offset: 0x34

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.DMAUDR2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
rc_w1

1514131211109876543210
Res.Res.DMAUDR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
rc_w1

Bits 31:30 Reserved, must be kept at reset value.

Bit 29 DMAUDR2 : DAC channel2 DMA underrun flag. Available on STM32F07x and STM32F09x devices.

This bit is set by hardware and cleared by software (by writing it to 1).

0: No DMA underrun error condition occurred for DAC channel2

1: DMA underrun error condition occurred for DAC channel2 (the currently selected trigger is driving DAC channel2 conversion at a frequency higher than the DMA service capability rate)

Note: This bit is available in dual mode only. It is reserved in single mode.

Bits 28:14 Reserved, must be kept at reset value.

Bit 13 DMAUDR1 : DAC channel1 DMA underrun flag

This bit is set by hardware and cleared by software (by writing it to 1).

0: No DMA underrun error condition occurred for DAC channel1

1: DMA underrun error condition occurred for DAC channel1 (the currently selected trigger is driving DAC channel1 conversion at a frequency higher than the DMA service capability rate)

Bits 12:0 Reserved, must be kept at reset value.

14.10.15 DAC register map

Table 53 summarizes the DAC registers.

Table 53. DAC register map and reset values

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x00DAC_CRRes.Res.DMAUDRIE2DMAEN2Res.MAMP2[3:0]WAVE2[1:0]TSEL2[2:0]Res.TEN2BOFF2EN2Res.Res.DMAUDRIE1DMAEN1Res.MAMP1[3:0]WAVE1[1:0]TSEL1[2:0]Res.TEN1BOFF1EN1
Reset value0000000000000000000000000000
0x04DAC_SWTRIGRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.SWTRIG2SWTRIG1
Reset value00
0x08DAC_DHR12R1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC1DHR[11:0]
Reset value000000000000
0x0CDAC_DHR12L1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC1DHR[11:0]Res.Res.Res.Res.
Reset value000000000000
0x10DAC_DHR8R1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC1DHR[7:0]
Reset value00000000
0x14DAC_DHR12R2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC2DHR[11:0]
Reset value000000000000
0x18DAC_DHR12L2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC2DHR[11:0]Res.Res.Res.Res.
Reset value000000000000
0x1CDAC_DHR8R2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC2DHR[7:0]
Reset value00000000
0x20DAC_DHR12RDRes.Res.Res.Res.DACC2DHR[11:0]Res.Res.Res.Res.DACC1DHR[11:0]
Reset value000000000000000000000000
0x24DAC_DHR12LDDACC2DHR[11:0]Res.Res.Res.Res.DACC1DHR[11:0]Res.Res.Res.Res.
Reset value000000000000000000000000
0x28DAC_DHR8RDRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC2DHR[7:0]DACC1DHR[7:0]
Reset value0000000000000000
0x2CDAC_DOR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC1DOR[11:0]
Reset value000000000000
0x30DAC_DOR2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DACC2DOR[11:0]
Reset value000000000000

Table 53. DAC register map (continued) and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x34DAC_SRRes.Res.DMAUDR2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DMAUDR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
Reset value00

Refer to Section 2.2 on page 46 for the register boundary addresses.