stm32:dac: Fix waveform generation apis

These were broken earlier, with no sane way of passing in correctly shifted
values, and didn't match examples.

Noticed while merging: https://github.com/libopencm3/libopencm3/pull/1281
This commit is contained in:
Karl Palsson
2021-01-26 22:31:06 +00:00
parent 8295d248e0
commit 0f1f1ebd1a
2 changed files with 44 additions and 38 deletions

View File

@@ -103,9 +103,11 @@ specific memorymap.h header before including this header file.*/
/** MAMP2[3:0]: DAC channel2 mask/amplitude selector field position */
#define DAC_CR_MAMP2_SHIFT 24
/** WAVE2[1:0]: DAC channel2 noise/triangle wave generation enable */
/** Wave generation mode mask size */
#define DAC_CR_WAVEx_MASK 0x3
/** WAVE2[1:0]: DAC channel2 wave generation mode*/
#define DAC_CR_WAVE2_SHIFT 22
#define DAC_CR_WAVE2_MASK 0x3
/** EN2: DAC channel2 enable */
#define DAC_CR_EN2 (1 << 16)
@@ -123,9 +125,8 @@ specific memorymap.h header before including this header file.*/
/** MAMP Mask/Amplitude selector field size */
#define DAC_CR_MAMPx_MASK 0xf
/** WAVEn[1:0]: DAC channel1 noise/triangle wave generation enable */
/** WAVE1[1:0]: DAC channel1 wave generation mode */
#define DAC_CR_WAVE1_SHIFT 6
#define DAC_CR_WAVE1_MASK 0x3
/** EN1: DAC channel1 enable */
#define DAC_CR_EN1 (1 << 0)
@@ -238,7 +239,9 @@ enum dac_align {
DAC_ALIGN_LEFT12,
};
/** DAC waveform generation options. */
/** DAC waveform generation options.
* Not all wave shapes are available on all parts.
*/
enum dac_wave {
DAC_WAVE_DISABLE = 0,
DAC_WAVE_NOISE = 1,
@@ -257,7 +260,7 @@ void dac_dma_disable(uint32_t dac, int channel);
void dac_trigger_enable(uint32_t dac, int channel);
void dac_trigger_disable(uint32_t dac, int channel);
void dac_set_trigger_source(uint32_t dac, uint32_t source);
void dac_set_waveform_generation(uint32_t dac, enum dac_wave wave);
void dac_set_waveform_generation(uint32_t dac, int channel, enum dac_wave wave);
void dac_disable_waveform_generation(uint32_t dac, int channel);
void dac_set_waveform_characteristics(uint32_t dac, int channel, int mamp);
void dac_load_data_buffer_single(uint32_t dac, uint16_t data,