no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ad5761r.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#include <stdint.h>
35#include "no_os_gpio.h"
36#include "no_os_spi.h"
37
38#ifndef AD5761R_H_
39#define AD5761R_H_
40
41/* Input Shift Register Format */
42#define AD5761R_INPUT_ZERO_BIT (1 << 20)
43#define AD5761R_INPUT_ADDR_CMD(x) (((x) & 0xF) << 16)
44#define AD5761R_INPUT_DATA(x) (((x) & 0xFFFF) << 0)
45
46#define AD5761R_DATA(x) (((x) & 0xFFFF) << 0)
47#define AD5721R_DATA(x) (((x) & 0xFFF) << 4)
48
49/* Input Shift Register Commands */
50#define CMD_NOP 0x0
51#define CMD_WR_TO_INPUT_REG 0x1
52#define CMD_UPDATE_DAC_REG 0x2
53#define CMD_WR_UPDATE_DAC_REG 0x3
54#define CMD_WR_CTRL_REG 0x4
55#define CMD_NOP_ALT_1 0x5
56#define CMD_NOP_ALT_2 0x6
57#define CMD_SW_DATA_RESET 0x7
58#define CMD_RESERVED 0x8
59#define CMD_DIS_DAISY_CHAIN 0x9
60#define CMD_RD_INPUT_REG 0xA
61#define CMD_RD_DAC_REG 0xB
62#define CMD_RD_CTRL_REG 0xC
63#define CMD_NOP_ALT_3 0xD
64#define CMD_NOP_ALT_4 0xE
65#define CMD_SW_FULL_RESET 0xF
66
67/* Control Register Format */
68#define AD5761R_CTRL_SC (1 << 12) // RO
69#define AD5761R_CTRL_BO (1 << 11) // RO
70#define AD5761R_CTRL_CV(x) (((x) & 0x3) << 9) // RW
71#define AD5761R_CTRL_OVR (1 << 8) // RW
72#define AD5761R_CTRL_B2C (1 << 7) // RW
73#define AD5761R_CTRL_ETS (1 << 6) // RW
74#define AD5761R_CTRL_IRO (1 << 5) // RW
75#define AD5761R_CTRL_PV(x) (((x) & 0x3) << 3) // RW
76#define AD5761R_CTRL_RA(x) (((x) & 0x7) << 0) // RW
77
78/* Disable Daisy-Chain Register Format */
79#define AD5761R_DIS_DAISY_CHAIN_DDC(x) (((x) & 0x1) << 0)
80
85
91
97
108
130
152
153/* Initialize the device. */
154int32_t ad5761r_init(struct ad5761r_dev **device,
156/* Free the resources allocated by ad5761r_init(). */
157int32_t ad5761r_remove(struct ad5761r_dev *dev);
158/* SPI write to device. */
159int32_t ad5761r_write(struct ad5761r_dev *dev,
160 uint8_t reg_addr_cmd,
161 uint16_t reg_data);
162/* SPI read from device. */
163int32_t ad5761r_read(struct ad5761r_dev *dev,
164 uint8_t reg_addr_cmd,
165 uint16_t *reg_data);
166/* Readback the register data. */
167int32_t ad5761r_register_readback(struct ad5761r_dev *dev,
168 enum ad5761r_reg reg,
169 uint16_t *reg_data);
170/* Configure the part based on the settings stored in the device structure. */
171int32_t ad5761r_config(struct ad5761r_dev *dev);
172/* Enable/disable daisy-chain mode. */
174 bool en_dis);
175/* Get the status of the daisy-chain mode. */
177 bool *en_dis);
178/* Set the output_range. */
179int32_t ad5761r_set_output_range(struct ad5761r_dev *dev,
180 enum ad5761r_range out_range);
181/* Get the output_range. */
182int32_t ad5761r_get_output_range(struct ad5761r_dev *dev,
183 enum ad5761r_range *out_range);
184/* Set the power up voltage. */
185int32_t ad5761r_set_power_up_voltage(struct ad5761r_dev *dev,
186 enum ad5761r_scale pv);
187/* Get the power up voltage. */
188int32_t ad5761r_get_power_up_voltage(struct ad5761r_dev *dev,
189 enum ad5761r_scale *pv);
190/* Set the clear voltage. */
191int32_t ad5761r_set_clear_voltage(struct ad5761r_dev *dev,
192 enum ad5761r_scale cv);
193/* Get the clear voltage. */
194int32_t ad5761r_get_clear_voltage(struct ad5761r_dev *dev,
195 enum ad5761r_scale *cv);
196/* Enable/disable internal reference. */
198 bool en_dis);
199/* Get the status of the internal reference. */
201 bool *en_dis);
202/* Enable/disable ETS (exceed temperature shutdown) function. */
204 bool en_dis);
205/* Get the status of the ETS (exceed temperature shutdown) function. */
207 bool *en_dis);
208/* Enable/disable the twos complement bipolar output range. */
210 bool en_dis);
211/* Get the status of the twos complement bipolar output range. */
213 bool *en_dis);
214/* Enable/disable the 5% overrange. */
215int32_t ad5761r_set_overrange_en_dis(struct ad5761r_dev *dev,
216 bool en_dis);
217/* Get the status of the 5% overrange. */
218int32_t ad5761r_get_overrange_en_dis(struct ad5761r_dev *dev,
219 bool *en_dis);
220/* Get the short-circuit condition. */
222 bool *sc);
223/* Get the brownout condition. */
225 bool *bo);
226/* Set the reset pin value. */
227int32_t ad5761r_set_reset_pin(struct ad5761r_dev *dev,
228 uint8_t value);
229/* Get the reset pin value. */
230int32_t ad5761r_get_reset_pin(struct ad5761r_dev *dev,
231 uint8_t *value);
232/* Set the clr pin value. */
233int32_t ad5761r_set_clr_pin(struct ad5761r_dev *dev,
234 uint8_t value);
235/* Get the clr pin value. */
236int32_t ad5761r_get_clr_pin(struct ad5761r_dev *dev,
237 uint8_t *value);
238/* Set the ldac pin value. */
239int32_t ad5761r_set_ldac_pin(struct ad5761r_dev *dev,
240 uint8_t value);
241/* Get the ldac pin value. */
242int32_t ad5761r_get_ldac_pin(struct ad5761r_dev *dev,
243 uint8_t *value);
244/* Write to input register. */
245int32_t ad5761r_write_input_register(struct ad5761r_dev *dev,
246 uint16_t reg_data);
247/* Update DAC register. */
248int32_t ad5761r_update_dac_register(struct ad5761r_dev *dev);
249/* Write to input register and update DAC register. */
251 uint16_t reg_data);
252/*Software data reset. */
253int32_t ad5761r_software_data_reset(struct ad5761r_dev *dev);
254/* Software full reset. */
255int32_t ad5761r_software_full_reset(struct ad5761r_dev *dev);
256
257#endif // AD5761R_H_
int32_t ad5761r_get_clr_pin(struct ad5761r_dev *dev, uint8_t *value)
Definition ad5761r.c:527
int32_t ad5761r_get_short_circuit_condition(struct ad5761r_dev *dev, bool *sc)
Definition ad5761r.c:435
int32_t ad5761r_get_2c_bipolar_range_en_dis(struct ad5761r_dev *dev, bool *en_dis)
Definition ad5761r.c:389
int32_t ad5761r_set_clr_pin(struct ad5761r_dev *dev, uint8_t value)
Definition ad5761r.c:510
int32_t ad5761r_read(struct ad5761r_dev *dev, uint8_t reg_addr_cmd, uint16_t *reg_data)
Definition ad5761r.c:92
int32_t ad5761r_get_overrange_en_dis(struct ad5761r_dev *dev, bool *en_dis)
Definition ad5761r.c:419
int32_t ad5761r_get_reset_pin(struct ad5761r_dev *dev, uint8_t *value)
Definition ad5761r.c:492
int32_t ad5761r_get_ldac_pin(struct ad5761r_dev *dev, uint8_t *value)
Definition ad5761r.c:562
int32_t ad5761r_get_power_up_voltage(struct ad5761r_dev *dev, enum ad5761r_scale *pv)
Definition ad5761r.c:266
int32_t ad5761r_set_power_up_voltage(struct ad5761r_dev *dev, enum ad5761r_scale pv)
Definition ad5761r.c:252
int32_t ad5761r_set_ldac_pin(struct ad5761r_dev *dev, uint8_t value)
Definition ad5761r.c:545
int32_t ad5761r_set_reset_pin(struct ad5761r_dev *dev, uint8_t value)
Definition ad5761r.c:475
int32_t ad5761r_write_input_register(struct ad5761r_dev *dev, uint16_t reg_data)
Definition ad5761r.c:578
int32_t ad5761r_register_readback(struct ad5761r_dev *dev, enum ad5761r_reg reg, uint16_t *reg_data)
Definition ad5761r.c:120
int32_t ad5761r_set_clear_voltage(struct ad5761r_dev *dev, enum ad5761r_scale cv)
Definition ad5761r.c:283
int32_t ad5761r_get_exceed_temp_shutdown_en_dis(struct ad5761r_dev *dev, bool *en_dis)
Definition ad5761r.c:357
int32_t ad5761r_get_brownout_condition(struct ad5761r_dev *dev, bool *bo)
Definition ad5761r.c:455
int32_t ad5761r_set_exceed_temp_shutdown_en_dis(struct ad5761r_dev *dev, bool en_dis)
Definition ad5761r.c:343
int32_t ad5761r_software_data_reset(struct ad5761r_dev *dev)
Definition ad5761r.c:625
int32_t ad5761r_init(struct ad5761r_dev **device, struct ad5761r_init_param init_param)
Definition ad5761r.c:647
ad5761r_range
Definition ad5761r.h:98
@ AD5761R_RANGE_0V_TO_P_5V
Definition ad5761r.h:102
@ AD5761R_RANGE_M_2V5_TO_P_7V5
Definition ad5761r.h:103
@ AD5761R_RANGE_0_V_TO_P_10V
Definition ad5761r.h:100
@ AD5761R_RANGE_0V_TO_P_16V
Definition ad5761r.h:105
@ AD5761R_RANGE_M_5V_TO_P_5V
Definition ad5761r.h:101
@ AD5761R_RANGE_0V_TO_P_20V
Definition ad5761r.h:106
@ AD5761R_RANGE_M_3V_TO_P_3V
Definition ad5761r.h:104
@ AD5761R_RANGE_M_10V_TO_P_10V
Definition ad5761r.h:99
int32_t ad5761r_update_dac_register(struct ad5761r_dev *dev)
Definition ad5761r.c:596
int32_t ad5761r_set_output_range(struct ad5761r_dev *dev, enum ad5761r_range out_range)
Definition ad5761r.c:221
ad5761r_reg
Definition ad5761r.h:86
@ AD5761R_REG_DAC
Definition ad5761r.h:88
@ AD5761R_REG_CTRL
Definition ad5761r.h:89
@ AD5761R_REG_INPUT
Definition ad5761r.h:87
int32_t ad5761r_write_update_dac_register(struct ad5761r_dev *dev, uint16_t reg_data)
Definition ad5761r.c:607
int32_t ad5761r_get_clear_voltage(struct ad5761r_dev *dev, enum ad5761r_scale *cv)
Definition ad5761r.c:297
int32_t ad5761r_set_daisy_chain_en_dis(struct ad5761r_dev *dev, bool en_dis)
Definition ad5761r.c:184
ad5761r_scale
Definition ad5761r.h:92
@ AD5761R_SCALE_FULL
Definition ad5761r.h:95
@ AD5761R_SCALE_HALF
Definition ad5761r.h:94
@ AD5761R_SCALE_ZERO
Definition ad5761r.h:93
int32_t ad5761r_write(struct ad5761r_dev *dev, uint8_t reg_addr_cmd, uint16_t reg_data)
Definition ad5761r.c:58
int32_t ad5761r_set_overrange_en_dis(struct ad5761r_dev *dev, bool en_dis)
Definition ad5761r.c:405
int32_t ad5761r_get_output_range(struct ad5761r_dev *dev, enum ad5761r_range *out_range)
Definition ad5761r.c:235
int32_t ad5761r_software_full_reset(struct ad5761r_dev *dev)
Definition ad5761r.c:635
ad5761r_type
Definition ad5761r.h:81
@ AD5761R
Definition ad5761r.h:82
@ AD5721R
Definition ad5761r.h:83
int32_t ad5761r_set_2c_bipolar_range_en_dis(struct ad5761r_dev *dev, bool en_dis)
Definition ad5761r.c:374
int32_t ad5761r_config(struct ad5761r_dev *dev)
Definition ad5761r.c:161
int32_t ad5761r_set_internal_reference_en_dis(struct ad5761r_dev *dev, bool en_dis)
Definition ad5761r.c:313
int32_t ad5761r_get_daisy_chain_en_dis(struct ad5761r_dev *dev, bool *en_dis)
Definition ad5761r.c:199
int32_t ad5761r_remove(struct ad5761r_dev *dev)
Free the resources allocated by ad5761r_init().
Definition ad5761r.c:704
int32_t ad5761r_get_internal_reference_en_dis(struct ad5761r_dev *dev, bool *en_dis)
Definition ad5761r.c:327
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
Header file of GPIO Interface.
Header file of SPI Interface.
Definition ad5761r.h:109
uint8_t gpio_reset_value
Definition ad5761r.h:114
struct no_os_spi_desc * spi_desc
Definition ad5761r.h:111
bool exc_temp_sd_en
Definition ad5761r.h:125
struct no_os_gpio_desc * gpio_clr
Definition ad5761r.h:115
enum ad5761r_scale pv
Definition ad5761r.h:122
struct no_os_gpio_desc * gpio_reset
Definition ad5761r.h:113
bool int_ref_en
Definition ad5761r.h:124
enum ad5761r_range ra
Definition ad5761r.h:121
bool daisy_chain_en
Definition ad5761r.h:128
uint8_t gpio_ldac_value
Definition ad5761r.h:118
uint8_t gpio_clr_value
Definition ad5761r.h:116
bool b2c_range_en
Definition ad5761r.h:126
enum ad5761r_type type
Definition ad5761r.h:120
enum ad5761r_scale cv
Definition ad5761r.h:123
bool ovr_en
Definition ad5761r.h:127
struct no_os_gpio_desc * gpio_ldac
Definition ad5761r.h:117
Definition ad5761r.h:131
bool ovr_en
Definition ad5761r.h:149
struct no_os_gpio_init_param gpio_reset
Definition ad5761r.h:135
bool int_ref_en
Definition ad5761r.h:146
uint8_t gpio_ldac_value
Definition ad5761r.h:140
enum ad5761r_range out_range
Definition ad5761r.h:143
bool exc_temp_sd_en
Definition ad5761r.h:147
bool b2c_range_en
Definition ad5761r.h:148
uint8_t gpio_clr_value
Definition ad5761r.h:138
struct no_os_gpio_init_param gpio_clr
Definition ad5761r.h:137
struct no_os_gpio_init_param gpio_ldac
Definition ad5761r.h:139
enum ad5761r_scale pwr_voltage
Definition ad5761r.h:144
struct no_os_spi_init_param spi_init
Definition ad5761r.h:133
enum ad5761r_type type
Definition ad5761r.h:142
uint8_t gpio_reset_value
Definition ad5761r.h:136
bool daisy_chain_en
Definition ad5761r.h:150
enum ad5761r_scale clr_voltage
Definition ad5761r.h:145
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