Midnight Sun Firmware
Loading...
Searching...
No Matches
dac.h
1#pragma once
2
3/************************************************************************************************
4 * @file dac.h
5 *
6 * @brief DAC Library Header
7 *
8 * @date 2025-01-30
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14#include <stdint.h>
15
16/* Inter-component Headers */
17
18/* Intra-component Headers */
19#include "gpio.h"
20#include "status.h"
21
28/* Number of DAC channels on STM32L433 (DAC1 has 2 channels) */
29#define NUM_DAC_CHANNELS 2U
30
31/* DAC resolution - 12-bit */
32#define DAC_MAX_VALUE 4095U
33
34/* Reference voltage in mV (typically 3.3V) */
35#define DAC_VREF_MV 3300U
36
40typedef enum {
44
51
61
70StatusCode dac_set_raw(DacChannel channel, uint16_t value);
71
80StatusCode dac_set_voltage(DacChannel channel, uint16_t voltage_mv);
81
90StatusCode dac_get_raw(DacChannel channel, uint16_t *value);
91
100StatusCode dac_get_voltage(DacChannel channel, uint16_t *voltage_mv);
101
110
StatusCode dac_enable_channel(DacChannel channel)
Enable a specific DAC channel.
Definition: dac.c:93
StatusCode dac_disable_channel(DacChannel channel)
Disable a specific DAC channel.
Definition: dac.c:209
StatusCode dac_set_raw(DacChannel channel, uint16_t value)
Set DAC output using raw 12-bit value.
Definition: dac.c:126
StatusCode dac_set_voltage(DacChannel channel, uint16_t voltage_mv)
Set DAC output using millivolt value.
Definition: dac.c:159
StatusCode dac_get_voltage(DacChannel channel, uint16_t *voltage_mv)
Read back the current DAC setting (voltage in mV)
Definition: dac.c:196
StatusCode dac_init(void)
Initialize the DAC peripheral.
Definition: dac.c:61
StatusCode dac_get_raw(DacChannel channel, uint16_t *value)
Read back the current DAC setting (raw value)
Definition: dac.c:170
DacChannel
DAC channel identifiers.
Definition: dac.h:40
@ DAC_CHANNEL2
Definition: dac.h:42
@ DAC_CHANNEL1
Definition: dac.h:41
StatusCode
StatusCodes for various errors.
Definition: status.h:27