no-OS
Loading...
Searching...
No Matches
ad552xr.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef AD552XR_H_
34#define AD552XR_H_
35
36#include <stdint.h>
37#include <stdbool.h>
38#include "no_os_gpio.h"
39#include "no_os_spi.h"
40
41#define AD552XR_R1B (1ul << 16) // 1-byte register address
42#define AD552XR_R2B (2ul << 16) // 2-byte register address
43#define AD552XR_LEN(x) ((x) >> 16) // Get register byte length
44#define AD552XR_ADDR(x) ((x) & 0xFFFF)
45#define AD552XR_REG_CH_OFFSET(x) ((x) * 2)
46
47#define AD552XR_READ_BIT NO_OS_BIT(7)
48#define AD552XR_ADDR_MASK (~AD552XR_READ_BIT)
49#define AD552XR_WRITE_BIT_LONG_INSTR 0x00
50#define AD552XR_SCRATCH_PAD_TEST_VAL 0xAB
51
52#define AD552XR_MULTIBYTE_REG_START 0x14
53#define AD552XR_MULTIBYTE_REG_END 0x71
54
55/*
56 * AD552XR Core Registers
57 */
58#define AD552XR_REG_INTERFACE_CONFIG_A (AD552XR_R1B | 0x00)
59#define AD552XR_REG_INTERFACE_CONFIG_B (AD552XR_R1B | 0x01)
60#define AD552XR_REG_DEVICE_CONFIG (AD552XR_R1B | 0x02)
61#define AD552XR_REG_CHIP_TYPE (AD552XR_R1B | 0x03)
62#define AD552XR_REG_PRODUCT_ID_L (AD552XR_R1B | 0x04)
63#define AD552XR_REG_PRODUCT_ID_H (AD552XR_R1B | 0x05)
64#define AD552XR_REG_CHIP_GRADE (AD552XR_R1B | 0x06)
65#define AD552XR_REG_SCRATCH_PAD (AD552XR_R1B | 0x0A)
66#define AD552XR_REG_SPI_REVISION (AD552XR_R1B | 0x0B)
67#define AD552XR_REG_VENDOR_L (AD552XR_R1B | 0x0C)
68#define AD552XR_REG_VENDOR_H (AD552XR_R1B | 0x0D)
69#define AD552XR_REG_STREAM_MODE (AD552XR_R1B | 0x0E)
70#define AD552XR_REG_TRANSFER_CONFIG (AD552XR_R1B | 0x0F)
71#define AD552XR_REG_INTERFACE_CONFIG_C (AD552XR_R1B | 0x10)
72#define AD552XR_REG_INTERFACE_STATUS_A (AD552XR_R1B | 0x11)
73
74/*
75 * AD552XR DAC Configuration Registers
76 */
77#define AD552XR_REG_MULTI_INPUT_SEL (AD552XR_R2B | 0x14)
78#define AD552XR_REG_LDAC_SYNC_ASYNC (AD552XR_R2B | 0x16)
79#define AD552XR_REG_LDAC_HW_SW (AD552XR_R2B | 0x18)
80#define AD552XR_REG_LDAC_HW_SRC_CH(x) (AD552XR_R2B | (0x1A + AD552XR_REG_CH_OFFSET(x)))
81#define AD552XR_REG_OUT_EN (AD552XR_R2B | 0x3A)
82#define AD552XR_REG_OUT_RANGE_CH(x) (AD552XR_R2B | (0x3C + AD552XR_REG_CH_OFFSET(x)))
83#define AD552XR_REG_CAL_GAIN_CH(x) (AD552XR_R2B | (0x5C + AD552XR_REG_CH_OFFSET(x)))
84#define AD552XR_REG_CAL_OFFSET_CH(x) (AD552XR_R2B | (0x7C + AD552XR_REG_CH_OFFSET(x)))
85#define AD552XR_REG_FUNC_EN (AD552XR_R2B | 0x9C)
86#define AD552XR_REG_FUNC_MODE_SEL_CH(x) (AD552XR_R2B | (0x9E + AD552XR_REG_CH_OFFSET(x)))
87#define AD552XR_REG_FUNC_DAC_INPUT_B_CH(x) (AD552XR_R2B | (0xBE + AD552XR_REG_CH_OFFSET(x)))
88#define AD552XR_REG_FUNC_DITHER_PERIOD_CH(x)(AD552XR_R2B | (0xDE + AD552XR_REG_CH_OFFSET(x)))
89#define AD552XR_REG_FUNC_DITHER_PHASE_CH(x) (AD552XR_R2B | (0xFE + AD552XR_REG_CH_OFFSET(x)))
90#define AD552XR_REG_FUNC_RAMP_STEP_CH(x) (AD552XR_R2B | (0x11E + AD552XR_REG_CH_OFFSET(x)))
91#define AD552XR_REG_FUNC_INT_EN(x) (AD552XR_R2B | 0x13E)
92#define AD552XR_REG_MUX_OUT_SEL (AD552XR_R2B | 0x140)
93#define AD552XR_REG_MULTI_SW_LDAC (AD552XR_R2B | 0x142)
94#define AD552XR_REG_MULTI_INPUT (AD552XR_R2B | 0x144)
95#define AD552XR_REG_SW_LDAC (AD552XR_R2B | 0x146)
96#define AD552XR_REG_DAC_INPUT_A_CH(x) (AD552XR_R2B | (0x148 + AD552XR_REG_CH_OFFSET(x)))
97#define AD552XR_REG_FUNC_INT_STAT (AD552XR_R2B | 0x168)
98#define AD552XR_REG_DAC_DATA_READBACK_CH(x) (AD552XR_R2B | (0x16A + AD552XR_REG_CH_OFFSET(x)))
99
100/*
101 * AD552XR DAC Product Specific Registers
102 */
103#define AD552XR_REG_TSENS_EN (AD552XR_R2B | 0x18A)
104#define AD552XR_REG_TSENS_ALERT_FLAG (AD552XR_R2B | 0x18C)
105#define AD552XR_REG_TSENS_SHTD_FLAG (AD552XR_R2B | 0x18E)
106#define AD552XR_REG_TSENS_ALERT_STAT (AD552XR_R2B | 0x190)
107#define AD552XR_REG_TSENS_SHTD_STAT (AD552XR_R2B | 0x192)
108#define AD552XR_REG_ALARMB_TSENS_EN (AD552XR_R2B | 0x194)
109#define AD552XR_REG_ALARMB_TSENS_SEL (AD552XR_R2B | 0x196)
110#define AD552XR_REG_TSENS_SHTD_EN_CH (AD552XR_R2B | 0x198)
111#define AD552XR_REG_DAC_DIS_DEGLITCH_CH (AD552XR_R2B | 0x19A)
112#define AD552XR_REG_DAC_INT_EN (AD552XR_R2B | 0x19C)
113#define AD552XR_REG_ALL_FUNC_INT_STAT (AD552XR_R2B | 0x19E)
114#define AD552XR_REG_FUNC_BUSY (AD552XR_R2B | 0x1A0)
115#define AD552XR_REG_REF_SEL (AD552XR_R2B | 0x1A2)
116#define AD552XR_REG_INIT_CRC_ERR_STAT (AD552XR_R2B | 0x1A4)
117
118/*
119 * AD552XR_REG_INTERFACE_CONFIG_A
120 */
121#define AD552XR_INT_CONFIG_A_SW_RESET_MASK (NO_OS_BIT(7) | NO_OS_BIT(0))
122#define AD552XR_INT_CONFIG_A_ADDR_ASC_MASK NO_OS_BIT(5)
123#define AD552XR_INT_CONFIG_A_SDO_EN_MASK NO_OS_BIT(4)
124
125/*
126 * AD552XR_REG_INTERFACE_CONFIG_B
127 */
128#define AD552XR_INT_CONFIG_B_SINGLE_INSTR_MASK NO_OS_BIT(7)
129
130/*
131 * AD552XR_REG_DEVICE_CONFIG
132 */
133#define AD552XR_DEVICE_CONFIG_OPERATING_MODE NO_OS_GENMASK(1, 0)
134
135/*
136 * AD552XR_REG_CHIP_TYPE
137 */
138#define AD552XR_CHIP_TYPE_MASK NO_OS_GENMASK(3, 0)
139#define AD552XR_CHIP_TYPE 0x4
140
141/*
142 * AD552XR_REG_PRODUCT_ID
143 */
144#define AD552XR_PRODUCT_ID_H 0x41
145
146#define AD552XR_PRODUCT_ID(x) ((AD552XR_PRODUCT_ID_H << 8) | (x))
147#define AD5529R_PID_16BIT_16CH_WLCSP AD552XR_PRODUCT_ID(0x4A)
148
149/*
150 * AD552XR_REG_CHIP_GRADE
151 */
152#define AD552XR_CHIP_GRADE_MASK NO_OS_GENMASK(7, 4)
153#define AD552XR_CHIP_GRADE 0x0
154#define AD552XR_DEVICE_REV_MASK NO_OS_GENMASK(3, 0)
155#define AD552XR_DEVICE_REV 0x0
156
157/*
158 * AD552XR_REG_SPI_REVISION
159 */
160#define AD552XR_SPI_TYPE_MASK NO_OS_GENMASK(7, 6)
161#define AD552XR_SPI_TYPE 0x2
162#define AD552XR_SPI_VER_MASK NO_OS_GENMASK(5, 0)
163#define AD552XR_SPI_VER 0x5
164
165/*
166 * AD552XR_REG_VENDOR_ID
167 */
168#define AD552XR_VENDOR_ID_L 0x56
169#define AD552XR_VENDOR_ID_H 0x04
170
171/*
172 * AD552XR_REG_TRANSFER_CONFIG
173 */
174#define AD552XR_TRANSFER_CONFIG_MASK NO_OS_BIT(2)
175
176/*
177 * AD552XR_REG_INTERFACE_CONFIG_C
178 */
179#define AD552XR_INT_CONFIG_C_STRICT_REGISTER_A_ACCESS_MASK NO_OS_BIT(5)
180
181/*
182 * AD552XR_REG_INTERFACE_STATUS_A
183 */
184#define AD552XR_NOT_READY_ERR_MASK NO_OS_BIT(7)
185#define AD552XR_CLK_COUNT_ERR_MASK NO_OS_BIT(4)
186#define AD552XR_CRC_ERR_MASK NO_OS_BIT(3)
187#define AD552XR_WRITE_TO_READ_ONLY_REG_ERR_MASK NO_OS_BIT(2)
188#define AD552XR_REG_PARTIAL_ACC_ERR_MASK NO_OS_BIT(1)
189#define AD552XR_ADDR_INV_ERR_MASK NO_OS_BIT(0)
190
191/*
192 * AD552XR_REG_LDAC_HW_SRC_CHn
193 */
194#define AD552XR_LDAC_HW_SEL_CH_MASK NO_OS_GENMASK(9, 8)
195#define AD552XR_LDAC_HW_EDGE_SEL_CH_MASK NO_OS_GENMASK(1, 0)
196
197/*
198 * AD552XR_OUT_RANGE_CHn
199 */
200#define AD552XR_OUT_RANGE_CHn_MASK NO_OS_GENMASK(2, 0)
201
202/*
203 * AD552XR_CAL_GAIN_CHn
204 */
205#define AD552XR_CAL_GAIN_CHn_MASK NO_OS_GENMASK(7, 0)
206
207/*
208 * AD552XR_FUNC_MODE_SEL_CHn
209 */
210#define AD552XR_FUNC_MODE_SEL_CHn NO_OS_GENMASK(1, 0)
211
212/*
213 * AD552XR_REG_FUNC_DITHER_PERIOD_CHn
214 */
215#define AD552XR_FUNC_DITHER_PERIOD_CHn_MASK NO_OS_GENMASK(2, 0)
216
217/*
218 * AD552XR_REG_FUNC_DITHER_PHASE_CHn
219 */
220#define AD552XR_FUNC_DITHER_PHASE_CHn_MASK NO_OS_GENMASK(1, 0)
221
222/*
223 * AD552XR_REG_FUNC_RAMP_STEP_CHn
224 */
225#define AD552XR_FUNC_RAMP_STEP_CHn_MASK NO_OS_GENMASK(7, 0)
226
227/*
228 * AD552XR_REG_MUX_OUT_SEL
229 */
230#define AD552XR_MUX_OUT_EN NO_OS_BIT(7)
231#define AD552XR_MUX_PARAM_SEL_MASK NO_OS_GENMASK(5, 0)
232
233/*
234 * AD552XR_REG_MULTI_SW_LDAC
235 */
236#define AD552XR_MULTI_DAC_SW_LDAC_TRIG NO_OS_BIT(0)
237
238/*
239 * AD552XR_REG_REF_SEL
240 */
241#define AD552XR_VREF_SEL_MASK NO_OS_BIT(0)
242
243/* Useful defines */
244#define AD552XR_MAX_NUM_CH 16
245#define AD552XR_CHANNEL_SEL(ch) NO_OS_BIT(ch)
246#define AD552XR_NUM_MD_ADDR_LINES 2
247#define AD552XR_INTF_CFG_A_DEFAULT 0x10
248#define AD552XR_NUM_REGS 51
249
258
266
274
280 /* External source with Vref I/O as input */
282 /* Internal source with Vref I/O at 4.096V */
284};
285
298
311
334
382
393
408
420
441
456
462 bool addr_asc; //Address ascension enable
463 bool short_instr; // for 7-bit addressing
464 bool single_instr; // for multibyte read/write
465 bool stream_length_keep_value; // to keep stream length
467};
468
474 /* Enable function generator mask. */
475 uint16_t func_en_mask;
476 /* Enable output mask. */
478 /* Function generator mode select. */
480 /* LDAC sync/async mask. */
482 /* LDAC HW/SW mask. */
484 /* LDAC/TGP/DCLK edge trig */
486 /* LDAC Toggle pin select */
488 /* Dither period setting. */
490 /* Dither phase setting. */
492 /* Ramp step size. */
494 /* Multi-DAC channel mask. */
496};
497
503 /* Starting address for transfer */
504 uint8_t addr;
505 /* Data to transfer */
506 uint8_t *data;
507 /* Size of data to transfer */
508 uint32_t len;
509 /* Read transaction if true, write transfer otherwise */
511 /* If NULL will be default or last configured will be used */
513};
514
515
528
534 /* SPI */
536 /* Reset_B GPIO */
538 /* Clear_B GPIO */
540 /* Alarm_B GPIO */
542 /* Multi drop ADDR GPIO Lines */
544 /* LDAC TGPx GPIO pins */
550 /* Reference voltage selection */
552 /* Device SPI Settings */
554 /* LDAC Settings */
556 /* Device Address */
557 uint8_t dev_addr;
560 /* Monitor MUX parameter select */
562};
563
569 /* SPI */
571 /* Reset_B GPIO */
573 /* Clear_B GPIO */
575 /* Alarm_B GPIO */
577 /* Multi drop ADDR GPIO Lines */
579 /* LDAC TGPx GPIO pins */
585 /* Reference voltage selection */
587 /* Device SPI Settings */
589 /* LDAC Settings */
591 /* Device Address */
592 uint8_t dev_addr;
593 /* Device type */
595 /* Monitor MUX parameter select */
597};
598
600int ad552xr_spi_reg_read(struct ad552xr_dev *dev, uint32_t reg_addr,
601 uint16_t *reg_data);
602
604int ad552xr_spi_reg_write(struct ad552xr_dev *dev, uint32_t reg_addr,
605 uint16_t reg_data);
606
608int ad552xr_spi_write_mask(struct ad552xr_dev *dev, uint32_t reg_addr,
609 uint32_t mask, uint16_t data);
610
612int ad552xr_set_reference(struct ad552xr_dev *dev,
613 enum ad552xr_vref_select ref_sel);
614
617 uint8_t ch,
618 enum ad552xr_output_range range_sel);
619
621int ad552xr_channel_output_en(struct ad552xr_dev *dev, uint8_t ch, bool en);
622
624int ad552xr_func_en(struct ad552xr_dev *dev, uint8_t ch, bool en);
625
628 uint8_t ch,
629 enum ad552xr_function_mode func_mode_sel);
630
632int ad552xr_set_dither_period(struct ad552xr_dev *dev, uint8_t ch,
633 enum ad552xr_dither_period period);
634
636int ad552xr_set_dither_phase(struct ad552xr_dev *dev, uint8_t ch,
637 enum ad552xr_dither_phase phase);
638
640int ad552xr_set_ramp_step_size(struct ad552xr_dev *dev, uint8_t ch,
641 uint8_t step_size);
642
644int ad552xr_set_hw_sw_ldac(struct ad552xr_dev *dev,
645 uint8_t ch,
646 enum ad552xr_hw_sw_ldac ldac_mode_sel);
647
650 uint8_t ch,
651 bool is_sync);
652
655 uint8_t chn,
656 enum ad552xr_ldac_edge_trig trig_edge);
657
660 uint8_t ch,
661 enum ad552xr_ldac_toggle_sel ldac_hw_sel);
662
665 uint8_t ch,
666 uint16_t dac_value);
667
670 uint8_t ch,
671 uint16_t dac_value);
672
675 enum ad552xr_ldac_toggle_sel ldac_hw_sel,
676 uint32_t delay_us);
677
679int ad552xr_sw_ldac_trigger(struct ad552xr_dev *dev);
680
682int ad552xr_set_device_spi(struct ad552xr_dev *dev,
683 struct ad552xr_device_spi_settings *spi_settings);
684
687 enum ad552xr_mux_out_select mux_output_sel);
688
690int ad552xr_sw_reset(struct ad552xr_dev *dev);
691
693int ad552xr_hw_reset(struct ad552xr_dev *dev);
694
696int ad552xr_init(struct ad552xr_dev **device,
698
700int ad552xr_remove(struct ad552xr_dev *dev);
701
702#endif // AD552XR_H_
#define AD552XR_NUM_MD_ADDR_LINES
Definition ad552xr.h:246
int ad552xr_sw_reset(struct ad552xr_dev *dev)
Perform soft reset.
Definition ad552xr.c:883
ad552xr_type
AD552XR list of supported device types.
Definition ad552xr.h:254
@ ID_AD5529R
Definition ad552xr.h:255
@ AD552XR_NUM_TYPES
Definition ad552xr.h:256
ad552xr_num_channels
AD552XR list of supported number of channels.
Definition ad552xr.h:271
@ AD552XR_NUM_CHANNELS_16
Definition ad552xr.h:272
int ad552xr_set_hw_ldac_toggle_pin(struct ad552xr_dev *dev, uint8_t ch, enum ad552xr_ldac_toggle_sel ldac_hw_sel)
Set LDAC/TGP source pin.
Definition ad552xr.c:707
int ad552xr_set_dac_a_value(struct ad552xr_dev *dev, uint8_t ch, uint16_t dac_value)
Definition ad552xr.c:737
ad552xr_hw_sw_ldac
AD552XR HW or SW LDAC mode.
Definition ad552xr.h:387
@ AD552XR_HW_LDAC
Definition ad552xr.h:389
@ AD552XR_SW_LDAC
Definition ad552xr.h:391
int ad552xr_set_hw_edge_trigger(struct ad552xr_dev *dev, uint8_t chn, enum ad552xr_ldac_edge_trig trig_edge)
Set LDAC/TGP edge trigger.
Definition ad552xr.c:675
int ad552xr_init(struct ad552xr_dev **device, struct ad552xr_init_param *init_param)
Initialize the device.
Definition ad552xr.c:943
int ad552xr_set_mux_out_select(struct ad552xr_dev *dev, enum ad552xr_mux_out_select mux_output_sel)
Definition ad552xr.c:825
int ad552xr_spi_write_mask(struct ad552xr_dev *dev, uint32_t reg_addr, uint32_t mask, uint16_t data)
SPI write to device using a mask.
Definition ad552xr.c:338
ad552xr_dac_resolution
AD552XR list of supported data resolution.
Definition ad552xr.h:263
@ AD552XR_RESOLUTION_16_BIT
Definition ad552xr.h:264
int ad552xr_set_device_spi(struct ad552xr_dev *dev, struct ad552xr_device_spi_settings *spi_settings)
Set device spi settings.
Definition ad552xr.c:858
int ad552xr_set_dither_period(struct ad552xr_dev *dev, uint8_t ch, enum ad552xr_dither_period period)
Definition ad552xr.c:528
int ad552xr_set_dither_phase(struct ad552xr_dev *dev, uint8_t ch, enum ad552xr_dither_phase phase)
Definition ad552xr.c:559
int ad552xr_channel_output_en(struct ad552xr_dev *dev, uint8_t ch, bool en)
Definition ad552xr.c:435
ad552xr_ldac_toggle_sel
LDAC Toggle pin select.
Definition ad552xr.h:413
@ AD552XR_LDAC_TGP_2
Definition ad552xr.h:416
@ AD552XR_NUM_LDAC_TGP_PINS
Definition ad552xr.h:418
@ AD552XR_LDAC_TGP_3
Definition ad552xr.h:417
@ AD552XR_LDAC_TGP_1
Definition ad552xr.h:415
@ AD552XR_LDAC_TGP_0
Definition ad552xr.h:414
int ad552xr_set_dac_b_value(struct ad552xr_dev *dev, uint8_t ch, uint16_t dac_value)
Definition ad552xr.c:756
int ad552xr_func_en(struct ad552xr_dev *dev, uint8_t ch, bool en)
Definition ad552xr.c:462
ad552xr_ldac_edge_trig
AD552XR hardware LDAC edge select options.
Definition ad552xr.h:290
@ FALLING_EDGE_TRIG
Definition ad552xr.h:294
@ ANY_EDGE_TRIG
Definition ad552xr.h:296
@ RISING_EDGE_TRIG
Definition ad552xr.h:292
ad552xr_mux_out_select
Signals to monitor on MUX_OUT pin.
Definition ad552xr.h:339
@ AD552XR_MUX_OUT_VMON
Definition ad552xr.h:378
@ AD552XR_MUX_OUT_VOUT14
Definition ad552xr.h:355
@ AD552XR_MUX_OUT_IOUT2
Definition ad552xr.h:359
@ AD552XR_MUX_OUT_IOUT1
Definition ad552xr.h:358
@ AD552XR_MUX_OUT_VOUT10
Definition ad552xr.h:351
@ AD552XR_MUX_OUT_VOUT3
Definition ad552xr.h:344
@ AD552XR_MUX_OUT_IMON
Definition ad552xr.h:379
@ AD552XR_MUX_OUT_IOUT15
Definition ad552xr.h:372
@ AD552XR_MUX_OUT_IOUT10
Definition ad552xr.h:367
@ AD552XR_MUX_OUT_IOUT12
Definition ad552xr.h:369
@ AD552XR_MUX_OUT_PVDD3
Definition ad552xr.h:373
@ AD552XR_MUX_OUT_VOUT1
Definition ad552xr.h:342
@ AD552XR_MUX_OUT_AGND
Definition ad552xr.h:340
@ AD552XR_MUX_OUT_VOUT15
Definition ad552xr.h:356
@ AD552XR_MUX_OUT_IOUT6
Definition ad552xr.h:363
@ AD552XR_MUX_OUT_TEMPSENS2
Definition ad552xr.h:376
@ AD552XR_MUX_OUT_TEMPSENS0
Definition ad552xr.h:374
@ AD552XR_MUX_OUT_IOUT7
Definition ad552xr.h:364
@ AD552XR_MUX_OUT_VOUT9
Definition ad552xr.h:350
@ AD552XR_MUX_OUT_IOUT11
Definition ad552xr.h:368
@ AD552XR_MUX_OUT_VOUT4
Definition ad552xr.h:345
@ AD552XR_MUX_OUT_VOUT0
Definition ad552xr.h:341
@ AD552XR_MUX_OUT_IOUT0
Definition ad552xr.h:357
@ AD552XR_MUX_OUT_VOUT8
Definition ad552xr.h:349
@ AD552XR_MUX_OUT_IOUT8
Definition ad552xr.h:365
@ AD552XR_MUX_OUT_IOUT13
Definition ad552xr.h:370
@ AD552XR_MUX_OUT_IOUT5
Definition ad552xr.h:362
@ AD552XR_MUX_OUT_VOUT2
Definition ad552xr.h:343
@ AD552XR_MUX_OUT_IOUT4
Definition ad552xr.h:361
@ AD552XR_MUX_OUT_VOUT6
Definition ad552xr.h:347
@ AD552XR_MUX_OUT_VOUT13
Definition ad552xr.h:354
@ AD552XR_MUX_OUT_HZ
Definition ad552xr.h:380
@ AD552XR_MUX_OUT_TEMPSENS3
Definition ad552xr.h:377
@ AD552XR_MUX_OUT_IOUT3
Definition ad552xr.h:360
@ AD552XR_MUX_OUT_VOUT12
Definition ad552xr.h:353
@ AD552XR_MUX_OUT_VOUT7
Definition ad552xr.h:348
@ AD552XR_MUX_OUT_IOUT14
Definition ad552xr.h:371
@ AD552XR_MUX_OUT_IOUT9
Definition ad552xr.h:366
@ AD552XR_MUX_OUT_VOUT11
Definition ad552xr.h:352
@ AD552XR_MUX_OUT_TEMPSENS1
Definition ad552xr.h:375
@ AD552XR_MUX_OUT_VOUT5
Definition ad552xr.h:346
ad552xr_function_mode
DAC Function modes.
Definition ad552xr.h:398
@ AD552XR_FUNCTION_MODE_TRIANGULAR
Definition ad552xr.h:406
@ AD552XR_FUNCTION_MODE_DITHER
Definition ad552xr.h:402
@ AD552XR_FUNCTION_MODE_SAWTOOTH
Definition ad552xr.h:404
@ AD552XR_FUNCTION_MODE_TOGGLE
Definition ad552xr.h:400
int ad552xr_hw_ldac_trigger(struct ad552xr_dev *dev, enum ad552xr_ldac_toggle_sel ldac_hw_sel, uint32_t delay_us)
Trigger the LDAC using hardware.
Definition ad552xr.c:779
ad552xr_dither_period
AD552XR list of dither function period settings.
Definition ad552xr.h:425
@ SAMPLES_32
Definition ad552xr.h:431
@ SAMPLES_2
Definition ad552xr.h:439
@ SAMPLES_16
Definition ad552xr.h:433
@ SAMPLES_64
Definition ad552xr.h:429
@ SAMPLES_4
Definition ad552xr.h:437
@ SAMPLES_8
Definition ad552xr.h:435
@ SAMPLES_128
Definition ad552xr.h:427
int ad552xr_spi_reg_write(struct ad552xr_dev *dev, uint32_t reg_addr, uint16_t reg_data)
Write to device.
Definition ad552xr.c:284
int ad552xr_set_reference(struct ad552xr_dev *dev, enum ad552xr_vref_select ref_sel)
Definition ad552xr.c:372
int ad552xr_func_mode_select(struct ad552xr_dev *dev, uint8_t ch, enum ad552xr_function_mode func_mode_sel)
Definition ad552xr.c:493
ad552xr_operating_mode
AD552XR hardware-software LDAC select options.
Definition ad552xr.h:303
@ NORMAL_HW
Definition ad552xr.h:309
@ SHUTDOWN_HW_W_GND
Definition ad552xr.h:308
@ NORMAL_SW
Definition ad552xr.h:306
@ SHUTDOWN_HW
Definition ad552xr.h:307
@ SHUTDOWN_SW_W_GND
Definition ad552xr.h:305
@ SHUTDOWN_SW
Definition ad552xr.h:304
int ad552xr_sw_ldac_trigger(struct ad552xr_dev *dev)
Trigger the LDAC using software.
Definition ad552xr.c:809
int ad552xr_spi_reg_read(struct ad552xr_dev *dev, uint32_t reg_addr, uint16_t *reg_data)
Read from device.
Definition ad552xr.c:225
int ad552xr_set_hw_sw_ldac(struct ad552xr_dev *dev, uint8_t ch, enum ad552xr_hw_sw_ldac ldac_mode_sel)
Definition ad552xr.c:614
ad552xr_dither_phase
AD552XR list of dither function phase settings.
Definition ad552xr.h:446
@ DEGREES_270
Definition ad552xr.h:454
@ DEGREES_90
Definition ad552xr.h:450
@ DEGREES_180
Definition ad552xr.h:452
@ DEGREES_0
Definition ad552xr.h:448
ad552xr_output_range
AD552XR list of output range.
Definition ad552xr.h:316
@ AD552XR_UNIPOLAR_10V
Definition ad552xr.h:320
@ AD552XR_BIPOLAR_5V
Definition ad552xr.h:326
@ AD552XR_UNIPOLAR_40V
Definition ad552xr.h:324
@ AD552XR_UNIPOLAR_5V
Definition ad552xr.h:318
@ AD552XR_BIPOLAR_10V
Definition ad552xr.h:328
@ AD552XR_UNIPOLAR_20V
Definition ad552xr.h:322
@ AD552XR_BIPOLAR_15V
Definition ad552xr.h:330
@ AD552XR_BIPOLAR_20V
Definition ad552xr.h:332
#define AD552XR_MAX_NUM_CH
Definition ad552xr.h:244
int ad552xr_remove(struct ad552xr_dev *dev)
Free the resources allocated by ad552xr_init().
Definition ad552xr.c:1078
ad552xr_vref_select
Voltage reference options.
Definition ad552xr.h:279
@ AD552XR_INTERNAL_VREF
Definition ad552xr.h:283
@ AD552XR_EXTERNAL_VREF
Definition ad552xr.h:281
int ad552xr_set_ramp_step_size(struct ad552xr_dev *dev, uint8_t ch, uint8_t step_size)
Definition ad552xr.c:586
int ad552xr_set_sync_async_ldac(struct ad552xr_dev *dev, uint8_t ch, bool is_sync)
Definition ad552xr.c:643
int ad552xr_hw_reset(struct ad552xr_dev *dev)
Perform hard reset.
Definition ad552xr.c:915
int ad552xr_set_ch_output_range(struct ad552xr_dev *dev, uint8_t ch, enum ad552xr_output_range range_sel)
Definition ad552xr.c:407
struct ad7616_init_param init_param
Definition ad7616_sdz.c:106
void delay_us(unsigned int usec)
Definition maxim_usb_uart.c:86
Header file of GPIO Interface.
Header file of SPI Interface.
AD552XR active device info.
Definition ad552xr.h:520
enum ad552xr_dac_resolution resolution
Definition ad552xr.h:524
enum ad552xr_num_channels num_channels
Definition ad552xr.h:526
enum ad552xr_type type
Definition ad552xr.h:522
AD552XR device descriptor.
Definition ad552xr.h:533
struct ad552xr_ldac_settings ldac_cfg
Definition ad552xr.h:555
uint8_t dev_addr
Definition ad552xr.h:557
struct no_os_gpio_desc * gpio_ldac_tgp[AD552XR_NUM_LDAC_TGP_PINS]
Definition ad552xr.h:545
struct no_os_gpio_desc * gpio_alarmb
Definition ad552xr.h:541
struct ad552xr_dev_info dev_info
Definition ad552xr.h:559
struct ad552xr_device_spi_settings spi_cfg
Definition ad552xr.h:553
enum ad552xr_vref_select vref
Definition ad552xr.h:551
struct no_os_spi_desc * spi_desc
Definition ad552xr.h:535
enum ad552xr_mux_out_select mux_out_sel
Definition ad552xr.h:561
struct no_os_gpio_desc * gpio_resetb
Definition ad552xr.h:537
struct no_os_gpio_desc * gpio_clearb
Definition ad552xr.h:539
struct no_os_gpio_desc * gpio_md_addr[AD552XR_NUM_MD_ADDR_LINES]
Definition ad552xr.h:543
enum ad552xr_operating_mode op_mode[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:547
enum ad552xr_output_range range[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:549
AD552XR device SPI settings.
Definition ad552xr.h:461
bool short_instr
Definition ad552xr.h:463
bool addr_asc
Definition ad552xr.h:462
uint8_t stream_mode_length
Definition ad552xr.h:466
bool single_instr
Definition ad552xr.h:464
bool stream_length_keep_value
Definition ad552xr.h:465
Structure holding the initialization parameters for AD552XR.
Definition ad552xr.h:568
struct ad552xr_ldac_settings ldac_cfg
Definition ad552xr.h:590
enum ad552xr_type type
Definition ad552xr.h:594
struct no_os_gpio_init_param * gpio_clearb
Definition ad552xr.h:574
enum ad552xr_operating_mode op_mode[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:582
enum ad552xr_vref_select vref
Definition ad552xr.h:586
struct no_os_gpio_init_param * gpio_ldac_tgp[AD552XR_NUM_LDAC_TGP_PINS]
Definition ad552xr.h:580
struct no_os_gpio_init_param * gpio_alarmb
Definition ad552xr.h:576
enum ad552xr_mux_out_select mux_out_sel
Definition ad552xr.h:596
struct ad552xr_device_spi_settings spi_cfg
Definition ad552xr.h:588
struct no_os_gpio_init_param * gpio_md_addr[AD552XR_NUM_MD_ADDR_LINES]
Definition ad552xr.h:578
struct no_os_spi_init_param * spi_init_prm
Definition ad552xr.h:570
enum ad552xr_output_range range[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:584
uint8_t dev_addr
Definition ad552xr.h:592
struct no_os_gpio_init_param * gpio_resetb
Definition ad552xr.h:572
AD552XR device LDAC settings.
Definition ad552xr.h:473
uint16_t func_en_mask
Definition ad552xr.h:475
enum ad552xr_ldac_toggle_sel toggle_sel[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:487
uint16_t multi_dac_ch_mask
Definition ad552xr.h:495
enum ad552xr_dither_phase dither_phase[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:491
uint16_t output_en_mask
Definition ad552xr.h:477
uint16_t ldac_sync_async_mask
Definition ad552xr.h:481
uint16_t ldac_hw_sw_mask
Definition ad552xr.h:483
uint8_t ramp_step[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:493
enum ad552xr_dither_period dither_period[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:489
enum ad552xr_function_mode func_mode[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:479
enum ad552xr_ldac_edge_trig edge_trig[AD552XR_MAX_NUM_CH]
Definition ad552xr.h:485
AD552XR transfer data structure.
Definition ad552xr.h:502
bool is_read
Definition ad552xr.h:510
uint8_t addr
Definition ad552xr.h:504
uint8_t * data
Definition ad552xr.h:506
uint32_t len
Definition ad552xr.h:508
struct ad552xr_device_spi_settings * spi_cfg
Definition ad552xr.h:512
Definition ad9361_util.h:63
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 SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128