Digital-to-analog converter (DAC)
DMA underrun
The DAC DMA request is not queued so that if a second external trigger arrives before the
acknowledgement 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. 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 underrun. Finally, the DAC conversion could be
resumed by enabling both DMA data transfer and conversion trigger.
For each DAC channlex, an interrupt is also generated if its corresponding DMAUDRIEx bit
in the DAC_CR register is enabled.
17.3.8
Noise generation
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 APB1 clock cycles after
each trigger event, following a specific calculation algorithm.
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.
546/1693
Figure 133. DAC LFSR register calculation algorithm
XOR
12
X
11
10
9
8
12
NOR
DocID024597 Rev 3
6
4
X
X
7
6
5
4
3
2
RM0351
0
X
X
1
0
ai14713b
Need help?
Do you have a question about the STM32L4x6 and is the answer not in the manual?
Questions and answers