53#define AD5710R_R1B (1ul << 16)
54#define AD5710R_R2B (2ul << 16)
55#define AD5710R_LEN(x) (x >> 16)
56#define AD5710R_ADDR(x) (x & 0xFFFF)
57#define AD5710R_MD_ADDR_MASK NO_OS_GENMASK(1, 0)
58#define AD5710R_MD_ADDR(x) ((x & AD5710R_MD_ADDR_MASK) << 4)
60#define AD5710R_MAX_REG_SIZE 2
61#define AD5710R_MAX_CHANNEL_OP_MODE_0 2
62#define AD5710R_MAX_SHORT_REG_ADDR (AD5710R_R1B | 0x80)
63#define AD5710R_READ_BIT NO_OS_BIT(7)
64#define AD5710R_ADDR_MASK (~AD5710R_READ_BIT)
65#define AD5710R_WRITE_BIT_LONG_INSTR 0x00
66#define AD5710R_EXTERNAL_VREF_MASK NO_OS_BIT(1)
67#define AD5710R_DEFAULT_STATUS_REG_VAL 0x04
68#define AD5710R_SCRATCH_PAD_TEST_VAL 0x34
69#define AD5710R_CRC_POLY 0x07
70#define AD5710R_CRC_SEED 0xA5
71#define AD5710R_REG_ADDR_OPERATING_MODE_CHN(x) (AD5710R_R1B | (0x20 + x/4))
75#define AD5710R_REG_ADDR_INTERFACE_CONFIG_A (AD5710R_R1B | 0x00)
76#define AD5710R_REG_ADDR_INTERFACE_CONFIG_B (AD5710R_R1B | 0x01)
77#define AD5710R_REG_ADDR_DEVICE_CONFIG (AD5710R_R1B | 0x02)
78#define AD5710R_REG_ADDR_CHIP_TYPE (AD5710R_R1B | 0x03)
79#define AD5710R_REG_ADDR_PRODUCT_ID_L (AD5710R_R1B | 0x04)
80#define AD5710R_REG_ADDR_PRODUCT_ID_H (AD5710R_R1B | 0x05)
81#define AD5710R_REG_ADDR_CHIP_GRADE (AD5710R_R1B | 0x06)
82#define AD5710R_REG_ADDR_SCRATCH_PAD (AD5710R_R1B | 0x0A)
83#define AD5710R_REG_ADDR_SPI_REVISION (AD5710R_R1B | 0x0B)
84#define AD5710R_REG_ADDR_VENDOR_L (AD5710R_R1B | 0x0C)
85#define AD5710R_REG_ADDR_VENDOR_H (AD5710R_R1B | 0x0D)
86#define AD5710R_REG_ADDR_STREAM_MODE (AD5710R_R1B | 0x0E)
87#define AD5710R_REG_ADDR_TRANSFER_REGISTER (AD5710R_R1B | 0x0F)
88#define AD5710R_REG_ADDR_INTERFACE_CONFIG_C (AD5710R_R1B | 0x10)
89#define AD5710R_REG_ADDR_INTERFACE_STATUS_A (AD5710R_R1B | 0x11)
90#define AD5710R_REG_ADDR_OPERATING_MODE_0 (AD5710R_R1B | 0x20)
91#define AD5710R_REG_ADDR_OPERATING_MODE_1 (AD5710R_R1B | 0x21)
92#define AD5710R_REG_ADDR_OUTPUT_CONTROL_0 (AD5710R_R1B | 0x2A)
93#define AD5710R_REG_ADDR_REF_CONTROL_0 (AD5710R_R1B | 0x3C)
94#define AD5710R_REG_ADDR_MUX_OUT_SELECT (AD5710R_R1B | 0x93)
95#define AD5710R_REG_ADDR_STATUS_CONTROL (AD5710R_R1B | 0xC2)
98#define AD5710R_REG_ADDR_HW_LDAC_EN_0 (AD5710R_R1B | 0xD0)
99#define AD5710R_REG_ADDR_SW_LDAC_EN_0 (AD5710R_R1B | 0xD1)
100#define AD5710R_REG_ADDR_DAC_CHN(x) (AD5710R_R2B | (0xD2 + (x * 2)))
101#define AD5710R_REG_ADDR_MULTI_DAC_CH (AD5710R_R2B | 0XE2)
102#define AD5710R_REG_ADDR_MULTI_DAC_SEL_0 (AD5710R_R1B | 0XE4)
103#define AD5710R_REG_ADDR_SW_LDAC_TRIG_A (AD5710R_R1B | 0XE5)
104#define AD5710R_REG_ADDR_MULTI_INPUT_CH (AD5710R_R2B | 0XE6)
105#define AD5710R_REG_ADDR_MULTI_INPUT_SEL_0 (AD5710R_R1B | 0XE8)
106#define AD5710R_REG_ADDR_SW_LDAC_TRIG_B (AD5710R_R1B | 0XE9)
107#define AD5710R_REG_ADDR_INPUT_CHN(x) (AD5710R_R2B | (0xEA + (x * 2)))
108#define AD5710R_V_I_CH_OUTPUT_SELECT (AD5710R_R1B | 0xFF)
112#define AD5710R_MASK_SOFTWARE_RESET (NO_OS_BIT(7) | NO_OS_BIT(0))
113#define AD5710R_MASK_ADDR_ASCENSION NO_OS_BIT(5)
114#define AD5710R_MASK_SDO_ACTIVE NO_OS_BIT(4)
117#define AD5710R_MASK_SINGLE_INST NO_OS_BIT(7)
118#define AD5710R_MASK_SHORT_INSTRUCTION NO_OS_BIT(3)
121#define AD5710R_MASK_OPERATING_MODES NO_OS_GENMASK(1, 0)
124#define AD5710R_MASK_GRADE NO_OS_GENMASK(7, 4)
125#define AD5710R_MASK_DEVICE_REVISION NO_OS_GENMASK(3, 0)
128#define AD5710R_MASK_LENGTH 0xFF
131#define AD5710R_MASK_STREAM_LENGTH_KEEP_VALUE NO_OS_BIT(2)
134#define AD5710R_MASK_CRC_ENABLE (NO_OS_GENMASK(7, 6) | NO_OS_GENMASK(1, 0))
135#define AD5710R_MASK_STRICT_REGISTER_ACCESS NO_OS_BIT(5)
136#define AD5710R_MASK_ACTIVE_INTERFACE_MODE NO_OS_GENMASK(3, 2)
139#define AD5710R_MASK_INTERFACE_NOT_READY NO_OS_BIT(7)
140#define AD5710R_MASK_CLOCK_COUNTING_ERROR NO_OS_BIT(4)
141#define AD5710R_MASK_INVALID_OR_NO_CRC NO_OS_BIT(3)
142#define AD5710R_MASK_PARTIAL_REGISTER_ACCESS NO_OS_BIT(1)
145#define AD5710R_MASK_OPERATING_MODE(x) 0x03 << ((x % 4)*2)
148#define AD5710R_MASK_OUTPUT_RANGE NO_OS_BIT(2)
151#define AD5710R_MASK_REERENCE_SELECT NO_OS_BIT(0)
154#define AD5710R_MASK_MUX_SELECT NO_OS_GENMASK(4, 0)
157#define AD5710R_MASK_HW_LDAC_EN_0(x) NO_OS_BIT(x)
160#define AD5710R_MASK_SW_LDAC_EN_0(x) NO_OS_BIT(x)
163#define AD5710R_MASK_SW_LDAC_TRIG_B NO_OS_BIT(7)
166#define AD5710R_REG_ADDR_MAX 0xFF
167#define AD5710R_NUM_CH 8
168#define AD5710R_MASK_CH(ch) NO_OS_BIT(ch)
169#define AD5710R_LDAC_PULSE_US 1
170#define AD5710R_CH_DAC_DATA_LSB(x) ((x) & 0xFF)
171#define AD5710R_CH_DAC_DATA_MSB(x) ((x) >> 8 & 0xFF)
172#define AD5710R_CRC_ENABLE_VALUE (NO_OS_BIT(6) | NO_OS_BIT(1))
173#define AD5710R_CRC_DISABLE_VALUE (NO_OS_BIT(1) | NO_OS_BIT(0))
174#define AD5710R_NUM_MUX_OUT_SELECTS 27
175#define AD5710R_NUM_REGS 46
376 uint32_t addr, uint32_t mask, uint16_t val);
405 uint8_t dac_chn_mask,
@ VOUT0
Definition ad3530r.h:254
@ TIED_TO_AGND_INTERNALLY
Definition ad3530r.h:279
@ IOUT0_SINK_MODE
Definition ad3530r.h:256
@ IOUT7_SINK_MODE
Definition ad3530r.h:277
@ VOUT5
Definition ad3530r.h:269
@ VOUT4
Definition ad3530r.h:266
@ IOUT5_SOURCE_MODE
Definition ad3530r.h:270
@ VOUT6
Definition ad3530r.h:272
@ VOUT7
Definition ad3530r.h:275
@ DIE_TEMPERATURE
Definition ad3530r.h:278
@ IOUT2_SINK_MODE
Definition ad3530r.h:262
@ IOUT4_SINK_MODE
Definition ad3530r.h:268
@ IOUT6_SOURCE_MODE
Definition ad3530r.h:273
@ IOUT3_SOURCE_MODE
Definition ad3530r.h:264
@ IOUT6_SINK_MODE
Definition ad3530r.h:274
@ IOUT2_SOURCE_MODE
Definition ad3530r.h:261
@ VOUT3
Definition ad3530r.h:263
@ POWERED_DOWN
Definition ad3530r.h:253
@ IOUT1_SOURCE_MODE
Definition ad3530r.h:258
@ IOUT5_SINK_MODE
Definition ad3530r.h:271
@ IOUT1_SINK_MODE
Definition ad3530r.h:259
@ IOUT7_SOURCE_MODE
Definition ad3530r.h:276
@ VOUT2
Definition ad3530r.h:260
@ VOUT1
Definition ad3530r.h:257
@ IOUT0_SOURCE_MODE
Definition ad3530r.h:255
@ IOUT4_SOURCE_MODE
Definition ad3530r.h:267
@ IOUT3_SINK_MODE
Definition ad3530r.h:265
int ad5710r_set_operating_mode(struct ad5710r_desc *desc, uint8_t chn_num, enum ad5710r_operating_mode chn_op_mode)
Set operating mode for each channel.
Definition ad5710r.c:588
int ad5710r_set_reference(struct ad5710r_desc *desc, enum ad5710r_ch_vref_select reference_selector)
Set reference configuration.
Definition ad5710r.c:564
int ad5710r_set_hw_ldac(struct ad5710r_desc *desc, uint8_t mask_hw_ldac)
Set the hardware ldac configuration.
Definition ad5710r.c:682
ad5710r_mux_out_select
Signals to monitor on MUX_OUT pin.
Definition ad5710r.h:267
#define AD5710R_NUM_CH
Definition ad5710r.h:167
int ad5710r_reset(struct ad5710r_desc *desc)
Perform a hard/soft reset.
Definition ad5710r.c:877
int ad5710r_update_interface_cfg(struct ad5710r_desc *desc, struct ad5710r_transfer_config *cfg)
Updates the interface configuration.
Definition ad5710r.c:85
int ad5710r_hw_ldac_trigger(struct ad5710r_desc *desc)
Trigger the LDAC using hardware.
Definition ad5710r.c:852
ad5710r_operating_mode
Operating modes.
Definition ad5710r.h:243
@ AD5710R_CH_OPERATING_MODE_1
Definition ad5710r.h:245
@ AD5710R_CH_OPERATING_MODE_3
Definition ad5710r.h:247
@ AD5710R_CH_OPERATING_MODE_2
Definition ad5710r.h:246
@ AD5710R_CH_OPERATING_MODE_0
Definition ad5710r.h:244
int ad5710r_set_mux_out_select(struct ad5710r_desc *desc, enum ad5710r_mux_out_select mux_output_sel)
Set the multiplexer output select register.
Definition ad5710r.c:661
int ad5710r_multiple_reg_read(struct ad5710r_desc *desc, uint32_t addr, uint8_t buff_len, uint8_t *buff)
Read multiple register's values.
Definition ad5710r.c:496
int ad5710r_reg_write(struct ad5710r_desc *desc, uint32_t reg_addr, uint16_t reg_val)
Write into device register.
Definition ad5710r.c:290
int ad5710r_sw_ldac_trigger(struct ad5710r_desc *desc)
Trigger the LDAC using software.
Definition ad5710r.c:835
ad5710r_ch_mode_select
Channel Mode selects.
Definition ad5710r.h:194
@ VMODE
Definition ad5710r.h:196
@ IMODE
Definition ad5710r.h:195
int ad5710r_set_multidac_value(struct ad5710r_desc *desc, uint16_t dac_value, uint8_t dac_chn_mask, enum ad5710r_write_mode write_mode)
Sets dac value for multiple channels.
Definition ad5710r.c:778
ad5710r_write_mode
Write modes.
Definition ad5710r.h:254
@ AD5710R_WRITE_INPUT_REGS_AND_TRIGGER_LDAC
Definition ad5710r.h:260
@ AD5710R_WRITE_INPUT_REGS
Definition ad5710r.h:258
@ AD5710R_WRITE_DAC_REGS
Definition ad5710r.h:256
int ad5710r_multiple_reg_write(struct ad5710r_desc *desc, uint32_t start_addr, uint8_t buff_len, uint8_t *buff)
Write multiple register's values.
Definition ad5710r.c:361
int ad5710r_set_sw_ldac(struct ad5710r_desc *desc, uint8_t mask_sw_ldac)
Set the software ldac configuration.
Definition ad5710r.c:702
int ad5710r_spi_write_mask(struct ad5710r_desc *desc, uint32_t addr, uint32_t mask, uint16_t val)
SPI write to device using a mask.
Definition ad5710r.c:543
int ad5710r_reg_read(struct ad5710r_desc *desc, uint32_t reg_addr, uint16_t *reg_val)
Read from device register.
Definition ad5710r.c:408
ad5710r_ch_vref_select
Channel voltage reference options.
Definition ad5710r.h:203
@ AD5710R_INTERNAL_VREF_PIN_2P5V
Definition ad5710r.h:207
@ AD5710R_EXTERNAL_VREF_PIN_INPUT
Definition ad5710r.h:205
int ad5710r_remove(struct ad5710r_desc *desc)
Free the device descriptor.
Definition ad5710r.c:1139
int ad5710r_set_dac_value(struct ad5710r_desc *desc, uint16_t dac_value, uint8_t dac_channel, enum ad5710r_write_mode write_mode)
Set dac value based on the user selected DAC update mode.
Definition ad5710r.c:724
int ad5710r_init(struct ad5710r_desc **desc, struct ad5710r_init_param *init_param)
Initialize the device structure.
Definition ad5710r.c:1019
ad5710r_id
Device IDs.
Definition ad5710r.h:181
@ AD5710R_ID
Definition ad5710r.h:182
ad5710r_status
Status bits.
Definition ad5710r.h:214
@ AD5710R_INVALID_OR_NO_CRC
Definition ad5710r.h:223
@ AD5710R_PARTIAL_REGISTER_ACCESS
Definition ad5710r.h:222
@ AD5710R_INTERFACE_NOT_READY
Definition ad5710r.h:217
@ AD5710R_DEVICE_NOT_READY_ERR
Definition ad5710r.h:225
@ AD5710R_CLOCK_COUNTING_ERROR
Definition ad5710r.h:224
@ AD5710R_DAC_UPDATE_STATUS
Definition ad5710r.h:219
@ AD5710R_DEVICE_NOT_READY
Definition ad5710r.h:216
@ AD5710R_RESET_STATUS
Definition ad5710r.h:218
ad5710r_ch_output_range
Channel output range options.
Definition ad5710r.h:232
@ AD5710R_CH_OUTPUT_RANGE_0_2VREF
Definition ad5710r.h:236
@ AD5710R_CH_OUTPUT_RANGE_0_VREF
Definition ad5710r.h:234
int ad5710r_set_output_range(struct ad5710r_desc *desc, enum ad5710r_ch_output_range range_sel)
Set output range for all channels.
Definition ad5710r.c:616
ad5710r_product_id
Definition ad5710r.h:186
@ PROD_ID_AD5710R
Definition ad5710r.h:187
int ad5710r_set_crc_enable(struct ad5710r_desc *desc, bool en_di)
Configures the CRC selection bit.
Definition ad5710r.c:638
int ad5710r_channel_output_select(struct ad5710r_desc *desc, uint8_t chn_num, enum ad5710r_ch_mode_select ch_mode)
Selects the output mode for a specific channel of the AD5710R DAC.
Definition ad5710r.c:958
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
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.
struct no_os_spi_desc * spi
Definition ad5710r.h:331
uint8_t crc_table[NO_OS_CRC8_TABLE_SIZE]
Definition ad5710r.h:340
struct no_os_gpio_desc * reset
Definition ad5710r.h:333
enum ad5710r_ch_output_range range
Definition ad5710r.h:336
uint8_t crc_en
Definition ad5710r.h:339
struct ad5710r_transfer_config spi_cfg
Definition ad5710r.h:330
uint8_t hw_ldac_mask
Definition ad5710r.h:337
enum ad5710r_mux_out_select mux_out_sel
Definition ad5710r.h:341
struct no_os_gpio_desc * ldac
Definition ad5710r.h:332
enum ad5710r_operating_mode chn_op_mode[AD5710R_NUM_CH]
Definition ad5710r.h:335
uint8_t sw_ldac_mask
Definition ad5710r.h:338
uint8_t dev_addr
Definition ad5710r.h:342
enum ad5710r_ch_vref_select vref_enable
Definition ad5710r.h:334
enum ad5710r_id chip_id
Definition ad5710r.h:329
enum ad5710r_ch_output_range range
Definition ad5710r.h:356
uint8_t dev_addr
Definition ad5710r.h:363
uint8_t crc_en
Definition ad5710r.h:360
uint8_t hw_ldac_mask
Definition ad5710r.h:357
enum ad5710r_id chip_id
Definition ad5710r.h:346
enum ad5710r_ch_vref_select vref_enable
Definition ad5710r.h:354
enum ad5710r_mux_out_select mux_out_sel
Definition ad5710r.h:361
uint8_t sw_ldac_mask
Definition ad5710r.h:358
struct ad5710r_transfer_config spi_cfg
Definition ad5710r.h:347
enum ad5710r_operating_mode chn_op_mode[AD5710R_NUM_CH]
Definition ad5710r.h:355
struct no_os_gpio_init_param * reset_gpio_param_optional
Definition ad5710r.h:350
struct no_os_gpio_init_param * ldac_gpio_param_optional
Definition ad5710r.h:352
struct no_os_spi_init_param * spi_param
Definition ad5710r.h:348
uint8_t stream_mode_length
Definition ad5710r.h:300
uint8_t short_instr
Definition ad5710r.h:306
uint8_t stream_length_keep_value
Definition ad5710r.h:311
uint8_t addr_asc
Definition ad5710r.h:302
uint8_t single_instr
Definition ad5710r.h:304
uint8_t is_read
Definition ad5710r.h:322
uint32_t len
Definition ad5710r.h:320
struct ad5710r_transfer_config * spi_cfg
Definition ad5710r.h:324
uint8_t * data
Definition ad5710r.h:318
uint16_t addr
Definition ad5710r.h:316
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