Files
PortableFuncGen/firmware/shared_libs/drivers/ltc2631/ltc2631.h
2023-03-26 00:35:58 +01:00

34 lines
1.2 KiB
C

#pragma once
// C3 C2 C1 C0
#define LTC_WRITE 0b00000000 // 0 0 0 0 Write to Input Register
#define LTC_UPDATE 0b00010000 // 0 0 0 1 Update (Power Up) DAC Register
#define LTC_WRTIEUPDATE 0b00110000 // 0 0 1 1 Write to and Update (Power Up) DAC Register
#define LTC_SLEEP 0b01000000 // 0 1 0 0 Power Down
#define LTC_INTERNALREF 0b01100000 // 0 1 1 0 Select Internal Reference
#define LTC_EXTERNALREF 0b01110000 // 0 1 1 1 Select External Reference
#define LTC_REF_2V5 2.5
#define LTC_REF_4V096 4.096
typedef enum
{
LTC2631_8BIT = 8,
LTC2631_10BIT = 10,
LTC2631_12BIT = 12
} ltc2631_res_t;
typedef struct
{
I2C_HandleTypeDef *hi2c;
uint8_t addr;
ltc2631_res_t resolution;
float ref_voltage_f;
uint32_t ref_voltage_u;
} ltc2631_handle_t;
void ltc2631_init(ltc2631_handle_t *hdac, I2C_HandleTypeDef *hi2c, uint8_t addr, ltc2631_res_t res, float ref);
void ltc2631_setOutputVoltage_f(ltc2631_handle_t *hdac, float volt);
void ltc2631_setOutputVoltage_u(ltc2631_handle_t *hdac, uint32_t volt_x1000);
void ltc2631_setOutputValue(ltc2631_handle_t *hdac, uint16_t value);
void ltc2631_sleep(ltc2631_handle_t *hdac);