no-OS
ad5770r.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef AD5770R_H_
41 #define AD5770R_H_
42 
43 /******************************************************************************/
44 /***************************** Include Files **********************************/
45 /******************************************************************************/
46 #include <stdint.h>
47 #include <stdbool.h>
48 #include "no_os_spi.h"
49 #include "no_os_gpio.h"
50 
51 /******************************************************************************/
52 /********************** Macros and Constants Definitions **********************/
53 /******************************************************************************/
54 #ifndef BIT
55 #define NO_OS_BIT(x) (1UL << (x))
56 #endif
57 /*
58  * Create a contiguous bitmask starting at bit position @l and ending at
59  * position @h.
60  */
61 #ifdef GENMASK
62 #define NO_OS_GENMASK(h, l) \
63  (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (31 - (h))))
64 #endif
65 
66 /*SPI configuration registers*/
67 #define AD5770R_INTERFACE_CONFIG_A 0x00
68 #define AD5770R_INTERFACE_CONFIG_B 0x01
69 #define AD5770R_CHIP_TYPE 0x03
70 #define AD5770R_PRODUCT_ID_L 0x04
71 #define AD5770R_PRODUCT_ID_H 0x05
72 #define AD5770R_CHIP_GRADE 0x06
73 #define AD5770R_SCRATCH_PAD 0x0A
74 #define AD5770R_SPI_REVISION 0x0B
75 #define AD5770R_VENDOR_L 0x0C
76 #define AD5770R_VENDOR_H 0x0D
77 #define AD5770R_STREAM_MODE 0x0E
78 #define AD5770R_INTERFACE_CONFIG_C 0x10
79 #define AD5770R_INTERFACE_STATUS_A 0x11
80 
81 /*AD5770R configuration registers*/
82 #define AD5770R_CHANNEL_CONFIG 0x14
83 #define AD5770R_OUTPUT_RANGE_CH0 0x15
84 #define AD5770R_OUTPUT_RANGE_CH1 0x16
85 #define AD5770R_OUTPUT_RANGE_CH2 0x17
86 #define AD5770R_OUTPUT_RANGE_CH3 0x18
87 #define AD5770R_OUTPUT_RANGE_CH4 0x19
88 #define AD5770R_OUTPUT_RANGE_CH5 0x1A
89 #define AD5770R_REFERENCE 0x1B
90 #define AD5770R_ALARM_CONFIG 0x1C
91 #define AD5770R_OUTPUT_FILTER_CH0 0x1D
92 #define AD5770R_OUTPUT_FILTER_CH1 0x1E
93 #define AD5770R_OUTPUT_FILTER_CH2 0x1F
94 #define AD5770R_OUTPUT_FILTER_CH3 0x20
95 #define AD5770R_OUTPUT_FILTER_CH4 0x21
96 #define AD5770R_OUTPUT_FILTER_CH5 0x22
97 #define AD5770R_MONITOR_SETUP 0x23
98 #define AD5770R_STATUS 0x24
99 #define AD5770R_HW_LDAC 0x25
100 #define AD5770R_CH0_DAC_LSB 0x26
101 #define AD5770R_CH0_DAC_MSB 0x27
102 #define AD5770R_CH1_DAC_LSB 0x28
103 #define AD5770R_CH1_DAC_MSB 0x29
104 #define AD5770R_CH2_DAC_LSB 0x2A
105 #define AD5770R_CH2_DAC_MSB 0x2B
106 #define AD5770R_CH3_DAC_LSB 0x2C
107 #define AD5770R_CH3_DAC_MSB 0x2D
108 #define AD5770R_CH4_DAC_LSB 0x2E
109 #define AD5770R_CH4_DAC_MSB 0x2F
110 #define AD5770R_CH5_DAC_LSB 0x30
111 #define AD5770R_CH5_DAC_MSB 0x31
112 #define AD5770R_DAC_PAGE_MASK_LSB 0x32
113 #define AD5770R_DAC_PAGE_MASK_MSB 0x33
114 #define AD5770R_CH_SELECT 0x34
115 #define AD5770R_INPUT_PAGE_MASK_LSB 0x35
116 #define AD5770R_INPUT_PAGE_MASK_MSB 0x36
117 #define AD5770R_SW_LDAC 0x37
118 #define AD5770R_CH0_INPUT_LSB 0x38
119 #define AD5770R_CH0_INPUT_MSB 0x39
120 #define AD5770R_CH1_INPUT_LSB 0x3A
121 #define AD5770R_CH1_INPUT_MSB 0x3B
122 #define AD5770R_CH2_INPUT_LSB 0x3C
123 #define AD5770R_CH2_INPUT_MSB 0x3D
124 #define AD5770R_CH3_INPUT_LSB 0x3E
125 #define AD5770R_CH3_INPUT_MSB 0x3F
126 #define AD5770R_CH4_INPUT_LSB 0x40
127 #define AD5770R_CH4_INPUT_MSB 0x41
128 #define AD5770R_CH5_INPUT_LSB 0x42
129 #define AD5770R_CH5_INPUT_MSB 0x43
130 
131 /* AD5770R_INTERFACE_CONFIG_A */
132 #define AD5770R_INTERFACE_CONFIG_A_SW_RESET_MSK NO_OS_BIT(7) | NO_OS_BIT(0)
133 #define AD5770R_INTERFACE_CONFIG_A_SW_RESET(x) (((x) & 0x1) | 0x80)
134 #define AD5770R_INTERFACE_CONFIG_A_ADDR_ASCENSION_MSB_MSK NO_OS_BIT(5)
135 #define AD5770R_INTERFACE_CONFIG_A_ADDR_ASCENSION_MSB(x) (((x) & 0x1) << 5)
136 #define AD5770R_INTERFACE_CONFIG_A_SDO_ACTIVE_MSK NO_OS_BIT(4) | NO_OS_BIT(3)
137 
138 /* AD5770R_INTERFACE_CONFIG_B */
139 #define AD5770R_INTERFACE_CONFIG_B_SINGLE_INST_MSK NO_OS_BIT(7)
140 #define AD5770R_INTERFACE_CONFIG_B_SINGLE_INST(x) (((x) & 0x1) << 7)
141 #define AD5770R_INTERFACE_CONFIG_B_SHORT_INST_MSK NO_OS_BIT(3)
142 #define AD5770R_INTERFACE_CONFIG_B_SHORT_INST(x) (((x) & 0x1) << 3)
143 
144 /* AD5770R_INTERFACE_CONFIG_C */
145 #define AD5770R_INTERFACE_CONFIG_C_STRUCT_REGISTER_ACCESS_MSK NO_OS_BIT(5)
146 #define AD5770R_INTERFACE_CONFIG_C_STRUCT_REGISTER_ACCESS(x) (((x) & 0x1) << 5)
147 
148 /* AD5770R_CHANNEL_CONFIG */
149 #define AD5770R_CHANNEL_CONFIG_CH0_SINK_EN_MSK NO_OS_BIT(7)
150 #define AD5770R_CHANNEL_CONFIG_CH0_SINK_EN(x) (((x) & 0x1) << 7)
151 #define AD5770R_CHANNEL_CONFIG_CH5_SHUTDOWN_B_MSK NO_OS_BIT(5)
152 #define AD5770R_CHANNEL_CONFIG_CH5_SHUTDOWN_B(x) (((x) & 0x1) << 5)
153 #define AD5770R_CHANNEL_CONFIG_CH4_SHUTDOWN_B_MSK NO_OS_BIT(4)
154 #define AD5770R_CHANNEL_CONFIG_CH4_SHUTDOWN_B(x) (((x) & 0x1) << 4)
155 #define AD5770R_CHANNEL_CONFIG_CH3_SHUTDOWN_B_MSK NO_OS_BIT(3)
156 #define AD5770R_CHANNEL_CONFIG_CH3_SHUTDOWN_B(x) (((x) & 0x1) << 3)
157 #define AD5770R_CHANNEL_CONFIG_CH2_SHUTDOWN_B_MSK NO_OS_BIT(2)
158 #define AD5770R_CHANNEL_CONFIG_CH2_SHUTDOWN_B(x) (((x) & 0x1) << 2)
159 #define AD5770R_CHANNEL_CONFIG_CH1_SHUTDOWN_B_MSK NO_OS_BIT(1)
160 #define AD5770R_CHANNEL_CONFIG_CH1_SHUTDOWN_B(x) (((x) & 0x1) << 1)
161 #define AD5770R_CHANNEL_CONFIG_CH0_SHUTDOWN_B_MSK NO_OS_BIT(0)
162 #define AD5770R_CHANNEL_CONFIG_CH0_SHUTDOWN_B(x) (((x) & 0x1) << 0)
163 
164 /* AD5770R_OUTPUT_RANGE */
165 #define AD5770R_OUTPUT_RANGE_OUTPUT_SCALING_MSK NO_OS_GENMASK(7, 2)
166 #define AD5770R_OUTPUT_RANGE_OUTPUT_SCALING(x) (((x) & 0x3F) << 2)
167 #define AD5770R_OUTPUT_RANGE_MODE_MSK NO_OS_GENMASK(1, 0)
168 #define AD5770R_OUTPUT_RANGE_MODE(x) ((x) & 0x03)
169 
170 /* AD5770R_REFERENCE */
171 #define AD5770R_REFERENCE_RESISTOR_SEL_MSK NO_OS_BIT(2)
172 #define AD5770R_REFERENCE_RESISTOR_SEL(x) (((x) & 0x1) << 2)
173 #define AD5770R_REFERENCE_VOLTATE_SEL_MSK NO_OS_GENMASK(1, 0)
174 #define AD5770R_REFERENCE_VOLTATE_SEL(x) (((x) & 0x3) << 0)
175 
176 /* AD5770R_ALARM_CONFIG */
177 #define AD5770R_ALARM_CONFIG_BACKGROUND_CRC_ALARM_MASK(x) (((x) & 0x1) << 7)
178 #define AD5770R_ALARM_CONFIG_IREF_FAULT_ALARM_MASK(x) (((x) & 0x1) << 6)
179 #define AD5770R_ALARM_CONFIG_NEGATIVE_CHANNEL0_ALARM_MASK(x) (((x) & 0x1) << 5)
180 #define AD5770R_ALARM_CONFIG_OVER_TEMP_ALARM_MASK(x) (((x) & 0x1) << 4)
181 #define AD5770R_ALARM_CONFIG_TEMP_WARNING_ALARM_MASK(x) (((x) & 0x1) << 3)
182 #define AD5770R_ALARM_CONFIG_BACKGROUND_CRC_EN(x) (((x) & 0x1) << 2)
183 #define AD5770R_ALARM_CONFIG_THERMAL_SHUTDOWN_EN(x) (((x) & 0x1) << 1)
184 #define AD5770R_ALARM_CONFIG_OPEN_DRAIN_EN(x) (((x) & 0x1) << 0)
185 
186 /* AD5770R_OUTPUT_FILTER_CH */
187 #define AD5770R_OUTPUT_FILTER_CH_MSK NO_OS_GENMASK(3, 0)
188 #define AD5770R_OUTPUT_FILTER_CH(x) (((x) & 0xF) << 0)
189 
190 /* AD5770R_MONITOR_SETUP */
191 #define AD5770R_MONITOR_SETUP_MON_FUNCTION_MSK NO_OS_GENMASK(7, 6)
192 #define AD5770R_MONITOR_SETUP_MON_FUNCTION(x) (((x) & 0x3) << 6)
193 #define AD5770R_MONITOR_SETUP_MUX_BUFFER_MSK NO_OS_BIT(5)
194 #define AD5770R_MONITOR_SETUP_MUX_BUFFER(x) (((x) & 0x1) << 5)
195 #define AD5770R_MONITOR_SETUP_IB_EXT_EN_MSK NO_OS_BIT(4)
196 #define AD5770R_MONITOR_SETUP_IB_EXT_EN(x) (((x) & 0x1) << 4)
197 #define AD5770R_MONITOR_SETUP_MON_CH_MSK NO_OS_GENMASK(3, 0)
198 #define AD5770R_MONITOR_SETUP_MON_CH(x) (((x) & 0x7) << 0)
199 
200 /* AD5770R_STATUS */
201 #define AD5770R_STATUS_BACKGROUND_CRC_STATUS_MSK NO_OS_BIT(7)
202 #define AD5770R_STATUS_IREF_FAULT_MSK NO_OS_BIT(3)
203 #define AD5770R_STATUS_NEGATIVE_CHANNEL0_MSK NO_OS_BIT(2)
204 #define AD5770R_STATUS_OVER_TEMP_MSK NO_OS_BIT(1)
205 #define AD5770R_STATUS_TEMP_WARNING_MSK NO_OS_BIT(0)
206 
207 /* AD5770R_HW_LDAC */
208 #define AD5770R_HW_LDAC_MASK_CH(x, channel) (((x) & 0x1) << (channel))
209 
210 /* AD5770R_CH_DAC */
211 #define AD5770R_CH_DAC_DATA_LSB(x) (((x) & 0x3F) << 2)
212 #define AD5770R_CH_DAC_DATA_MSB(x) (((x) & 0xFF) << 0)
213 
214 /* AD5770R_CH_SELECT */
215 #define AD5770R_CH_SELECT_SEL_CH(x, channel) (((x) & 0x1) << (channel))
216 
217 /* AD5770R_CH_INPUT */
218 #define AD5770R_CH_DAC_INPUT_DATA_LSB(x) (((x) & 0x3F) << 2)
219 #define AD5770R_CH_DAC_INPUT_DATA_MSB(x) (((x) & 0xFF) << 0)
220 
221 /* AD5770R_SW_LDAC */
222 #define AD5770R_SW_LDAC_CH(x, channel) (((x) & 0x1) << (channel))
223 
224 
225 #define AD5770R_REG_READ(x) (((x) & 0x7F) | 0x80)
226 #define AD5770R_REG_WRITE(x) ((x) & 0x7F)
227 
235 };
236 
242 };
243 
251 };
252 
258 };
259 
263  bool ib_ext_en;
265 };
266 
269  uint16_t input_page_mask;
270 };
271 
273  uint8_t output_scale;
275 };
276 
279  bool single_instruction; // for multibyte read/write
281 };
282 
284  bool en0, en1, en2, en3, en4, en5, sink0;
285 };
286 
296 };
297 
298 struct ad5770r_dev {
299  /* SPI */
301  /* GPIO */
306  /* Device SPI Settings */
308  /* Device Settings */
317  uint16_t dac_value[6];
321  uint16_t input_value[6];
322 };
323 
325  /* SPI */
327  /* GPIO */
331  /* Device SPI Settings */
333  /* Device Settings */
342  uint16_t dac_value[6];
346  uint16_t input_value[6];
347 };
348 
349 /******************************************************************************/
350 /************************ Functions Declarations ******************************/
351 /******************************************************************************/
352 int32_t ad5770r_spi_reg_read(struct ad5770r_dev *dev,
353  uint8_t reg_addr,
354  uint8_t *reg_data);
355 int32_t ad5770r_spi_reg_read_multiple(struct ad5770r_dev *dev,
356  uint8_t reg_addr,
357  uint8_t *reg_data,
358  uint16_t count);
359 int32_t ad5770r_spi_reg_write(struct ad5770r_dev *dev,
360  uint8_t reg_addr,
361  uint8_t reg_data);
362 int32_t ad5770r_spi_reg_write_multiple(struct ad5770r_dev *dev,
363  uint8_t reg_addr,
364  uint8_t *reg_data,
365  uint16_t count);
366 int32_t ad5770r_spi_write_mask(struct ad5770r_dev *dev,
367  uint8_t reg_addr,
368  uint32_t mask,
369  uint8_t data);
370 int32_t ad5770r_set_device_spi(struct ad5770r_dev *dev,
371  const struct ad5770r_device_spi_settings *spi_settings);
372 int32_t ad5770r_channel_config(struct ad5770r_dev *dev,
373  const struct ad5770r_channel_switches *channel_config);
374 int32_t ad5770r_set_output_mode(struct ad5770r_dev *dev,
375  const struct ad5770r_output_range *output_mode,
376  enum ad5770r_channels channel);
377 int32_t ad5770r_set_reference(struct ad5770r_dev *dev,
378  bool external_reference,
379  enum ad5770r_reference_voltage reference_selector);
380 int32_t ad5770r_set_alarm(struct ad5770r_dev *dev,
381  const struct ad5770r_alarm_cfg *const alarm_config);
382 int32_t ad5770r_set_output_filter(struct ad5770r_dev *dev,
383  enum ad5770r_output_filter_resistor output_filter,
384  enum ad5770r_channels channel);
385 int32_t ad5770r_set_hw_ldac(struct ad5770r_dev *dev,
386  const struct ad5770r_channel_switches *mask_hw_ldac);
387 int32_t ad5770r_set_dac_value(struct ad5770r_dev *dev,
388  uint16_t dac_value, enum ad5770r_channels channel);
389 int32_t ad5770r_set_dac_input(struct ad5770r_dev *dev,
390  uint16_t dac_input, enum ad5770r_channels channel);
391 int32_t ad5770r_set_page_mask(struct ad5770r_dev *dev,
392  const struct ad5770r_dac_page_mask *page_mask);
393 int32_t ad5770r_set_mask_channel(struct ad5770r_dev *dev,
394  const struct ad5770r_channel_switches *mask_channel_sel);
395 int32_t ad5770r_set_sw_ldac(struct ad5770r_dev *dev,
396  const struct ad5770r_channel_switches *sw_ldac);
397 int32_t ad5770r_get_status(struct ad5770r_dev *dev,
398  uint8_t *status);
399 int32_t ad5770r_get_interface_status(struct ad5770r_dev *dev,
400  uint8_t *status);
401 int32_t ad5770r_set_monitor_setup(struct ad5770r_dev *dev,
402  const struct ad5770r_monitor_setup *mon_setup);
403 int32_t ad5770r_init(struct ad5770r_dev **device,
404  const struct ad5770r_init_param *init_param);
405 int32_t ad5770r_remove(struct ad5770r_dev *dev);
406 
407 #endif /* AD5770R_H_ */
ad5770r_monitor_setup::monitor_channel
enum ad5770r_channels monitor_channel
Definition: ad5770r.h:264
AD5770R_REFERENCE_VOLTATE_SEL
#define AD5770R_REFERENCE_VOLTATE_SEL(x)
Definition: ad5770r.h:174
AD5770R_OUTPUT_FILTER_RESISTOR_60_OHM
@ AD5770R_OUTPUT_FILTER_RESISTOR_60_OHM
Definition: ad5770r.h:229
AD5770R_INTERFACE_CONFIG_A_ADDR_ASCENSION_MSB_MSK
#define AD5770R_INTERFACE_CONFIG_A_ADDR_ASCENSION_MSB_MSK
Definition: ad5770r.h:134
ad5770r_set_output_filter
int32_t ad5770r_set_output_filter(struct ad5770r_dev *dev, enum ad5770r_output_filter_resistor output_filter, enum ad5770r_channels channel)
Definition: ad5770r.c:368
ad5770r_spi_reg_read
int32_t ad5770r_spi_reg_read(struct ad5770r_dev *dev, uint8_t reg_addr, uint8_t *reg_data)
Definition: ad5770r.c:59
ad5770r_init
int32_t ad5770r_init(struct ad5770r_dev **device, const struct ad5770r_init_param *init_param)
Definition: ad5770r.c:669
ad5770r_init_param::dev_spi_settings
struct ad5770r_device_spi_settings dev_spi_settings
Definition: ad5770r.h:332
AD5770R_OUTPUT_FILTER_CH
#define AD5770R_OUTPUT_FILTER_CH(x)
Definition: ad5770r.h:188
AD5770R_INT_REF_1_25_V_OUT_ON
@ AD5770R_INT_REF_1_25_V_OUT_ON
Definition: ad5770r.h:255
no_os_gpio_init_param
Structure holding the parameters for GPIO initialization.
Definition: no_os_gpio.h:85
ad5770r_alarm_cfg::open_drain_en
bool open_drain_en
Definition: ad5770r.h:288
ad5770r_dev::output_filter
enum ad5770r_output_filter_resistor output_filter[6]
Definition: ad5770r.h:314
ad5770r_monitor_setup::ib_ext_en
bool ib_ext_en
Definition: ad5770r.h:263
ad5770r_channel_switches::en4
bool en4
Definition: ad5770r.h:284
ad5770r_alarm_cfg::over_temp_msk
bool over_temp_msk
Definition: ad5770r.h:292
ad5770r_get_status
int32_t ad5770r_get_status(struct ad5770r_dev *dev, uint8_t *status)
Definition: ad5770r.c:582
ad5770r_set_output_filter
int32_t ad5770r_set_output_filter(struct ad5770r_dev *dev, enum ad5770r_output_filter_resistor output_filter, enum ad5770r_channels channel)
Definition: ad5770r.c:368
ad5770r_spi_reg_write
int32_t ad5770r_spi_reg_write(struct ad5770r_dev *dev, uint8_t reg_addr, uint8_t reg_data)
Definition: ad5770r.c:125
ad5770r_channel_switches::en3
bool en3
Definition: ad5770r.h:284
AD5770R_OUTPUT_RANGE_MODE
#define AD5770R_OUTPUT_RANGE_MODE(x)
Definition: ad5770r.h:168
ad5770r_init_param::page_mask
struct ad5770r_dac_page_mask page_mask
Definition: ad5770r.h:343
AD5770R_ALARM_CONFIG
#define AD5770R_ALARM_CONFIG
Definition: ad5770r.h:90
ad5770r_set_monitor_setup
int32_t ad5770r_set_monitor_setup(struct ad5770r_dev *dev, const struct ad5770r_monitor_setup *mon_setup)
Definition: ad5770r.c:611
ad5770r_init_param::sw_ldac
struct ad5770r_channel_switches sw_ldac
Definition: ad5770r.h:345
no_os_spi_write_and_read
int32_t no_os_spi_write_and_read(struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
Write and read data to/from SPI.
Definition: no_os_spi.c:83
AD5770R_CH0_INPUT_MSB
#define AD5770R_CH0_INPUT_MSB
Definition: ad5770r.h:119
no_os_spi.h
Header file of SPI Interface.
AD5770R_CURRENT_MONITORING
@ AD5770R_CURRENT_MONITORING
Definition: ad5770r.h:240
AD5770R_CH4
@ AD5770R_CH4
Definition: ad5770r.h:249
AD5770R_HW_LDAC
#define AD5770R_HW_LDAC
Definition: ad5770r.h:99
ad5770r_init_param::channel_config
struct ad5770r_channel_switches channel_config
Definition: ad5770r.h:334
ad5770r_dev::channel_config
struct ad5770r_channel_switches channel_config
Definition: ad5770r.h:309
ad5770r_spi_reg_read
int32_t ad5770r_spi_reg_read(struct ad5770r_dev *dev, uint8_t reg_addr, uint8_t *reg_data)
Definition: ad5770r.c:59
AD5770R_REG_READ
#define AD5770R_REG_READ(x)
Definition: ad5770r.h:225
ad5770r_set_page_mask
int32_t ad5770r_set_page_mask(struct ad5770r_dev *dev, const struct ad5770r_dac_page_mask *page_mask)
Definition: ad5770r.c:479
ad5770r_set_alarm
int32_t ad5770r_set_alarm(struct ad5770r_dev *dev, const struct ad5770r_alarm_cfg *const alarm_config)
Definition: ad5770r.c:332
AD5770R_MONITOR_SETUP_MUX_BUFFER
#define AD5770R_MONITOR_SETUP_MUX_BUFFER(x)
Definition: ad5770r.h:194
AD5770R_ALARM_CONFIG_NEGATIVE_CHANNEL0_ALARM_MASK
#define AD5770R_ALARM_CONFIG_NEGATIVE_CHANNEL0_ALARM_MASK(x)
Definition: ad5770r.h:179
ad5770r_dev::gpio_ldac_n
struct no_os_gpio_desc * gpio_ldac_n
Definition: ad5770r.h:305
ad5770r_get_interface_status
int32_t ad5770r_get_interface_status(struct ad5770r_dev *dev, uint8_t *status)
Definition: ad5770r.c:596
NO_OS_IS_ERR_VALUE
#define NO_OS_IS_ERR_VALUE(x)
Definition: no_os_error.h:56
ad5770r_get_status
int32_t ad5770r_get_status(struct ad5770r_dev *dev, uint8_t *status)
Definition: ad5770r.c:582
AD5770R_ALARM_CONFIG_BACKGROUND_CRC_EN
#define AD5770R_ALARM_CONFIG_BACKGROUND_CRC_EN(x)
Definition: ad5770r.h:182
ad5770r_init_param::mask_hw_ldac
struct ad5770r_channel_switches mask_hw_ldac
Definition: ad5770r.h:341
ad5770r_device_spi_settings::stream_mode_length
uint8_t stream_mode_length
Definition: ad5770r.h:280
device
Definition: ad9361_util.h:75
AD5770R_OUTPUT_RANGE_CH0
#define AD5770R_OUTPUT_RANGE_CH0
Definition: ad5770r.h:83
ad5770r_set_hw_ldac
int32_t ad5770r_set_hw_ldac(struct ad5770r_dev *dev, const struct ad5770r_channel_switches *mask_hw_ldac)
Definition: ad5770r.c:386
NO_OS_GPIO_HIGH
@ NO_OS_GPIO_HIGH
Definition: no_os_gpio.h:123
ad5770r_remove
int32_t ad5770r_remove(struct ad5770r_dev *dev)
Definition: ad5770r.c:789
ad5770r_spi_write_mask
int32_t ad5770r_spi_write_mask(struct ad5770r_dev *dev, uint8_t reg_addr, uint32_t mask, uint8_t data)
Definition: ad5770r.c:179
AD5770R_CHANNEL_CONFIG_CH4_SHUTDOWN_B
#define AD5770R_CHANNEL_CONFIG_CH4_SHUTDOWN_B(x)
Definition: ad5770r.h:154
no_os_gpio_direction_input
int32_t no_os_gpio_direction_input(struct no_os_gpio_desc *desc)
Enable the input direction of the specified GPIO.
Definition: no_os_gpio.c:108
ad5770r_monitor_function
ad5770r_monitor_function
Definition: ad5770r.h:237
AD5770R_CHANNEL_CONFIG_CH3_SHUTDOWN_B
#define AD5770R_CHANNEL_CONFIG_CH3_SHUTDOWN_B(x)
Definition: ad5770r.h:156
ad5770r_dev::spi_desc
struct no_os_spi_desc * spi_desc
Definition: ad5770r.h:300
ad5770r_dac_page_mask::dac_data_page_mask
uint16_t dac_data_page_mask
Definition: ad5770r.h:268
ad5770r_set_page_mask
int32_t ad5770r_set_page_mask(struct ad5770r_dev *dev, const struct ad5770r_dac_page_mask *page_mask)
Definition: ad5770r.c:479
ad5770r_alarm_cfg::iref_fault_msk
bool iref_fault_msk
Definition: ad5770r.h:294
AD5770R_INTERFACE_CONFIG_B_SINGLE_INST_MSK
#define AD5770R_INTERFACE_CONFIG_B_SINGLE_INST_MSK
Definition: ad5770r.h:139
ad5770r_channel_switches::en5
bool en5
Definition: ad5770r.h:284
ad5770r_set_alarm
int32_t ad5770r_set_alarm(struct ad5770r_dev *dev, const struct ad5770r_alarm_cfg *const alarm_config)
Definition: ad5770r.c:332
ad5770r_init_param
Definition: ad5770r.h:324
ad5770r_dev::external_reference
bool external_reference
Definition: ad5770r.h:311
AD5770R_ALARM_CONFIG_OVER_TEMP_ALARM_MASK
#define AD5770R_ALARM_CONFIG_OVER_TEMP_ALARM_MASK(x)
Definition: ad5770r.h:180
AD5770R_STREAM_MODE
#define AD5770R_STREAM_MODE
Definition: ad5770r.h:77
ad5770r_get_interface_status
int32_t ad5770r_get_interface_status(struct ad5770r_dev *dev, uint8_t *status)
Definition: ad5770r.c:596
AD5770R_CH0_DAC_MSB
#define AD5770R_CH0_DAC_MSB
Definition: ad5770r.h:101
AD5770R_CH_SELECT
#define AD5770R_CH_SELECT
Definition: ad5770r.h:114
ad5770r_alarm_cfg::neg_ch0_msk
bool neg_ch0_msk
Definition: ad5770r.h:293
AD5770R_VOLTAGE_MONITORING
@ AD5770R_VOLTAGE_MONITORING
Definition: ad5770r.h:239
AD5770R_REFERENCE
#define AD5770R_REFERENCE
Definition: ad5770r.h:89
ad5770r_spi_reg_write_multiple
int32_t ad5770r_spi_reg_write_multiple(struct ad5770r_dev *dev, uint8_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad5770r.c:149
ad5770r_dev::output_mode
struct ad5770r_output_range output_mode[6]
Definition: ad5770r.h:310
ad5770r_init_param::input_value
uint16_t input_value[6]
Definition: ad5770r.h:346
ad5770r_dev::gpio_reset_n
struct no_os_gpio_desc * gpio_reset_n
Definition: ad5770r.h:304
no_os_error.h
Error codes definition.
ad5770r_set_monitor_setup
int32_t ad5770r_set_monitor_setup(struct ad5770r_dev *dev, const struct ad5770r_monitor_setup *mon_setup)
Definition: ad5770r.c:611
AD5770R_OUTPUT_FILTER_RESISTOR_22_2_KOHM
@ AD5770R_OUTPUT_FILTER_RESISTOR_22_2_KOHM
Definition: ad5770r.h:232
ad5770r_channel_config
int32_t ad5770r_channel_config(struct ad5770r_dev *dev, const struct ad5770r_channel_switches *channel_config)
Definition: ad5770r.c:247
ad5770r_set_reference
int32_t ad5770r_set_reference(struct ad5770r_dev *dev, bool external_reference, enum ad5770r_reference_voltage reference_selector)
Definition: ad5770r.c:302
ad5770r_init_param::alarm_config
struct ad5770r_alarm_cfg alarm_config
Definition: ad5770r.h:338
AD5770R_CH1
@ AD5770R_CH1
Definition: ad5770r.h:246
AD5770R_SW_LDAC_CH
#define AD5770R_SW_LDAC_CH(x, channel)
Definition: ad5770r.h:222
AD5770R_MONITOR_SETUP_MON_FUNCTION
#define AD5770R_MONITOR_SETUP_MON_FUNCTION(x)
Definition: ad5770r.h:192
AD5770R_OUTPUT_FILTER_RESISTOR_5_6_KOHM
@ AD5770R_OUTPUT_FILTER_RESISTOR_5_6_KOHM
Definition: ad5770r.h:230
AD5770R_ALARM_CONFIG_THERMAL_SHUTDOWN_EN
#define AD5770R_ALARM_CONFIG_THERMAL_SHUTDOWN_EN(x)
Definition: ad5770r.h:183
ad5770r_set_mask_channel
int32_t ad5770r_set_mask_channel(struct ad5770r_dev *dev, const struct ad5770r_channel_switches *mask_channel_sel)
Definition: ad5770r.c:512
AD5770R_HW_LDAC_MASK_CH
#define AD5770R_HW_LDAC_MASK_CH(x, channel)
Definition: ad5770r.h:208
ad5770r_dev::alarm_config
struct ad5770r_alarm_cfg alarm_config
Definition: ad5770r.h:313
ad5770r_init_param::gpio_reset_n
struct no_os_gpio_init_param * gpio_reset_n
Definition: ad5770r.h:329
AD5770R_OUTPUT_FILTER_RESISTOR_11_2_KOHM
@ AD5770R_OUTPUT_FILTER_RESISTOR_11_2_KOHM
Definition: ad5770r.h:231
ad5770r_set_output_mode
int32_t ad5770r_set_output_mode(struct ad5770r_dev *dev, const struct ad5770r_output_range *output_mode, enum ad5770r_channels channel)
Definition: ad5770r.c:281
ad5770r_output_range::output_scale
uint8_t output_scale
Definition: ad5770r.h:273
ad5770r_channels
ad5770r_channels
Definition: ad5770r.h:244
ad5770r_alarm_cfg::temp_warning_msk
bool temp_warning_msk
Definition: ad5770r.h:291
AD5770R_OUTPUT_FILTER_RESISTOR_44_4_KOHM
@ AD5770R_OUTPUT_FILTER_RESISTOR_44_4_KOHM
Definition: ad5770r.h:233
AD5770R_INTERFACE_CONFIG_A_ADDR_ASCENSION_MSB
#define AD5770R_INTERFACE_CONFIG_A_ADDR_ASCENSION_MSB(x)
Definition: ad5770r.h:135
AD5770R_INTERFACE_CONFIG_A
#define AD5770R_INTERFACE_CONFIG_A
Definition: ad5770r.h:67
ad5770r_set_dac_input
int32_t ad5770r_set_dac_input(struct ad5770r_dev *dev, uint16_t dac_input, enum ad5770r_channels channel)
Definition: ad5770r.c:450
AD5770R_CH3
@ AD5770R_CH3
Definition: ad5770r.h:248
AD5770R_DAC_PAGE_MASK_MSB
#define AD5770R_DAC_PAGE_MASK_MSB
Definition: ad5770r.h:113
AD5770R_INT_REF_1_25_V_OUT_OFF
@ AD5770R_INT_REF_1_25_V_OUT_OFF
Definition: ad5770r.h:257
ad5770r_alarm_cfg
Definition: ad5770r.h:287
ad5770r_init_param::mon_setup
struct ad5770r_monitor_setup mon_setup
Definition: ad5770r.h:340
ad5770r_set_reference
int32_t ad5770r_set_reference(struct ad5770r_dev *dev, bool external_reference, enum ad5770r_reference_voltage reference_selector)
Definition: ad5770r.c:302
ad5770r_reference_voltage
ad5770r_reference_voltage
Definition: ad5770r.h:253
ad5770r_device_spi_settings
Definition: ad5770r.h:277
ad5770r_dev::mon_setup
struct ad5770r_monitor_setup mon_setup
Definition: ad5770r.h:315
AD5770R_ALARM_CONFIG_TEMP_WARNING_ALARM_MASK
#define AD5770R_ALARM_CONFIG_TEMP_WARNING_ALARM_MASK(x)
Definition: ad5770r.h:181
no_os_gpio_remove
int32_t no_os_gpio_remove(struct no_os_gpio_desc *desc)
Free the resources allocated by no_os_gpio_get().
Definition: no_os_gpio.c:95
no_os_spi_desc
Structure holding SPI descriptor.
Definition: no_os_spi.h:143
AD5770R_MONITOR_SETUP
#define AD5770R_MONITOR_SETUP
Definition: ad5770r.h:97
AD5770R_INPUT_PAGE_MASK_MSB
#define AD5770R_INPUT_PAGE_MASK_MSB
Definition: ad5770r.h:116
AD5770R_OUTPUT_RANGE_OUTPUT_SCALING
#define AD5770R_OUTPUT_RANGE_OUTPUT_SCALING(x)
Definition: ad5770r.h:166
AD5770R_CHANNEL_CONFIG
#define AD5770R_CHANNEL_CONFIG
Definition: ad5770r.h:82
ad5770r_dev::input_value
uint16_t input_value[6]
Definition: ad5770r.h:321
AD5770R_DISABLE
@ AD5770R_DISABLE
Definition: ad5770r.h:238
ad5770r_alarm_cfg::thermal_shutdown_en
bool thermal_shutdown_en
Definition: ad5770r.h:289
ad5770r_output_range
Definition: ad5770r.h:272
no_os_gpio_desc
Structure holding the GPIO descriptor.
Definition: no_os_gpio.h:102
ad5770r_channel_switches::en1
bool en1
Definition: ad5770r.h:284
ad5770r_channel_switches::en0
bool en0
Definition: ad5770r.h:284
ad5770r_set_output_mode
int32_t ad5770r_set_output_mode(struct ad5770r_dev *dev, const struct ad5770r_output_range *output_mode, enum ad5770r_channels channel)
Definition: ad5770r.c:281
ad5770r_init_param::gpio_alarm_n
struct no_os_gpio_init_param * gpio_alarm_n
Definition: ad5770r.h:328
AD5770R_CHANNEL_CONFIG_CH1_SHUTDOWN_B
#define AD5770R_CHANNEL_CONFIG_CH1_SHUTDOWN_B(x)
Definition: ad5770r.h:160
AD5770R_CHANNEL_CONFIG_CH0_SHUTDOWN_B
#define AD5770R_CHANNEL_CONFIG_CH0_SHUTDOWN_B(x)
Definition: ad5770r.h:162
ad5770r_channel_switches::en2
bool en2
Definition: ad5770r.h:284
AD5770R_REG_WRITE
#define AD5770R_REG_WRITE(x)
Definition: ad5770r.h:226
ad5770r_init_param::gpio_ldac_n
struct no_os_gpio_init_param * gpio_ldac_n
Definition: ad5770r.h:330
ad5770r_set_dac_value
int32_t ad5770r_set_dac_value(struct ad5770r_dev *dev, uint16_t dac_value, enum ad5770r_channels channel)
Definition: ad5770r.c:418
ad5770r_device_spi_settings::single_instruction
bool single_instruction
Definition: ad5770r.h:279
ad5770r_monitor_setup::mux_buffer
bool mux_buffer
Definition: ad5770r.h:262
ad5770r_output_filter_resistor
ad5770r_output_filter_resistor
Definition: ad5770r.h:228
ad5770r_dev::dev_spi_settings
struct ad5770r_device_spi_settings dev_spi_settings
Definition: ad5770r.h:307
ad5770r_dev::mask_hw_ldac
struct ad5770r_channel_switches mask_hw_ldac
Definition: ad5770r.h:316
ad5770r_init_param::output_filter
enum ad5770r_output_filter_resistor output_filter[6]
Definition: ad5770r.h:339
AD5770R_PRODUCT_ID_L
#define AD5770R_PRODUCT_ID_L
Definition: ad5770r.h:70
AD5770R_CH_DAC_DATA_LSB
#define AD5770R_CH_DAC_DATA_LSB(x)
Definition: ad5770r.h:211
ad5770r_init_param::dac_value
uint16_t dac_value[6]
Definition: ad5770r.h:342
ad5770r_set_dac_value
int32_t ad5770r_set_dac_value(struct ad5770r_dev *dev, uint16_t dac_value, enum ad5770r_channels channel)
Definition: ad5770r.c:418
AD5770R_CH0
@ AD5770R_CH0
Definition: ad5770r.h:245
ad5770r_dev::page_mask
struct ad5770r_dac_page_mask page_mask
Definition: ad5770r.h:318
ad5770r_set_device_spi
int32_t ad5770r_set_device_spi(struct ad5770r_dev *dev, const struct ad5770r_device_spi_settings *spi_settings)
Definition: ad5770r.c:205
ad5770r_dev::reference_selector
enum ad5770r_reference_voltage reference_selector
Definition: ad5770r.h:312
AD5770R_INTERFACE_CONFIG_B
#define AD5770R_INTERFACE_CONFIG_B
Definition: ad5770r.h:68
NO_OS_BIT
#define NO_OS_BIT(x)
Definition: no_os_util.h:51
AD5770R_REFERENCE_RESISTOR_SEL
#define AD5770R_REFERENCE_RESISTOR_SEL(x)
Definition: ad5770r.h:172
ad5770r_dev::mask_channel_sel
struct ad5770r_channel_switches mask_channel_sel
Definition: ad5770r.h:319
ad5770r_channel_config
int32_t ad5770r_channel_config(struct ad5770r_dev *dev, const struct ad5770r_channel_switches *channel_config)
Definition: ad5770r.c:247
ad5770r_monitor_setup::monitor_function
enum ad5770r_monitor_function monitor_function
Definition: ad5770r.h:261
ad5770r_channel_switches::sink0
bool sink0
Definition: ad5770r.h:284
AD5770R_EXT_REF_2_5_V
@ AD5770R_EXT_REF_2_5_V
Definition: ad5770r.h:254
ad5770r_init_param::output_mode
struct ad5770r_output_range output_mode[6]
Definition: ad5770r.h:335
ad5770r_dac_page_mask
Definition: ad5770r.h:267
AD5770R_CH5
@ AD5770R_CH5
Definition: ad5770r.h:250
ad5770r_set_mask_channel
int32_t ad5770r_set_mask_channel(struct ad5770r_dev *dev, const struct ad5770r_channel_switches *mask_channel_sel)
Definition: ad5770r.c:512
ad5770r_spi_reg_write
int32_t ad5770r_spi_reg_write(struct ad5770r_dev *dev, uint8_t reg_addr, uint8_t reg_data)
Definition: ad5770r.c:125
ad5770r_set_hw_ldac
int32_t ad5770r_set_hw_ldac(struct ad5770r_dev *dev, const struct ad5770r_channel_switches *mask_hw_ldac)
Definition: ad5770r.c:386
ad5770r_set_sw_ldac
int32_t ad5770r_set_sw_ldac(struct ad5770r_dev *dev, const struct ad5770r_channel_switches *sw_ldac)
Definition: ad5770r.c:543
ad5770r_spi_write_mask
int32_t ad5770r_spi_write_mask(struct ad5770r_dev *dev, uint8_t reg_addr, uint32_t mask, uint8_t data)
Definition: ad5770r.c:179
AD5770R_CHANNEL_CONFIG_CH5_SHUTDOWN_B
#define AD5770R_CHANNEL_CONFIG_CH5_SHUTDOWN_B(x)
Definition: ad5770r.h:152
init_param
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:96
ad5770r_dev::dac_value
uint16_t dac_value[6]
Definition: ad5770r.h:317
ad5770r_channel_switches
Definition: ad5770r.h:283
AD5770R_TEMPERATURE_MONITORING
@ AD5770R_TEMPERATURE_MONITORING
Definition: ad5770r.h:241
ad5770r_dev
Definition: ad5770r.h:298
AD5770R_ALARM_CONFIG_OPEN_DRAIN_EN
#define AD5770R_ALARM_CONFIG_OPEN_DRAIN_EN(x)
Definition: ad5770r.h:184
AD5770R_INTERFACE_CONFIG_B_SINGLE_INST
#define AD5770R_INTERFACE_CONFIG_B_SINGLE_INST(x)
Definition: ad5770r.h:140
ad5770r_monitor_setup
Definition: ad5770r.h:260
ad5770r_dev::sw_ldac
struct ad5770r_channel_switches sw_ldac
Definition: ad5770r.h:320
AD5770R_PRODUCT_ID_H
#define AD5770R_PRODUCT_ID_H
Definition: ad5770r.h:71
no_os_spi_remove
int32_t no_os_spi_remove(struct no_os_spi_desc *desc)
Free the resources allocated by no_os_spi_init().
Definition: no_os_spi.c:71
ad5770r_set_device_spi
int32_t ad5770r_set_device_spi(struct ad5770r_dev *dev, const struct ad5770r_device_spi_settings *spi_settings)
Definition: ad5770r.c:205
ad5770r_set_dac_input
int32_t ad5770r_set_dac_input(struct ad5770r_dev *dev, uint16_t dac_input, enum ad5770r_channels channel)
Definition: ad5770r.c:450
ad5770r_spi_reg_write_multiple
int32_t ad5770r_spi_reg_write_multiple(struct ad5770r_dev *dev, uint8_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad5770r.c:149
no_os_gpio.h
Header file of GPIO Interface.
AD5770R_CH_SELECT_SEL_CH
#define AD5770R_CH_SELECT_SEL_CH(x, channel)
Definition: ad5770r.h:215
AD5770R_ALARM_CONFIG_IREF_FAULT_ALARM_MASK
#define AD5770R_ALARM_CONFIG_IREF_FAULT_ALARM_MASK(x)
Definition: ad5770r.h:178
no_os_spi_init
int32_t no_os_spi_init(struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
Initialize the SPI communication peripheral.
Definition: no_os_spi.c:51
AD5770R_ALARM_CONFIG_BACKGROUND_CRC_ALARM_MASK
#define AD5770R_ALARM_CONFIG_BACKGROUND_CRC_ALARM_MASK(x)
Definition: ad5770r.h:177
ad5770r_set_sw_ldac
int32_t ad5770r_set_sw_ldac(struct ad5770r_dev *dev, const struct ad5770r_channel_switches *sw_ldac)
Definition: ad5770r.c:543
AD5770R_MONITOR_SETUP_IB_EXT_EN
#define AD5770R_MONITOR_SETUP_IB_EXT_EN(x)
Definition: ad5770r.h:196
ad5770r_alarm_cfg::background_crc_msk
bool background_crc_msk
Definition: ad5770r.h:295
ad5770r_dev::gpio_alarm_n
struct no_os_gpio_desc * gpio_alarm_n
Definition: ad5770r.h:303
AD5770R_CHANNEL_CONFIG_CH0_SINK_EN
#define AD5770R_CHANNEL_CONFIG_CH0_SINK_EN(x)
Definition: ad5770r.h:150
AD5770R_SW_LDAC
#define AD5770R_SW_LDAC
Definition: ad5770r.h:117
AD5770R_STATUS
#define AD5770R_STATUS
Definition: ad5770r.h:98
ad5770r_output_range::output_range_mode
uint8_t output_range_mode
Definition: ad5770r.h:274
AD5770R_CH2
@ AD5770R_CH2
Definition: ad5770r.h:247
AD5770R_MONITOR_SETUP_MON_CH
#define AD5770R_MONITOR_SETUP_MON_CH(x)
Definition: ad5770r.h:198
ad5770r_init_param::external_reference
bool external_reference
Definition: ad5770r.h:336
AD5770R_OUTPUT_FILTER_CH0
#define AD5770R_OUTPUT_FILTER_CH0
Definition: ad5770r.h:91
AD5770R_OUTPUT_FILTER_RESISTOR_104_KOHM
@ AD5770R_OUTPUT_FILTER_RESISTOR_104_KOHM
Definition: ad5770r.h:234
no_os_gpio_direction_output
int32_t no_os_gpio_direction_output(struct no_os_gpio_desc *desc, uint8_t value)
Enable the output direction of the specified GPIO.
Definition: no_os_gpio.c:124
ad5770r_spi_reg_read_multiple
int32_t ad5770r_spi_reg_read_multiple(struct ad5770r_dev *dev, uint8_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad5770r.c:91
ad5770r_remove
int32_t ad5770r_remove(struct ad5770r_dev *dev)
Definition: ad5770r.c:789
AD5770R_INTERFACE_STATUS_A
#define AD5770R_INTERFACE_STATUS_A
Definition: ad5770r.h:79
ad5770r_device_spi_settings::addr_ascension
bool addr_ascension
Definition: ad5770r.h:278
ad5770r_dac_page_mask::input_page_mask
uint16_t input_page_mask
Definition: ad5770r.h:269
ad5770r_init_param::reference_selector
enum ad5770r_reference_voltage reference_selector
Definition: ad5770r.h:337
ad5770r.h
Header file for AD5770R Driver.
ad5770r_init_param::mask_channel_sel
struct ad5770r_channel_switches mask_channel_sel
Definition: ad5770r.h:344
ad5770r_init_param::spi_init
struct no_os_spi_init_param spi_init
Definition: ad5770r.h:326
AD5770R_EXT_REF_1_25_V
@ AD5770R_EXT_REF_1_25_V
Definition: ad5770r.h:256
AD5770R_CHANNEL_CONFIG_CH2_SHUTDOWN_B
#define AD5770R_CHANNEL_CONFIG_CH2_SHUTDOWN_B(x)
Definition: ad5770r.h:158
ad5770r_init
int32_t ad5770r_init(struct ad5770r_dev **device, const struct ad5770r_init_param *init_param)
Definition: ad5770r.c:669
ad5770r_spi_reg_read_multiple
int32_t ad5770r_spi_reg_read_multiple(struct ad5770r_dev *dev, uint8_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad5770r.c:91
ad5770r_alarm_cfg::background_crc_en
bool background_crc_en
Definition: ad5770r.h:290
no_os_spi_init_param
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:121
no_os_gpio_get_optional
int32_t no_os_gpio_get_optional(struct no_os_gpio_desc **desc, const struct no_os_gpio_init_param *param)
Get the value of an optional GPIO.
Definition: no_os_gpio.c:75