parent
6676678075
commit
7cff1e27b7
@ -0,0 +1,93 @@ |
|||||||
|
# DAC - analog output |
||||||
|
|
||||||
|
The DAC unit has two analog outputs and can either output a DC level, or one of the pre-defined waveforms. Those waveforms are generated using a DDS principle, the numerical equivalent of a PLL. |
||||||
|
|
||||||
|
- DC |
||||||
|
- SINE |
||||||
|
- TRIANGLE |
||||||
|
- SAWTOOTH UP |
||||||
|
- SAWTOOTH DOWN |
||||||
|
- RECTANGLE |
||||||
|
|
||||||
|
The DDS output speed is limited by the processor speed; properly shaped waveforms can |
||||||
|
be generated up to tens of kHz, obviously a better resolution is achieved with slower waveforms. |
||||||
|
|
||||||
|
DDS provides a very precise frequency adjustment at the expense of jitter. Faster frequencies tend to became more "pixelated" as there are fewer counter steps per period. |
||||||
|
|
||||||
|
The ADC unit further supports dithering using a noise generator and a sawtooth wave, |
||||||
|
provided by the STM32's hardware. Those are used e.g. to increase ADC resolution by introducing artificial noise through a large resistor. |
||||||
|
|
||||||
|
## Commands |
||||||
|
|
||||||
|
### WAVE_DC (0) |
||||||
|
Set a DC level, disable DDS for the channel |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
- u16 - level 0-4095 |
||||||
|
|
||||||
|
### WAVE_SINE (1) |
||||||
|
Start a DDS sine waveform |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
|
||||||
|
### WAVE_TRIANGLE (2) |
||||||
|
Start a symmetrical triangle waveform |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
|
||||||
|
### WAVE_SAWTOOTH_UP (3) |
||||||
|
Start a rising sawtooth |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
|
||||||
|
### WAVE_SAWTOOTH_DOWN (4) |
||||||
|
Start a falling sawtooth |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
|
||||||
|
### WAVE_RECTANGLE (5) |
||||||
|
Start a rectangle waveform (pulse train) |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
- u16 - ontime in DDS table length (presently 0-8191) |
||||||
|
- u16 - high level 0-4095 |
||||||
|
- u16 - low level 0-4095 |
||||||
|
|
||||||
|
### SYNC (10) |
||||||
|
Synchronize the two channels (set phase = 0) |
||||||
|
|
||||||
|
### SET_FREQUENCY (20) |
||||||
|
Set the frequency |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
- float32 - frequency (Hz) |
||||||
|
|
||||||
|
### SET_PHASE (21) |
||||||
|
Set a channel's phase, relative to the initial synchronized phase. |
||||||
|
It's recommended to set phase only of one channel, leaving the other at 0°. |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
- u16 - phase in DDS table length (presently 0-8191) |
||||||
|
|
||||||
|
### SET_DITHER (22) |
||||||
|
Set dithering mode and strength |
||||||
|
|
||||||
|
*Request:* |
||||||
|
- u8 - channels (1-first, 2-second, 3-both) |
||||||
|
- u8 - noise type (0-none, 1-white, 2-triangle) |
||||||
|
- u8 - number of noise bits |
||||||
|
|
||||||
|
Please note that setting high number of noise bits can lead to overflow/underflow |
||||||
|
(probably a STM32 bug). |
||||||
|
|
||||||
|
## Events |
||||||
|
|
||||||
|
*No events defined for this unit type.* |
Loading…
Reference in new issue