no-OS
Loading...
Searching...
No Matches
ad5592r-base.h
Go to the documentation of this file.
1/***************************************************************************/
34#ifndef AD5592R_BASE_H_
35#define AD5592R_BASE_H_
36
37#include "stdint.h"
38#include "no_os_delay.h"
39#include "no_os_spi.h"
40#include "no_os_i2c.h"
41#include "no_os_gpio.h"
42#include "no_os_util.h"
43#include "no_os_alloc.h"
44#include <stdbool.h>
45
46#define CH_MODE_UNUSED 0
47#define CH_MODE_ADC 1
48#define CH_MODE_DAC 2
49#define CH_MODE_DAC_AND_ADC 3
50#define CH_MODE_GPI 4
51#define CH_MODE_GPO 5
52
53#define CH_OFFSTATE_PULLDOWN 0
54#define CH_OFFSTATE_OUT_LOW 1
55#define CH_OFFSTATE_OUT_HIGH 2
56#define CH_OFFSTATE_OUT_TRISTATE 3
57
75
76#define AD5592R_REG_PD_PD_ALL NO_OS_BIT(10)
77#define AD5592R_REG_PD_EN_REF NO_OS_BIT(9)
78
79#define AD5592R_REG_CTRL_ADC_PC_BUFF NO_OS_BIT(9)
80#define AD5592R_REG_CTRL_ADC_BUFF_EN NO_OS_BIT(8)
81#define AD5592R_REG_CTRL_CONFIG_LOCK NO_OS_BIT(7)
82#define AD5592R_REG_CTRL_W_ALL_DACS NO_OS_BIT(6)
83#define AD5592R_REG_CTRL_ADC_RANGE NO_OS_BIT(5)
84#define AD5592R_REG_CTRL_DAC_RANGE NO_OS_BIT(4)
85
86#define AD5592R_REG_ADC_SEQ_REP NO_OS_BIT(9)
87#define AD5592R_REG_ADC_SEQ_TEMP_READBACK NO_OS_BIT(8)
88#define AD5592R_REG_ADC_SEQ_CODE_MSK(x) ((x) & 0x0FFF)
89
90#define AD5592R_REG_GPIO_OUT_EN_ADC_NOT_BUSY NO_OS_BIT(8)
91
92#define AD5592R_REG_LDAC_IMMEDIATE_OUT 0x00
93#define AD5592R_REG_LDAC_INPUT_REG_ONLY 0x01
94#define AD5592R_REG_LDAC_INPUT_REG_OUT 0x02
95
96#define INTERNAL_VREF_VOLTAGE 2.5
97#define AD5592R_MIN_VREF_MV 1000
98#define AD5592R_MAX_VREF_MV 5500
99#define AD5592R_TEMPERATURE_CHANNEL 8
100
101#define NUM_OF_CHANNELS 8
102
103
104struct ad5592r_dev;
105
107 int32_t (*write_dac)(struct ad5592r_dev *dev, uint8_t chan,
108 uint16_t value);
109 int32_t (*read_adc)(struct ad5592r_dev *dev, uint8_t chan,
110 uint16_t *value);
111 int32_t(*multi_read_adc)(struct ad5592r_dev *dev,
112 uint16_t chans, uint16_t *value);
113 int32_t (*reg_write)(struct ad5592r_dev *dev, uint8_t reg,
114 uint16_t value);
115 int32_t (*reg_read)(struct ad5592r_dev *dev, uint8_t reg,
116 uint16_t *value);
117 int32_t (*gpio_read)(struct ad5592r_dev *dev, uint8_t *value);
118};
119
124
138
140 const struct ad5592r_rw_ops *ops;
144 uint16_t spi_msg;
146 uint16_t cached_dac[8];
147 uint8_t cached_gpo[8];
149 uint8_t channel_modes[8];
151 uint8_t gpio_out;
152 uint8_t gpio_in;
153 uint8_t gpio_val;
154 uint8_t ldac_mode;
158 uint32_t external_vref; /* valid only if int_ref = true */
159 uint8_t power_down[8];
161};
162
163int32_t ad5592r_base_reg_write(struct ad5592r_dev *dev, uint8_t reg,
164 uint16_t value);
165int32_t ad5592r_base_reg_read(struct ad5592r_dev *dev, uint8_t reg,
166 uint16_t *value);
167int32_t ad5592r_gpio_get(struct ad5592r_dev *dev, uint8_t offset);
168int32_t ad5592r_gpio_set(struct ad5592r_dev *dev, uint8_t offset,
169 int32_t value);
170int32_t ad5592r_gpio_direction_input(struct ad5592r_dev *dev, uint8_t offset);
172 uint8_t offset, int32_t value);
173int32_t ad5592r_software_reset(struct ad5592r_dev *dev);
174int32_t ad5592r_set_channel_modes(struct ad5592r_dev *dev);
175int32_t ad5592r_reset_channel_modes(struct ad5592r_dev *dev);
176int32_t ad5592r_set_adc_range(struct ad5592r_dev *dev,
177 enum ad559xr_range adc_range);
178int32_t ad5592r_set_dac_range(struct ad5592r_dev *dev,
179 enum ad559xr_range dac_range);
180int32_t ad5592r_power_down(struct ad5592r_dev *dev, uint8_t chan, bool enable);
181int32_t ad5592r_set_int_ref(struct ad5592r_dev *dev, bool enable);
182int32_t ad5592r_set_ext_ref(struct ad5592r_dev *dev, uint32_t vref_mv);
183int32_t ad5592r_get_ref(struct ad5592r_dev *dev, uint32_t *vref_mv);
184int32_t ad5592r_set_adc_buffer(struct ad5592r_dev *dev, bool enable);
185int32_t ad5592r_base_reg_update(struct ad5592r_dev* dev, uint16_t reg_addr,
186 uint16_t data, uint16_t mask);
187int32_t ad5592r_set_repetition(struct ad5592r_dev *dev, bool repeat);
188
189#endif /* AD5592R_BASE_H_ */
int32_t ad5592r_set_adc_range(struct ad5592r_dev *dev, enum ad559xr_range adc_range)
Definition ad5592r-base.c:365
int32_t ad5592r_set_int_ref(struct ad5592r_dev *dev, bool enable)
Definition ad5592r-base.c:449
int32_t ad5592r_gpio_get(struct ad5592r_dev *dev, uint8_t offset)
Definition ad5592r-base.c:72
ad559xr_range
Definition ad5592r-base.h:120
@ ZERO_TO_VREF
Definition ad5592r-base.h:121
@ ZERO_TO_2VREF
Definition ad5592r-base.h:122
int32_t ad5592r_set_channel_modes(struct ad5592r_dev *dev)
Definition ad5592r-base.c:204
int32_t ad5592r_set_repetition(struct ad5592r_dev *dev, bool repeat)
Definition ad5592r-base.c:553
int32_t ad5592r_gpio_set(struct ad5592r_dev *dev, uint8_t offset, int32_t value)
Definition ad5592r-base.c:98
int32_t ad5592r_base_reg_read(struct ad5592r_dev *dev, uint8_t reg, uint16_t *value)
Definition ad5592r-base.c:59
int32_t ad5592r_power_down(struct ad5592r_dev *dev, uint8_t chan, bool enable)
Definition ad5592r-base.c:422
int32_t ad5592r_base_reg_write(struct ad5592r_dev *dev, uint8_t reg, uint16_t value)
Definition ad5592r-base.c:45
int32_t ad5592r_get_ref(struct ad5592r_dev *dev, uint32_t *vref_mv)
Definition ad5592r-base.c:505
int32_t ad5592r_set_dac_range(struct ad5592r_dev *dev, enum ad559xr_range dac_range)
Definition ad5592r-base.c:393
int32_t ad5592r_software_reset(struct ad5592r_dev *dev)
Definition ad5592r-base.c:183
int32_t ad5592r_base_reg_update(struct ad5592r_dev *dev, uint16_t reg_addr, uint16_t data, uint16_t mask)
Definition ad5592r-base.c:334
int32_t ad5592r_reset_channel_modes(struct ad5592r_dev *dev)
Definition ad5592r-base.c:312
int32_t ad5592r_gpio_direction_output(struct ad5592r_dev *dev, uint8_t offset, int32_t value)
Definition ad5592r-base.c:146
int32_t ad5592r_set_adc_buffer(struct ad5592r_dev *dev, bool enable)
Definition ad5592r-base.c:527
int32_t ad5592r_gpio_direction_input(struct ad5592r_dev *dev, uint8_t offset)
Definition ad5592r-base.c:119
int32_t ad5592r_set_ext_ref(struct ad5592r_dev *dev, uint32_t vref_mv)
Definition ad5592r-base.c:479
ad5592r_registers
Definition ad5592r-base.h:58
@ AD5592R_REG_RESET
Definition ad5592r-base.h:73
@ AD5592R_REG_TRISTATE
Definition ad5592r-base.h:72
@ AD5592R_REG_OPEN_DRAIN
Definition ad5592r-base.h:71
@ AD5592R_REG_GPIO_SET
Definition ad5592r-base.h:68
@ AD5592R_REG_PD
Definition ad5592r-base.h:70
@ AD5592R_REG_CTRL
Definition ad5592r-base.h:62
@ AD5592R_REG_GPIO_IN_EN
Definition ad5592r-base.h:69
@ AD5592R_REG_LDAC
Definition ad5592r-base.h:66
@ AD5592R_REG_GPIO_OUT_EN
Definition ad5592r-base.h:67
@ AD5592R_REG_ADC_EN
Definition ad5592r-base.h:63
@ AD5592R_REG_ADC_SEQ
Definition ad5592r-base.h:61
@ AD5592R_REG_DAC_READBACK
Definition ad5592r-base.h:60
@ AD5592R_REG_DAC_EN
Definition ad5592r-base.h:64
@ AD5592R_REG_NOOP
Definition ad5592r-base.h:59
@ AD5592R_REG_PULLDOWN
Definition ad5592r-base.h:65
Header file of Delay functions.
Header file of GPIO Interface.
Header file of I2C Interface.
Header file of SPI Interface.
Header file of utility functions.
Definition ad5592r-base.h:139
uint16_t cached_dac[8]
Definition ad5592r-base.h:146
uint8_t channel_modes[8]
Definition ad5592r-base.h:149
const struct ad5592r_rw_ops * ops
Definition ad5592r-base.h:140
uint8_t power_down[8]
Definition ad5592r-base.h:159
bool adc_buf
Definition ad5592r-base.h:160
uint8_t gpio_val
Definition ad5592r-base.h:153
uint8_t channel_offstate[8]
Definition ad5592r-base.h:150
bool int_ref
Definition ad5592r-base.h:157
uint16_t spi_msg
Definition ad5592r-base.h:144
enum ad559xr_range dac_range
Definition ad5592r-base.h:156
struct no_os_spi_desc * spi
Definition ad5592r-base.h:142
uint8_t cached_gpo[8]
Definition ad5592r-base.h:147
uint16_t cached_gp_ctrl
Definition ad5592r-base.h:148
uint8_t gpio_out
Definition ad5592r-base.h:151
uint8_t gpio_in
Definition ad5592r-base.h:152
uint8_t num_channels
Definition ad5592r-base.h:145
struct no_os_gpio_desc * ss
Definition ad5592r-base.h:143
uint8_t ldac_mode
Definition ad5592r-base.h:154
uint32_t external_vref
Definition ad5592r-base.h:158
enum ad559xr_range adc_range
Definition ad5592r-base.h:155
struct no_os_i2c_desc * i2c
Definition ad5592r-base.h:141
Definition ad5592r-base.h:125
uint32_t external_vref
Definition ad5592r-base.h:127
struct no_os_i2c_init_param * i2c_init
Definition ad5592r-base.h:129
bool int_ref
Definition ad5592r-base.h:126
uint8_t channel_offstate[8]
Definition ad5592r-base.h:132
uint8_t power_down[8]
Definition ad5592r-base.h:136
bool adc_buf
Definition ad5592r-base.h:135
enum ad559xr_range dac_range
Definition ad5592r-base.h:134
uint8_t channel_modes[8]
Definition ad5592r-base.h:131
struct no_os_gpio_init_param * ss_init
Definition ad5592r-base.h:130
enum ad559xr_range adc_range
Definition ad5592r-base.h:133
struct no_os_spi_init_param * spi_init
Definition ad5592r-base.h:128
Definition ad5592r-base.h:106
int32_t(* multi_read_adc)(struct ad5592r_dev *dev, uint16_t chans, uint16_t *value)
Definition ad5592r-base.h:111
int32_t(* reg_read)(struct ad5592r_dev *dev, uint8_t reg, uint16_t *value)
Definition ad5592r-base.h:115
int32_t(* write_dac)(struct ad5592r_dev *dev, uint8_t chan, uint16_t value)
Definition ad5592r-base.h:107
int32_t(* read_adc)(struct ad5592r_dev *dev, uint8_t chan, uint16_t *value)
Definition ad5592r-base.h:109
int32_t(* reg_write)(struct ad5592r_dev *dev, uint8_t reg, uint16_t value)
Definition ad5592r-base.h:113
int32_t(* gpio_read)(struct ad5592r_dev *dev, uint8_t *value)
Definition ad5592r-base.h:117
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128