aboutsummaryrefslogtreecommitdiffstats
path: root/notes/dac.txt
blob: d027402d7b829d9fcdf18a2c18db5ce183bac198 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

DAC notes (for maple native and other "high density" STM32 devices)
-------------------------------------------------------------------------------
There is an ST application note for the DACs; it provides a lot of context but
doesn't help setup the peripheral very much.

For the first code iteration we'll just use 12-bit right-aligned single writes, 
so use DAC_DHR12Rx

Once data is loaded into the digital registers, there are a number of possible
triggers to start conversion to analog output: external interrupts, software
control, and timer events. We'll just use software triggering for now.

There is (obviously) DMA support for DAC output.

There are noise (via LFSR) output and triangle wave output features
with variable amplitude.

There are eleven modes to trigger output to both channels at the same
time, as follows:

    - Independent trigger:
                  (1) No wave generation
                  (2) Same LFSR
                  (3) Different LFSR
                  (4) Same triangle
                  (5) Different triangle
    - (6) Simultaneous software start
    - Simultaneous trigger:
                   (7) Without wave generation
                   (8) Same LFSR
                   (9) Different LFSR
                   (10) Same triangle
                   (11) Different triangle

Buffering will be enabled by default.

TODO
-------------------------------------------------------------------------------
- sine wave demo using Timer interrupts
- wirish implementation
- documentation
- higher performance modes?
- signal quality testing
- DMA output