no-OS
Loading...
Searching...
No Matches
ad5142.h
Go to the documentation of this file.
1/*******************************************************************************
2 * @file ad5142.h
3 * @brief Header file for the AD5142 digital potentiometer drivers
4********************************************************************************
5Copyright 2025(c) Analog Devices, Inc.
6
7Redistribution and use in source and binary forms, with or without
8modification, are permitted provided that the following conditions are met:
9
101. Redistributions of source code must retain the above copyright notice,
11 this list of conditions and the following disclaimer.
12
132. Redistributions in binary form must reproduce the above copyright notice,
14 this list of conditions and the following disclaimer in the documentation
15 and/or other materials provided with the distribution.
16
173. Neither the name of Analog Devices, Inc. nor the names of its
18 contributors may be used to endorse or promote products derived from this
19 software without specific prior written permission.
20
21THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. “AS IS” AND ANY EXPRESS OR
22IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
23MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
24EVENT SHALL ANALOG DEVICES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
25INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
27OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31*******************************************************************************/
32#ifndef AD5142_H_
33#define AD5142_H_
34
35#include "../common/dpot.h"
36#include "no_os_spi.h"
37#include "no_os_i2c.h"
38#include "no_os_gpio.h"
39#include "no_os_util.h"
40#include "ad51xx_cmd.h"
41/* Number of channels in Potentiometer mode of operation*/
42#define AD5142_NUM_POTENTIOMETER_CH 2
43/* Number of channels in Linear gain mode of operation*/
44#define AD5142_NUM_LINEAR_GAIN_CH 4
45
46
52 /* Interface type */
54 /* SPI init parameters */
56 /* I2C init parameters */
58 /* Reset GPIO init parameters */
60 /* Digital interface select GPIO init parameters */
62 /* LRDAC GPIO init parameters */
64 /* EEPROM Write Protect GPIO init parameters */
66 /* INDEP GPIO init parameters */
68 /* Shutdown enable flag in potentio meter mode */
70 /* Shutdown enable flag in linear gain mode */
72 /* Operating mode */
74};
75
82 /* SPI descriptor */
84 /* I2C descriptor */
86 /* Reset GPIO desc */
88 /* INDEP GPIO init parameters */
90 /* Shutdown enable flag */
92 /* Operating mode */
94};
95
96/* AD5142 digital potentiometer ops */
97extern const struct dpot_ops ad5142_dpot_ops;
98
99int ad5142_dpot_init(struct dpot_init_param *init_params,
100 struct dpot_dev **desc);
101int ad5142_dpot_remove(struct dpot_dev *desc);
102int ad5142_dpot_reset(struct dpot_dev *desc);
103int ad5142_dpot_shutdown(struct dpot_dev *desc,
104 enum dpot_chn_type chn, bool shutdown_enable);
106 enum dpot_operating_mode operating_mode);
107int ad5142_dpot_input_reg_read(struct dpot_dev *desc,
108 enum dpot_chn_type chn, uint8_t *data);
110 enum dpot_chn_type chn, uint8_t data);
111int ad5142_dpot_sw_lrdac_update(struct dpot_dev *desc, enum dpot_chn_type chn);
112int ad5142_dpot_chn_read(struct dpot_dev *desc,
113 enum dpot_chn_type chn, uint8_t *data);
114int ad5142_dpot_chn_write(struct dpot_dev *desc,
115 enum dpot_chn_type chn, uint8_t data);
116int ad5142_dpot_nvm_read(struct dpot_dev *desc,
117 enum dpot_chn_type chn, uint8_t *data);
118int ad5142_dpot_nvm_write(struct dpot_dev *desc,
119 enum dpot_chn_type chn, uint8_t data);
120int ad5142_dpot_copy_rdac_to_nvm(struct dpot_dev *desc, enum dpot_chn_type chn);
121int ad5142_dpot_copy_nvm_to_rdac(struct dpot_dev *desc, enum dpot_chn_type chn);
123 enum dpot_chn_type chn,
124 enum dpot_rdac_linear_status status);
125int ad5142_dpot_rdac_6db_update(struct dpot_dev *desc, enum dpot_chn_type chn,
126 enum dpot_rdac_6db_status status);
127int ad5142_dpot_send_cmd(struct dpot_dev *desc,
128 struct dpot_command *cmd);
129
130#endif // AD5142_H_
const struct dpot_ops ad5142_dpot_ops
Definition ad5142.c:862
#define AD5142_NUM_POTENTIOMETER_CH
Definition ad5142.h:42
int ad5142_dpot_input_reg_write(struct dpot_dev *desc, enum dpot_chn_type chn, uint8_t data)
Write to the digital potentiometer input register.
Definition ad5142.c:469
int ad5142_dpot_chn_read(struct dpot_dev *desc, enum dpot_chn_type chn, uint8_t *data)
Read the AD5142 digital potentiometer channel.
Definition ad5142.c:534
int ad5142_dpot_rdac_linear_update(struct dpot_dev *desc, enum dpot_chn_type chn, enum dpot_rdac_linear_status status)
Perform RDAC linear increment/decrement.
Definition ad5142.c:737
int ad5142_dpot_rdac_6db_update(struct dpot_dev *desc, enum dpot_chn_type chn, enum dpot_rdac_6db_status status)
Perform RDAC 6dB increment/decrement.
Definition ad5142.c:773
int ad5142_dpot_remove(struct dpot_dev *desc)
Free the memory allocated by ad5142_dpot_init().
Definition ad5142.c:257
int ad5142_dpot_set_operating_mode(struct dpot_dev *desc, enum dpot_operating_mode operating_mode)
Set the AD5142 digital potentiometer operating mode.
Definition ad5142.c:382
#define AD5142_NUM_LINEAR_GAIN_CH
Definition ad5142.h:44
int ad5142_dpot_nvm_write(struct dpot_dev *desc, enum dpot_chn_type chn, uint8_t data)
Write data to NVM (non-volatile) memory.
Definition ad5142.c:637
int ad5142_dpot_nvm_read(struct dpot_dev *desc, enum dpot_chn_type chn, uint8_t *data)
Read the NVM (non-volatile) memory data.
Definition ad5142.c:602
int ad5142_dpot_shutdown(struct dpot_dev *desc, enum dpot_chn_type chn, bool shutdown_enable)
Shutdown the AD5142 digital potentiometer channel.
Definition ad5142.c:342
int ad5142_dpot_copy_nvm_to_rdac(struct dpot_dev *desc, enum dpot_chn_type chn)
Copy NVM/EEPROM data to RDAC.
Definition ad5142.c:705
int ad5142_dpot_send_cmd(struct dpot_dev *desc, struct dpot_command *cmd)
Send command word to the AD5142 digital potentiometer.
Definition ad5142.c:807
int ad5142_dpot_reset(struct dpot_dev *desc)
Reset the AD5142 digital potentiometer.
Definition ad5142.c:289
int ad5142_dpot_init(struct dpot_init_param *init_params, struct dpot_dev **desc)
Initialize the AD5142 digital potentiometer.
Definition ad5142.c:152
int ad5142_dpot_copy_rdac_to_nvm(struct dpot_dev *desc, enum dpot_chn_type chn)
Copy RDAC register to NVM/EEPROM.
Definition ad5142.c:671
int ad5142_dpot_input_reg_read(struct dpot_dev *desc, enum dpot_chn_type chn, uint8_t *data)
Read the AD5142 digital potentiometer input register.
Definition ad5142.c:434
int ad5142_dpot_chn_write(struct dpot_dev *desc, enum dpot_chn_type chn, uint8_t data)
Write to the digital potentiometer channel.
Definition ad5142.c:569
int ad5142_dpot_sw_lrdac_update(struct dpot_dev *desc, enum dpot_chn_type chn)
Copy input register to RDAC (software LRDAC).
Definition ad5142.c:502
dpot_operating_mode
Digital potentiometer operating mode.
Definition dpot.h:106
dpot_rdac_linear_status
Digital potentiometer RDAC linear update status.
Definition dpot.h:118
dpot_rdac_6db_status
Digital potentiometer RDAC 6dB update status.
Definition dpot.h:130
dpot_chn_type
Digital potentiometer channel type.
Definition dpot.h:81
dpot_intf_type
digital potentiometer interface type.
Definition dpot.h:72
Header file of GPIO Interface.
Header file of I2C Interface.
Header file of SPI Interface.
Header file of utility functions.
AD5142 digital potentiometer device descriptor parameters.
Definition ad5142.h:80
struct no_os_i2c_desc * i2c_desc
Definition ad5142.h:85
bool shutdown_enable[4]
Definition ad5142.h:91
enum dpot_intf_type intf_type
Definition ad5142.h:81
struct no_os_spi_desc * spi_desc
Definition ad5142.h:83
struct no_os_gpio_desc * indep_gpio_desc
Definition ad5142.h:89
struct no_os_gpio_desc * reset_gpio_desc
Definition ad5142.h:87
enum dpot_operating_mode operating_mode
Definition ad5142.h:93
AD5142 digital potentiometer init parameters.
Definition ad5142.h:51
struct no_os_spi_init_param * spi_init
Definition ad5142.h:55
bool shutdown_enable_pt[AD5142_NUM_POTENTIOMETER_CH]
Definition ad5142.h:69
struct no_os_gpio_init_param * lrdac_gpio_init
Definition ad5142.h:63
bool shutdown_enable_lg[AD5142_NUM_LINEAR_GAIN_CH]
Definition ad5142.h:71
struct no_os_gpio_init_param * wp_gpio_init
Definition ad5142.h:65
enum dpot_operating_mode eoperating_mode
Definition ad5142.h:73
struct no_os_gpio_init_param * indep_gpio_init
Definition ad5142.h:67
enum dpot_intf_type eintf_type
Definition ad5142.h:53
struct no_os_i2c_init_param * i2c_init
Definition ad5142.h:57
struct no_os_gpio_init_param * dis_gpio_init
Definition ad5142.h:61
struct no_os_gpio_init_param * reset_gpio_init
Definition ad5142.h:59
Digital potentiometer command structure.
Definition dpot.h:141
Digital potentiometer device descriptor parameters.
Definition dpot.h:175
Digital potentiometer init parameters.
Definition dpot.h:157
Digital potentiometer common APIs.
Definition dpot.h:188
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 I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128