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