42#define AD3530R_R1B (1ul << 16)
43#define AD3530R_R2B (2ul << 16)
44#define AD3530R_LEN(x) (x >> 16)
45#define AD3530R_ADDR(x) (x & 0xFFFF)
47#define AD3530R_MAX_REG_SIZE 2
48#define AD3530R_MAX_CHANNEL_OP_MODE_0 4
49#define AD3530R_MAX_SHORT_REG_ADDR (AD3530R_R1B | 0x80)
50#define AD3530R_READ_BIT NO_OS_BIT(7)
51#define AD3530R_ADDR_MASK (~AD3530R_READ_BIT)
52#define AD3530R_WRITE_BIT_LONG_INSTR 0x00
53#define AD3530R_EXTERNAL_VREF_MASK NO_OS_BIT(1)
54#define AD3530R_DEFAULT_STATUS_REG_VAL 0x04
55#define AD3530R_SCRATCH_PAD_TEST_VAL 0x34
56#define AD3530R_CRC_POLY 0x07
57#define AD3530R_CRC_SEED 0xA5
58#define AD3530R_REG_ADDR_OPERATING_MODE_CHN(x) (AD3530R_R1B | (0x20 + (((x) & 4) >> 2)))
62#define AD3530R_REG_ADDR_INTERFACE_CONFIG_A (AD3530R_R1B | 0x00)
63#define AD3530R_REG_ADDR_INTERFACE_CONFIG_B (AD3530R_R1B | 0x01)
64#define AD3530R_REG_ADDR_DEVICE_CONFIG (AD3530R_R1B | 0x02)
65#define AD3530R_REG_ADDR_CHIP_TYPE (AD3530R_R1B | 0x03)
66#define AD3530R_REG_ADDR_PRODUCT_ID_L (AD3530R_R1B | 0x04)
67#define AD3530R_REG_ADDR_PRODUCT_ID_H (AD3530R_R1B | 0x05)
68#define AD3530R_REG_ADDR_CHIP_GRADE (AD3530R_R1B | 0x06)
69#define AD3530R_REG_ADDR_SCRATCH_PAD (AD3530R_R1B | 0x0A)
70#define AD3530R_REG_ADDR_SPI_REVISION (AD3530R_R1B | 0x0B)
71#define AD3530R_REG_ADDR_VENDOR_L (AD3530R_R1B | 0x0C)
72#define AD3530R_REG_ADDR_VENDOR_H (AD3530R_R1B | 0x0D)
73#define AD3530R_REG_ADDR_STREAM_MODE (AD3530R_R1B | 0x0E)
74#define AD3530R_REG_ADDR_TRANSFER_REGISTER (AD3530R_R1B | 0x0F)
75#define AD3530R_REG_ADDR_INTERFACE_CONFIG_C (AD3530R_R1B | 0x10)
76#define AD3530R_REG_ADDR_INTERFACE_STATUS_A (AD3530R_R1B | 0x11)
77#define AD3530R_REG_ADDR_OPERATING_MODE_0 (AD3530R_R1B | 0x20)
78#define AD3530R_REG_ADDR_OPERATING_MODE_1 (AD3530R_R1B | 0x21)
79#define AD3530R_REG_ADDR_OUTPUT_CONTROL_0 (AD3530R_R1B | 0x2A)
80#define AD3530R_REG_ADDR_REF_CONTROL_0 (AD3530R_R1B | 0x3C)
81#define AD3530R_REG_ADDR_MUX_OUT_SELECT (AD3530R_R1B | 0x93)
82#define AD3530R_REG_ADDR_STATUS_CONTROL (AD3530R_R1B | 0xC2)
85#define AD3530R_REG_ADDR_HW_LDAC_EN_0 (AD3530R_R1B | 0xD0)
86#define AD3530R_REG_ADDR_SW_LDAC_EN_0 (AD3530R_R1B | 0xD1)
87#define AD3530R_REG_ADDR_DAC_CHN(x) (AD3530R_R2B | (0xD2 + (((x) & 7) << 1)))
88#define AD3530R_REG_ADDR_MULTI_DAC_CH (AD3530R_R2B | 0XE2)
89#define AD3530R_REG_ADDR_MULTI_DAC_SEL_0 (AD3530R_R1B | 0XE4)
90#define AD3530R_REG_ADDR_SW_LDAC_TRIG_A (AD3530R_R1B | 0XE5)
91#define AD3530R_REG_ADDR_MULTI_INPUT_CH (AD3530R_R2B | 0XE6)
92#define AD3530R_REG_ADDR_MULTI_INPUT_SEL_0 (AD3530R_R1B | 0XE8)
93#define AD3530R_REG_ADDR_SW_LDAC_TRIG_B (AD3530R_R1B | 0XE9)
94#define AD3530R_REG_ADDR_INPUT_CHN(x) (AD3530R_R2B | (0xEA + (((x) & 7) << 1)))
98#define AD3530R_MASK_SOFTWARE_RESET (NO_OS_BIT(7) | NO_OS_BIT(0))
99#define AD3530R_MASK_ADDR_ASCENSION NO_OS_BIT(5)
100#define AD3530R_MASK_SDO_ACTIVE NO_OS_BIT(4)
103#define AD3530R_MASK_SINGLE_INST NO_OS_BIT(7)
104#define AD3530R_MASK_SHORT_INSTRUCTION NO_OS_BIT(3)
107#define AD3530R_MASK_OPERATING_MODES NO_OS_GENMASK(1, 0)
110#define AD3530R_MASK_GRADE NO_OS_GENMASK(7, 4)
111#define AD3530R_MASK_DEVICE_REVISION NO_OS_GENMASK(3, 0)
114#define AD3530R_MASK_LENGTH 0xFF
117#define AD3530R_MASK_STREAM_LENGTH_KEEP_VALUE NO_OS_BIT(2)
120#define AD3530R_MASK_CRC_ENABLE (NO_OS_GENMASK(7, 6) | NO_OS_GENMASK(1, 0))
121#define AD3530R_MASK_STRICT_REGISTER_ACCESS NO_OS_BIT(5)
122#define AD3530R_MASK_ACTIVE_INTERFACE_MODE NO_OS_GENMASK(3, 2)
125#define AD3530R_MASK_INTERFACE_NOT_READY NO_OS_BIT(7)
126#define AD3530R_MASK_CLOCK_COUNTING_ERROR NO_OS_BIT(4)
127#define AD3530R_MASK_INVALID_OR_NO_CRC NO_OS_BIT(3)
128#define AD3530R_MASK_PARTIAL_REGISTER_ACCESS NO_OS_BIT(1)
131#define AD3530R_MASK_OPERATING_MODE(x) 0x03 << ((x % 4)*2)
134#define AD3530R_MASK_OUTPUT_RANGE NO_OS_BIT(2)
137#define AD3530R_MASK_REERENCE_SELECT NO_OS_BIT(0)
140#define AD3530R_MASK_MUX_SELECT NO_OS_GENMASK(4, 0)
143#define AD3530R_MASK_HW_LDAC_EN_0(x) NO_OS_BIT((x) & 7)
146#define AD3530R_MASK_SW_LDAC_EN_0(x) NO_OS_BIT((x) & 7)
149#define AD3530R_MASK_SW_LDAC_TRIG_B NO_OS_BIT(7)
152#define AD3530R_REG_ADDR_MAX 0xF9
153#define AD3530R_NUM_CH 8
154#define AD3530R_MASK_CH(ch) NO_OS_BIT(ch)
155#define AD3530R_LDAC_PULSE_US 1
156#define AD3530R_CH_DAC_DATA_LSB(x) ((x) & 0xFF)
157#define AD3530R_CH_DAC_DATA_MSB(x) ((x) >> 8 & 0xFF)
158#define AD3530R_CRC_ENABLE_VALUE (NO_OS_BIT(6) | NO_OS_BIT(1))
159#define AD3530R_CRC_DISABLE_VALUE (NO_OS_BIT(1) | NO_OS_BIT(0))
160#define AD3530R_NUM_MUX_OUT_SELECTS 27
161#define AD3530R_NUM_REGS 116
162#define AD3530R_CH_GRP(x) ((x) / 8)
165#define AD3531R_NUM_CH 4
166#define AD3531R_NUM_MUX_OUT_SELECTS 27
167#define AD3531R_REG_ADDR_MAX 0xE9
168#define AD3531R_CH_REG_OFFSET 8
171#define AD3532R_MASK_MUX_GRP_SELECT NO_OS_GENMASK(1, 0)
172#define AD3532R_NUM_CH 16
173#define AD3532R_NUM_MUX_OUT_SELECTS 54
174#define AD3532R_CH_REG_OFFSET 8
175#define AD3532R_REG_ADDR_MAX 0x30F9
178#define AD3532R_RS1 (1ul<<12)
180#define AD3532R_RS2 (3ul<<12)
182#define AD3532R_REG_ADDR_MUX_OUT_GROUP_SELECT (AD3530R_R1B | 0x1092)
183#define AD3532R_REG_ADDR_MUX_OUT_GROUP_SELECT_SET2 (AD3530R_R1B | 0x3092)
185#define AD353XR_MAX_NUM_CH 16
385 uint32_t addr, uint32_t mask, uint16_t val);
416 uint16_t dac_chn_mask,
int ad3530r_hw_ldac_trigger(struct ad3530r_desc *desc)
Trigger the LDAC using hardware.
Definition ad3530r.c:1007
int ad3530r_reg_write(struct ad3530r_desc *desc, uint32_t reg_addr, uint16_t reg_val)
Write into device register.
Definition ad3530r.c:326
ad3530r_write_mode
Write modes.
Definition ad3530r.h:266
@ AD3530R_WRITE_DAC_REGS
Definition ad3530r.h:268
@ AD3530R_WRITE_INPUT_REGS_AND_TRIGGER_LDAC
Definition ad3530r.h:272
@ AD3530R_WRITE_INPUT_REGS
Definition ad3530r.h:270
int ad3530r_reg_read(struct ad3530r_desc *desc, uint32_t reg_addr, uint16_t *reg_val)
Read from device register.
Definition ad3530r.c:444
ad3530r_mux_out_select
Signals to monitor on MUX_OUT pin.
Definition ad3530r.h:279
@ VOUT0
Definition ad3530r.h:281
@ TIED_TO_AGND_INTERNALLY
Definition ad3530r.h:306
@ IOUT0_SINK_MODE
Definition ad3530r.h:283
@ IOUT7_SINK_MODE
Definition ad3530r.h:304
@ VOUT5
Definition ad3530r.h:296
@ VOUT4
Definition ad3530r.h:293
@ IOUT5_SOURCE_MODE
Definition ad3530r.h:297
@ VOUT6
Definition ad3530r.h:299
@ VOUT7
Definition ad3530r.h:302
@ DIE_TEMPERATURE
Definition ad3530r.h:305
@ IOUT2_SINK_MODE
Definition ad3530r.h:289
@ IOUT4_SINK_MODE
Definition ad3530r.h:295
@ IOUT6_SOURCE_MODE
Definition ad3530r.h:300
@ IOUT3_SOURCE_MODE
Definition ad3530r.h:291
@ IOUT6_SINK_MODE
Definition ad3530r.h:301
@ IOUT2_SOURCE_MODE
Definition ad3530r.h:288
@ VOUT3
Definition ad3530r.h:290
@ POWERED_DOWN
Definition ad3530r.h:280
@ IOUT1_SOURCE_MODE
Definition ad3530r.h:285
@ IOUT5_SINK_MODE
Definition ad3530r.h:298
@ IOUT1_SINK_MODE
Definition ad3530r.h:286
@ IOUT7_SOURCE_MODE
Definition ad3530r.h:303
@ VOUT2
Definition ad3530r.h:287
@ VOUT1
Definition ad3530r.h:284
@ IOUT0_SOURCE_MODE
Definition ad3530r.h:282
@ IOUT4_SOURCE_MODE
Definition ad3530r.h:294
@ IOUT3_SINK_MODE
Definition ad3530r.h:292
ad3532r_mux_out_grp_select
Mux out group select options.
Definition ad3530r.h:210
@ GRP_SELECT_0
Definition ad3530r.h:211
@ GRP_SELECT_1
Definition ad3530r.h:212
ad3530r_id
Device IDs.
Definition ad3530r.h:191
@ AD3531R_ID
Definition ad3530r.h:193
@ AD3532R_ID
Definition ad3530r.h:194
@ AD3530R_ID
Definition ad3530r.h:192
int ad3530r_set_hw_ldac(struct ad3530r_desc *desc, uint16_t mask_hw_ldac)
Definition ad3530r.c:782
ad3530r_operating_mode
Operating modes.
Definition ad3530r.h:255
@ AD3530R_CH_OPERATING_MODE_3
Definition ad3530r.h:259
@ AD3530R_CH_OPERATING_MODE_1
Definition ad3530r.h:257
@ AD3530R_CH_OPERATING_MODE_2
Definition ad3530r.h:258
@ AD3530R_CH_OPERATING_MODE_0
Definition ad3530r.h:256
int ad3530r_set_crc_enable(struct ad3530r_desc *desc, bool en_di)
Definition ad3530r.c:680
int ad3530r_set_sw_ldac(struct ad3530r_desc *desc, uint16_t mask_sw_ldac)
Definition ad3530r.c:810
ad3530r_ch_vref_select
Channel voltage reference options.
Definition ad3530r.h:219
@ AD3530R_EXTERNAL_VREF_PIN_INPUT
Definition ad3530r.h:221
@ AD3530R_INTERNAL_VREF_PIN_2P5V
Definition ad3530r.h:223
#define AD3532R_NUM_CH
Definition ad3530r.h:172
int ad3530r_set_reference(struct ad3530r_desc *desc, enum ad3530r_ch_vref_select reference_selector)
Definition ad3530r.c:600
int ad3530r_sw_ldac_trigger(struct ad3530r_desc *desc)
Trigger the LDAC using software.
Definition ad3530r.c:979
int ad3530r_set_multidac_value(struct ad3530r_desc *desc, uint16_t dac_value, uint16_t dac_chn_mask, enum ad3530r_write_mode write_mode)
Definition ad3530r.c:901
int ad3532r_set_mux_out_grp_select(struct ad3530r_desc *desc, enum ad3532r_mux_out_grp_select grp_sel)
Definition ad3530r.c:710
int ad3530r_set_dac_value(struct ad3530r_desc *desc, uint16_t dac_value, uint8_t dac_channel, enum ad3530r_write_mode write_mode)
Definition ad3530r.c:840
int ad3530r_init(struct ad3530r_desc **desc, struct ad3530r_init_param *init_param)
Initialize the device structure.
Definition ad3530r.c:1173
ad3530r_status
Definition ad3530r.h:226
@ AD3530R_INVALID_OR_NO_CRC
Definition ad3530r.h:235
@ AD3530R_INTERFACE_NOT_READY
Definition ad3530r.h:229
@ AD3530R_DEVICE_NOT_READY
Definition ad3530r.h:228
@ AD3530R_DEVICE_NOT_READY_ERR
Definition ad3530r.h:237
@ AD3530R_CLOCK_COUNTING_ERROR
Definition ad3530r.h:236
@ AD3530R_RESET_STATUS
Definition ad3530r.h:230
@ AD3530R_PARTIAL_REGISTER_ACCESS
Definition ad3530r.h:234
@ AD3530R_DAC_UPDATE_STATUS
Definition ad3530r.h:231
int ad3530r_set_output_range(struct ad3530r_desc *desc, enum ad3530r_ch_output_range range_sel, enum ad3530r_ch_sel chan_sel)
Definition ad3530r.c:657
uint32_t get_reg_addr(struct ad3530r_desc *desc, uint32_t addr, enum ad3530r_ch_sel ch_sel)
Get adjusted register address based on the chip id selected.
Definition ad3530r.c:73
int ad3530r_multiple_reg_read(struct ad3530r_desc *desc, uint32_t addr, uint8_t buff_len, uint8_t *buff)
Read multiple register's values.
Definition ad3530r.c:532
int ad3530r_set_mux_out_select(struct ad3530r_desc *desc, enum ad3530r_mux_out_select mux_output_sel)
Definition ad3530r.c:758
int ad3530r_remove(struct ad3530r_desc *desc)
Free the device descriptor.
Definition ad3530r.c:1278
int ad3530r_multiple_reg_write(struct ad3530r_desc *desc, uint32_t start_addr, uint8_t buff_len, uint8_t *buff)
Write multiple register's values.
Definition ad3530r.c:397
int ad3530r_reset(struct ad3530r_desc *desc)
Perform a hard/soft reset.
Definition ad3530r.c:1032
ad3530r_ch_sel
Channel select options.
Definition ad3530r.h:201
@ CH_8_TO_15
Definition ad3530r.h:203
@ CH_0_TO_7
Definition ad3530r.h:202
int ad3530r_set_operating_mode(struct ad3530r_desc *desc, uint8_t chn_num, enum ad3530r_operating_mode chn_op_mode)
Definition ad3530r.c:625
ad3530r_ch_output_range
Channel output range options.
Definition ad3530r.h:244
@ AD3530R_CH_OUTPUT_RANGE_0_VREF
Definition ad3530r.h:246
@ AD3530R_CH_OUTPUT_RANGE_0_2VREF
Definition ad3530r.h:248
int ad3530r_update_interface_cfg(struct ad3530r_desc *desc, struct ad3530r_transfer_config *cfg)
Updates the interface configuration.
Definition ad3530r.c:120
int ad3530r_spi_write_mask(struct ad3530r_desc *desc, uint32_t addr, uint32_t mask, uint16_t val)
SPI write to device using a mask.
Definition ad3530r.c:579
struct ad7616_init_param init_param
Definition ad7616_sdz.c:106
Header file of CRC-8 computation.
#define NO_OS_CRC8_TABLE_SIZE
Definition no_os_crc8.h:39
Header file of GPIO Interface.
Header file of SPI Interface.
Header file of utility functions.
uint8_t crc_table[NO_OS_CRC8_TABLE_SIZE]
Definition ad3530r.h:352
enum ad3530r_id chip_id
Definition ad3530r.h:341
enum ad3530r_operating_mode chn_op_mode[AD3532R_NUM_CH]
Definition ad3530r.h:347
uint16_t hw_ldac_mask
Definition ad3530r.h:349
enum ad3530r_mux_out_select mux_out_sel
Definition ad3530r.h:353
uint16_t sw_ldac_mask
Definition ad3530r.h:350
uint32_t reg_offset[2]
Definition ad3530r.h:356
struct no_os_spi_desc * spi
Definition ad3530r.h:343
enum ad3530r_ch_vref_select vref_enable
Definition ad3530r.h:346
enum ad3530r_ch_output_range range
Definition ad3530r.h:348
uint8_t num_reg_sets
Definition ad3530r.h:354
struct no_os_gpio_desc * ldac
Definition ad3530r.h:344
struct ad3530r_transfer_config spi_cfg
Definition ad3530r.h:342
struct no_os_gpio_desc * reset
Definition ad3530r.h:345
uint8_t crc_en
Definition ad3530r.h:351
uint8_t num_chans
Definition ad3530r.h:355
uint16_t hw_ldac_mask
Definition ad3530r.h:371
struct ad3530r_transfer_config spi_cfg
Definition ad3530r.h:361
uint8_t crc_en
Definition ad3530r.h:374
struct no_os_spi_init_param * spi_param
Definition ad3530r.h:362
enum ad3530r_operating_mode chn_op_mode[AD3532R_NUM_CH]
Definition ad3530r.h:369
enum ad3530r_ch_vref_select vref_enable
Definition ad3530r.h:368
enum ad3530r_id chip_id
Definition ad3530r.h:360
enum ad3530r_ch_output_range range
Definition ad3530r.h:370
struct no_os_gpio_init_param * ldac_gpio_param_optional
Definition ad3530r.h:366
uint16_t sw_ldac_mask
Definition ad3530r.h:372
struct no_os_gpio_init_param * reset_gpio_param_optional
Definition ad3530r.h:364
enum ad3530r_mux_out_select mux_out_sel
Definition ad3530r.h:375
uint8_t single_instr
Definition ad3530r.h:316
uint8_t addr_asc
Definition ad3530r.h:314
uint8_t short_instr
Definition ad3530r.h:318
uint8_t stream_length_keep_value
Definition ad3530r.h:323
uint8_t stream_mode_length
Definition ad3530r.h:312
struct ad3530r_transfer_config * spi_cfg
Definition ad3530r.h:336
uint32_t len
Definition ad3530r.h:332
uint8_t * data
Definition ad3530r.h:330
uint8_t is_read
Definition ad3530r.h:334
uint16_t addr
Definition ad3530r.h:328
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