no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ad7091r8.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef __AD7091R8_H__
35#define __AD7091R8_H__
36
37#include <stdbool.h>
38
39#include "no_os_spi.h"
40#include "no_os_gpio.h"
41
42#define AD7091R_NUM_CHANNELS(id) (1 << ((id) + 1))
43#define AD7091R8_BITS 12
44
45#define AD7091R8_CONV_MASK NO_OS_GENMASK(AD7091R8_BITS - 1, 0)
46
47/* AD7091r8 registers */
48#define AD7091R8_REG_RESULT 0x00
49#define AD7091R8_REG_CHANNEL 0x01
50#define AD7091R8_REG_CONF 0x02
51#define AD7091R8_REG_ALERT 0x03
52#define AD7091R8_REG_CH_LOW_LIMIT(ch) ((ch) * 3 + 4)
53#define AD7091R8_REG_CH_HIGH_LIMIT(ch) ((ch) * 3 + 5)
54#define AD7091R8_REG_CH_HYSTERESIS(ch) ((ch) * 3 + 6)
55
56/* AD7091R8_REG_RESULT */
57#define AD7091R8_REG_RESULT_DATA_MASK NO_OS_GENMASK(11, 0)
58#define AD7091R8_REG_RESULT_ALT_MASK NO_OS_BIT(12)
59#define AD7091R8_REG_RESULT_CH_ID_MASK NO_OS_GENMASK(15, 13)
60
61/* AD7091R8_REG_CONF */
62#define REG_CONF_SLEEP_MODE_MASK NO_OS_GENMASK(1, 0)
63#define REG_CONF_GPO1_MASK NO_OS_BIT(2)
64#define REG_CONF_GPO0_MASK NO_OS_BIT(3)
65#define REG_CONF_GPO0_MODE_MASK NO_OS_GENMASK(6, 4)
66#define REG_CONF_ALERT_STICKY_MASK NO_OS_BIT(7)
67#define REG_CONF_RESET_MASK NO_OS_BIT(9)
68
69/* AD7091R8_REG_ALERT */
70#define REG_ALERT_MASK(x, ch) (x >> (ch * 2))
71
72/* AD7091R8 read/write protocol masks */
73#define AD7091R8_REG_DATA_MSK NO_OS_GENMASK(9, 0)
74#define AD7091R8_RD_WR_FLAG_MSK NO_OS_BIT(10)
75#define AD7091R8_REG_ADDR_MSK NO_OS_GENMASK(15, 11)
76
82
83static char * const ad7091r8_names[] = {
84 [AD7091R2] = "ad7091r-2",
85 [AD7091R4] = "ad7091r-4",
86 [AD7091R8] = "ad7091r-8",
87};
88
104
115
128
141
154
157 //spi_desc *spi_desc;
159 /* Reference voltage */
161 /* CONVST GPIO handler */
167 /* AD7091R specific device identifier */
169 /* AD7091R device sleep mode */
171};
172
174 /* SPI initialization parameters */
176 /* External Voltage Reference */
178 /* CONVST GPIO initialization parameters */
180 /* Reset GPIO initialization parameters */
182 /* Alert GPIO initialization parameters */
184 /* AD7091R specific device identifier */
186 /* AD7091R device sleep mode */
188};
189
190/* Initialize the device. */
193
194/* Remove the device and release resources. */
195int ad7091r8_remove(struct ad7091r8_dev *dev);
196
197/* Set device sleep mode */
199 enum ad7091r8_sleep_mode mode);
200
201/* Set device set port value */
202int ad7091r8_set_port(struct ad7091r8_dev *dev,
203 enum ad7091r8_port port,
204 bool value);
205
206/* Set device set GPO0 mode */
208 enum ad7091r8_gpo0_mode mode,
209 bool is_cmos);
210
211/* Set high limit, low limit, hysteresis. */
212int ad7091r8_set_limit(struct ad7091r8_dev *dev,
213 enum ad7091r8_limit limit,
214 uint8_t channel,
215 uint16_t value);
216
217/* Get alert. */
218int ad7091r8_get_alert(struct ad7091r8_dev *dev,
219 uint8_t channel,
220 enum ad7091r8_alert_type *alert);
221
222/* Get high limit, low limit, hysteresis. */
223int ad7091r8_get_limit(struct ad7091r8_dev *dev,
224 enum ad7091r8_limit limit,
225 uint8_t channel,
226 uint16_t *value);
227
228/* Select device channel. */
229int ad7091r8_set_channel(struct ad7091r8_dev *dev,
230 uint8_t channel);
231
232/* Read one sample. */
233int ad7091r8_read_one(struct ad7091r8_dev *dev,
234 uint8_t chan,
235 uint16_t *read_val);
236
237/* Read next channel set in the channel sequencer. */
239 uint16_t *read_val);
240
241/* Read device register. */
242int ad7091r8_spi_reg_read(struct ad7091r8_dev *dev,
243 uint8_t reg_addr,
244 uint16_t *reg_data);
245
246/* Write to device register. */
248 uint8_t reg_addr,
249 uint16_t reg_data);
250
251/* SPI write to device using a mask. */
253 uint8_t reg_addr,
254 uint16_t mask,
255 uint16_t data);
256
257int ad7091r8_pulse_convst(struct ad7091r8_dev *dev);
258
259#endif // __AD7091R8_H__
ad7091r8_limit
Limit type.
Definition ad7091r8.h:133
@ AD7091R8_LOW_LIMIT
Definition ad7091r8.h:135
@ AD7091R8_HIGH_LIMIT
Definition ad7091r8.h:137
@ AD7091R8_HYSTERESIS
Definition ad7091r8.h:139
ad7091r8_port
Converter general purpose outputs.
Definition ad7091r8.h:109
@ AD7091R8_GPO1
Definition ad7091r8.h:113
@ AD7091R8_GPO0
Definition ad7091r8.h:111
int ad7091r8_get_alert(struct ad7091r8_dev *dev, uint8_t channel, enum ad7091r8_alert_type *alert)
Definition ad7091r8.c:284
int ad7091r8_get_limit(struct ad7091r8_dev *dev, enum ad7091r8_limit limit, uint8_t channel, uint16_t *value)
Definition ad7091r8.c:315
ad7091r8_gpo0_mode
Port 0 configuration.
Definition ad7091r8.h:120
@ AD7091R8_GPO0_BUSY
Definition ad7091r8.h:126
@ AD7091R8_GPO0_ENABLED
Definition ad7091r8.h:122
@ AD7091R8_GPO0_ALERT
Definition ad7091r8.h:124
int ad7091r8_set_sleep_mode(struct ad7091r8_dev *dev, enum ad7091r8_sleep_mode mode)
Set device sleep mode.
Definition ad7091r8.c:174
int ad7091r8_set_gpo0_mode(struct ad7091r8_dev *dev, enum ad7091r8_gpo0_mode mode, bool is_cmos)
Definition ad7091r8.c:229
int ad7091r8_remove(struct ad7091r8_dev *dev)
Free the resources allocated by ad7091r8_init().
Definition ad7091r8.c:458
int ad7091r8_init(struct ad7091r8_dev **device, struct ad7091r8_init_param *init_param)
Definition ad7091r8.c:380
int ad7091r8_set_port(struct ad7091r8_dev *dev, enum ad7091r8_port port, bool value)
Definition ad7091r8.c:199
ad7091r8_device_id
Definition ad7091r8.h:77
@ AD7091R8
Definition ad7091r8.h:80
@ AD7091R4
Definition ad7091r8.h:79
@ AD7091R2
Definition ad7091r8.h:78
int ad7091r8_set_limit(struct ad7091r8_dev *dev, enum ad7091r8_limit limit, uint8_t channel, uint16_t value)
Definition ad7091r8.c:252
ad7091r8_alert_type
Alert status.
Definition ad7091r8.h:146
@ AD7091R8_NO_ALERT
Definition ad7091r8.h:148
@ AD7091R8_LOW_ALERT
Definition ad7091r8.h:152
@ AD7091R8_HIGH_ALERT
Definition ad7091r8.h:150
int ad7091r8_pulse_convst(struct ad7091r8_dev *dev)
Definition ad7091r8.c:48
ad7091r8_sleep_mode
Converter supported sleep modes.
Definition ad7091r8.h:93
@ AD7091R8_SLEEP_MODE_2
Definition ad7091r8.h:100
@ AD7091R8_SLEEP_MODE_1
Definition ad7091r8.h:98
@ AD7091R8_SLEEP_MODE_3
Definition ad7091r8.h:102
@ AD7091R8_SLEEP_MODE_0
Definition ad7091r8.h:96
int ad7091r8_spi_write_mask(struct ad7091r8_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t data)
Definition ad7091r8.c:148
int ad7091r8_spi_reg_write(struct ad7091r8_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Definition ad7091r8.c:69
int ad7091r8_set_channel(struct ad7091r8_dev *dev, uint8_t channel)
Definition ad7091r8.c:484
int ad7091r8_sequenced_read(struct ad7091r8_dev *dev, uint16_t *read_val)
Definition ad7091r8.c:533
int ad7091r8_read_one(struct ad7091r8_dev *dev, uint8_t chan, uint16_t *read_val)
Definition ad7091r8.c:509
int ad7091r8_spi_reg_read(struct ad7091r8_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Definition ad7091r8.c:97
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
Header file of GPIO Interface.
Header file of SPI Interface.
Definition ad7091r8.h:155
struct no_os_gpio_desc * gpio_convst
Definition ad7091r8.h:162
enum ad7091r8_device_id device_id
Definition ad7091r8.h:168
int vref_mv
Definition ad7091r8.h:160
struct no_os_spi_desc * spi_desc
Definition ad7091r8.h:158
enum ad7091r8_sleep_mode sleep_mode
Definition ad7091r8.h:170
struct no_os_gpio_desc * gpio_reset
Definition ad7091r8.h:164
struct no_os_gpio_desc * gpio_alert
Definition ad7091r8.h:166
Definition ad7091r8.h:173
int vref_mv
Definition ad7091r8.h:177
enum ad7091r8_sleep_mode sleep_mode
Definition ad7091r8.h:187
enum ad7091r8_device_id device_id
Definition ad7091r8.h:185
struct no_os_gpio_init_param * gpio_reset
Definition ad7091r8.h:181
struct no_os_gpio_init_param * gpio_alert
Definition ad7091r8.h:183
struct no_os_gpio_init_param * gpio_convst
Definition ad7091r8.h:179
struct no_os_spi_init_param * spi_init
Definition ad7091r8.h:175
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
int32_t port
Definition no_os_gpio.h:69
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128