no-OS
ad7616.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef AD7616_H_
41 #define AD7616_H_
42 
43 #include "no_os_gpio.h"
44 
45 #include <stdint.h>
46 
47 #ifdef XILINX_PLATFORM
48 #include "no_os_pwm.h"
49 #include "clk_axi_clkgen.h"
50 #endif
51 
52 /******************************************************************************/
53 /********************** Macros and Constants Definitions **********************/
54 /******************************************************************************/
55 /* AD7616 CORE */
56 #define AD7616_REG_PCORE_VERSION 0x400
57 #define AD7616_REG_ID 0x404
58 #define AD7616_REG_UP_SCRATCH 0x408
59 #define AD7616_REG_UP_IF_TYPE 0x40C
60 #define AD7616_REG_UP_CTRL 0x440
61 #define AD7616_REG_UP_CONV_RATE 0x444
62 #define AD7616_REG_UP_BURST_LENGTH 0x448
63 #define AD7616_REG_UP_READ_DATA 0x44C
64 #define AD7616_REG_UP_WRITE_DATA 0x450
65 
66 /* AD7616_REG_UP_CTRL */
67 #define AD7616_CTRL_RESETN (1 << 0)
68 #define AD7616_CTRL_CNVST_EN (1 << 1)
69 
70 #define AD7616_REG_CONFIG 0x02
71 #define AD7616_REG_CHANNEL 0x03
72 #define AD7616_REG_INPUT_RANGE_A1 0x04
73 #define AD7616_REG_INPUT_RANGE_A2 0x05
74 #define AD7616_REG_INPUT_RANGE_B1 0x06
75 #define AD7616_REG_INPUT_RANGE_B2 0x07
76 #define AD7616_REG_SEQUENCER_STACK(x) (0x20 + (x))
77 
78 /* AD7616_REG_CONFIG */
79 #define AD7616_SDEF (1 << 7)
80 #define AD7616_BURSTEN(x) ((x & 1) << 6)
81 #define AD7616_BURSTEN_MASK (1 << 6)
82 #define AD7616_SEQEN(x) ((x & 1) << 5)
83 #define AD7616_SEQEN_MASK (1 << 5)
84 #define AD7616_OS(x) (((x) & 0x7) << 2)
85 #define AD7616_STATUSEN (1 << 1)
86 #define AD7616_STATUSEN_MASK (1 << 1)
87 #define AD7616_CRCEN (1 << 0)
88 #define AD7616_CRCEN_MASK (1 << 0)
89 
90 /* AD7616_REG_CHANNEL */
91 #define AD7616_CHA_MASK 0xF
92 #define AD7616_CHB_MASK 0xF0
93 #define AD7616_CHB_OFFSET 4
94 #define AD7616_CHANNELS_MASK 0xFF
95 
96 /* AD7616_REG_INPUT_RANGE */
97 #define AD7616_INPUT_RANGE(ch, x) (((x) & 0x3) << (((ch) & 0x3) * 2))
98 
99 /* AD7616_REG_SEQUENCER_STACK(x) */
100 #define AD7616_ADDR(x) (((x) & 0x7F) << 9)
101 #define AD7616_SSREN (1 << 8)
102 #define AD7616_BSEL(x) (((x) & 0xF) << 4)
103 #define AD7616_ASEL(x) (((x) & 0xF) << 0)
104 
105 /* AD7616_REG_STATUS */
106 #define AD7616_STATUS_A(x) (((x) & 0xF) << 12)
107 #define AD7616_STATUS_B(x) (((x) & 0xF) << 8)
108 #define AD7616_STATUS_CRC(x) (((x) & 0xFF) << 0)
109 
110 /* AD7616 conversion results */
111 #define AD7616_CHANNEL_A_SELF_TEST_VALUE 0xAAAA
112 #define AD7616_CHANNEL_B_SELF_TEST_VALUE 0x5555
113 
114 /* AD7616_REG_PWM */
115 #define AD7616_TRIGGER_PULSE_WIDTH_NS 50
116 
117 /******************************************************************************/
118 /*************************** Types Declarations *******************************/
119 /******************************************************************************/
123 };
124 
128 };
129 
130 enum ad7616_ch {
157 };
158 
163 };
164 
174 };
175 
176 struct ad7616_dev {
177  /* SPI */
180  /* Clock gen for hdl design structure */
182  /* Trigger conversion PWM generator descriptor */
185  uint8_t crc;
186  /* GPIO */
195  /* AXI Core */
196  uint32_t core_baseaddr;
197  /* Device Settings */
200  enum ad7616_range va[8];
201  enum ad7616_range vb[8];
203  void (*dcache_invalidate_range)(uint32_t address, uint32_t bytes_count);
204  /* Sequencer and burst mode */
205  uint8_t layers_nb;
206 };
207 
209  /* SPI */
212  /* PWM generator init structure */
214  /* Clock gen for hdl design init structure */
216  /* Clock generator rate */
217  uint32_t axi_clkgen_rate;
219  uint8_t crc;
220  /* GPIO */
229  /* Core */
230  uint32_t core_baseaddr;
231  /* Device Settings */
233  enum ad7616_range va[8];
234  enum ad7616_range vb[8];
236  void (*dcache_invalidate_range)(uint32_t address, uint32_t bytes_count);
237 };
238 
240  uint16_t channel_a;
241  uint16_t channel_b;
242 };
243 
247 };
248 
249 /******************************************************************************/
250 /************************ Functions Declarations ******************************/
251 /******************************************************************************/
252 /* SPI read from device. */
253 int32_t ad7616_read(struct ad7616_dev *dev,
254  uint8_t reg_addr,
255  uint16_t *reg_data);
256 /* SPI write to device. */
257 int32_t ad7616_write(struct ad7616_dev *dev,
258  uint8_t reg_addr,
259  uint16_t reg_data);
260 /* SPI read from device using a mask. */
261 int32_t ad7616_read_mask(struct ad7616_dev *dev,
262  uint8_t reg_addr,
263  uint16_t mask,
264  uint16_t *data);
265 /* SPI write to device using a mask. */
266 int32_t ad7616_write_mask(struct ad7616_dev *dev,
267  uint8_t reg_addr,
268  uint16_t mask,
269  uint16_t data);
270 /* SPI read from device. */
271 int32_t ad7616_spi_read(struct ad7616_dev *dev,
272  uint8_t reg_addr,
273  uint16_t *reg_data);
274 /* SPI write to device. */
275 int32_t ad7616_spi_write(struct ad7616_dev *dev,
276  uint8_t reg_addr,
277  uint16_t reg_data);
278 /* PAR read from device. */
279 int32_t ad7616_par_read(struct ad7616_dev *dev,
280  uint8_t reg_addr,
281  uint16_t *reg_data);
282 /* PAR write to device. */
283 int32_t ad7616_par_write(struct ad7616_dev *dev,
284  uint8_t reg_addr,
285  uint16_t reg_data);
286 /* Perform a full reset of the device. */
287 int32_t ad7616_reset(struct ad7616_dev *dev);
288 /* Set the analog input range for the selected analog input channel. */
289 int32_t ad7616_set_range(struct ad7616_dev *dev,
290  enum ad7616_ch ch,
291  enum ad7616_range range);
292 /* Set the operation mode (software or hardware). */
293 int32_t ad7616_set_mode(struct ad7616_dev *dev,
294  enum ad7616_mode mode);
295 /* Set the oversampling ratio. */
296 int32_t ad7616_set_oversampling_ratio(struct ad7616_dev *dev,
297  enum ad7616_osr osr);
298 /* Read data in serial mode. */
299 int32_t ad7616_read_data_serial(struct ad7616_dev *dev,
300  struct ad7616_conversion_result *results,
301  uint32_t samples);
302 /* Read data in parallel mode. */
303 int32_t ad7616_read_data_parallel(struct ad7616_dev *dev,
304  uint32_t *buf,
305  uint32_t samples);
306 /* Initialize the core. */
307 int32_t ad7616_core_setup(struct ad7616_dev *dev);
308 /* Initialize the device. */
309 int32_t ad7616_setup(struct ad7616_dev **device,
310  struct ad7616_init_param *init_param);
311 /* Remove the device. */
312 void ad7616_remove(struct ad7616_dev *device);
313 /* Read conversion results. */
314 int32_t ad7616_read_channel_source(struct ad7616_dev *dev, enum ad7616_ch *ch_a,
315  enum ad7616_ch *ch_b);
316 /* Select the input source for a channel. */
317 int32_t ad7616_select_channel_source(struct ad7616_dev *dev, enum ad7616_ch ch);
318 /* Setup sequencer with given layers. */
319 int32_t ad7616_setup_sequencer(struct ad7616_dev *dev,
320  struct ad7616_sequencer_layer *layers, uint32_t layers_nb, uint8_t burst);
321 /* Disable the sequencer. */
322 int32_t ad7616_disable_sequencer(struct ad7616_dev *dev);
323 #endif
ad7616_write_mask
int32_t ad7616_write_mask(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t data)
Definition: ad7616.c:389
AD7616_VA7
@ AD7616_VA7
Definition: ad7616.h:138
AD7616_OSR_32
@ AD7616_OSR_32
Definition: ad7616.h:171
ad7616_dev::gpio_os2
struct no_os_gpio_desc * gpio_os2
Definition: ad7616.h:192
ad7616_set_oversampling_ratio
int32_t ad7616_set_oversampling_ratio(struct ad7616_dev *dev, enum ad7616_osr osr)
Definition: ad7616.c:587
timeout
uint32_t timeout
Definition: ad413x.c:55
no_os_alloc.h
axi_dmac_init::base
uint32_t base
Definition: axi_dmac.h:131
no_os_gpio_init_param
Structure holding the parameters for GPIO initialization.
Definition: no_os_gpio.h:85
AD7616_REG_INPUT_RANGE_B2
#define AD7616_REG_INPUT_RANGE_B2
Definition: ad7616.h:75
no_os_pwm_init_param
Structure containing the init parameters needed by the PWM generator.
Definition: no_os_pwm.h:72
AD7616_STATUSEN
#define AD7616_STATUSEN
Definition: ad7616.h:85
ad7616_osr
ad7616_osr
Definition: ad7616.h:165
AD7616_REG_INPUT_RANGE_A2
#define AD7616_REG_INPUT_RANGE_A2
Definition: ad7616.h:73
ad7616_init_param::gpio_hw_rngsel0_param
struct no_os_gpio_init_param * gpio_hw_rngsel0_param
Definition: ad7616.h:221
AD7616_VB6
@ AD7616_VB6
Definition: ad7616.h:150
ad7616_setup_sequencer
int32_t ad7616_setup_sequencer(struct ad7616_dev *dev, struct ad7616_sequencer_layer *layers, uint32_t layers_nb, uint8_t burst)
Setup the sequencer layers.
Definition: ad7616.c:848
ad7616_write
int32_t ad7616_write(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Definition: ad7616.c:346
ad7616_spi_read
int32_t ad7616_spi_read(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Definition: ad7616.c:418
AD7616_REG_CHANNEL
#define AD7616_REG_CHANNEL
Definition: ad7616.h:71
ad7616_mode
ad7616_mode
Definition: ad7616.h:120
ad7616_dev::va
enum ad7616_range va[8]
Definition: ad7616.h:200
AD7616_VA3
@ AD7616_VA3
Definition: ad7616.h:134
ad7616_interface
ad7616_interface
Definition: ad7616.h:125
ad7616_dev::gpio_os1
struct no_os_gpio_desc * gpio_os1
Definition: ad7616.h:191
ad7616_spi_write
int32_t ad7616_spi_write(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Definition: ad7616.c:444
AD7616_VA5
@ AD7616_VA5
Definition: ad7616.h:136
no_os_spi_write_and_read
int32_t no_os_spi_write_and_read(struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
Write and read data to/from SPI.
Definition: no_os_spi.c:165
ad7616_conversion_result::channel_a
uint16_t channel_a
Definition: ad7616.h:240
ad7616_remove
void ad7616_remove(struct ad7616_dev *device)
Definition: ad7616.c:1069
axi_dmac_init
Definition: axi_dmac.h:129
axi_dmac_init::name
const char * name
Definition: axi_dmac.h:130
ad7616_dev::spi_desc
struct no_os_spi_desc * spi_desc
Definition: ad7616.h:178
ad7616_read_data_parallel
int32_t ad7616_read_data_parallel(struct ad7616_dev *dev, uint32_t *buf, uint32_t samples)
Read from device in parallel mode. Enter register mode to read/write registers.
Definition: ad7616.c:759
AD7616_CHA_MASK
#define AD7616_CHA_MASK
Definition: ad7616.h:91
CS_LOW
#define CS_LOW
Definition: spi_engine.h:79
ad7616_self_test
int32_t ad7616_self_test(struct ad7616_dev *dev)
Perform a self test. Channels selection will be left untouched.
Definition: ad7616.c:899
ad7616_par_read
int32_t ad7616_par_read(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Definition: ad7616.c:710
no_os_spi.h
Header file of SPI Interface.
ad7616_init_param::crc
uint8_t crc
Definition: ad7616.h:219
ad7616_setup
int32_t ad7616_setup(struct ad7616_dev **device, struct ad7616_init_param *init_param)
Definition: ad7616.c:947
ad7616_init_param::gpio_busy_param
struct no_os_gpio_init_param * gpio_busy_param
Definition: ad7616.h:228
spi_engine_offload_init
int32_t spi_engine_offload_init(struct no_os_spi_desc *desc, const struct spi_engine_offload_init_param *param)
Initialize the SPI engine's offload module.
Definition: spi_engine.c:759
no_os_pwm_remove
int32_t no_os_pwm_remove(struct no_os_pwm_desc *desc)
Free the resources allocated by no_os_pwm_init().
Definition: no_os_pwm.c:85
clk_axi_clkgen.h
Driver for the Analog Devices AXI CLKGEN.
ad7616_init_param::gpio_reset_param
struct no_os_gpio_init_param * gpio_reset_param
Definition: ad7616.h:223
axi_dmac_transfer_wait_completion
int32_t axi_dmac_transfer_wait_completion(struct axi_dmac *dmac, uint32_t timeout_ms)
Definition: axi_dmac.c:510
no_os_gpio_get_value
int32_t no_os_gpio_get_value(struct no_os_gpio_desc *desc, uint8_t *value)
Get the value of the specified GPIO.
Definition: no_os_gpio.c:227
SPI_ENGINE_WORDS_PER_READ
#define SPI_ENGINE_WORDS_PER_READ
Definition: ad7616.c:71
ad7616_setup
int32_t ad7616_setup(struct ad7616_dev **device, struct ad7616_init_param *init_param)
Definition: ad7616.c:947
spi_engine_offload_message::commands_data
uint32_t * commands_data
Definition: spi_engine.h:169
no_os_delay.h
Header file of Delay functions.
ad7616_dev::vb
enum ad7616_range vb[8]
Definition: ad7616.h:201
ad7616_sequencer_layer
Definition: ad7616.h:244
axi_clkgen_init
Definition: clk_axi_clkgen.h:56
axi_clkgen_set_rate
int32_t axi_clkgen_set_rate(struct axi_clkgen *clkgen, uint32_t rate)
axi_clkgen_set_rate
Definition: clk_axi_clkgen.c:419
ad7616_dev
Definition: ad7616.h:176
ad7616_par_write
int32_t ad7616_par_write(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Definition: ad7616.c:736
ad7616_dev::gpio_hw_rngsel0
struct no_os_gpio_desc * gpio_hw_rngsel0
Definition: ad7616.h:187
spi_engine_offload_message
Structure representing an offload message.
Definition: spi_engine.h:160
AD7616_REG_UP_READ_DATA
#define AD7616_REG_UP_READ_DATA
Definition: ad7616.h:63
device
Definition: ad9361_util.h:75
AD7616_SERIAL
@ AD7616_SERIAL
Definition: ad7616.h:126
NO_OS_GPIO_HIGH
@ NO_OS_GPIO_HIGH
Definition: no_os_gpio.h:123
AD7616_VB_SELF_TEST
@ AD7616_VB_SELF_TEST
Definition: ad7616.h:155
AD7616_VA1
@ AD7616_VA1
Definition: ad7616.h:132
axi_clkgen_init
int32_t axi_clkgen_init(struct axi_clkgen **clk, const struct axi_clkgen_init *init)
axi_clkgen_init
Definition: clk_axi_clkgen.c:525
AD7616_REG_SEQUENCER_STACK
#define AD7616_REG_SEQUENCER_STACK(x)
Definition: ad7616.h:76
AD7616_VA_RESERVED1
@ AD7616_VA_RESERVED1
Definition: ad7616.h:141
axi_clkgen
Definition: clk_axi_clkgen.h:50
AD7616_HW
@ AD7616_HW
Definition: ad7616.h:122
no_os_axi_io.h
Header file of AXI IO.
no_os_calloc
void * no_os_calloc(size_t nitems, size_t size)
Allocate memory and return a pointer to it, set memory to 0.
Definition: chibios_alloc.c:60
NO_OS_ARRAY_SIZE
#define NO_OS_ARRAY_SIZE(x)
Definition: no_os_util.h:53
no_os_gpio_direction_input
int32_t no_os_gpio_direction_input(struct no_os_gpio_desc *desc)
Enable the input direction of the specified GPIO.
Definition: no_os_gpio.c:130
ad7616_init_param::mode
enum ad7616_mode mode
Definition: ad7616.h:232
AD7616_VA0
@ AD7616_VA0
Definition: ad7616.h:131
ad7616_read
int32_t ad7616_read(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Definition: ad7616.c:329
AD7616_PARALLEL
@ AD7616_PARALLEL
Definition: ad7616.h:127
ad7616_set_mode
int32_t ad7616_set_mode(struct ad7616_dev *dev, enum ad7616_mode mode)
Definition: ad7616.c:558
ad7616_dev::offload_init_param
struct spi_engine_offload_init_param * offload_init_param
Definition: ad7616.h:179
ad7616_set_range
int32_t ad7616_set_range(struct ad7616_dev *dev, enum ad7616_ch ch, enum ad7616_range range)
Definition: ad7616.c:503
NO_OS_SPI_MODE_3
@ NO_OS_SPI_MODE_3
Definition: no_os_spi.h:73
ad7616.h
Header file of AD7616 Driver.
NO_OS_GPIO_LOW
@ NO_OS_GPIO_LOW
Definition: no_os_gpio.h:121
ad7616_read_data_serial
int32_t ad7616_read_data_serial(struct ad7616_dev *dev, struct ad7616_conversion_result *results, uint32_t samples)
Read conversion result from device, checking with CRC if enabled.
Definition: ad7616.c:670
AD7616_CRCEN_MASK
#define AD7616_CRCEN_MASK
Definition: ad7616.h:88
ad7616_init_param::reg_access_speed
uint32_t reg_access_speed
Definition: ad7616.h:218
AD7616_OSR_128
@ AD7616_OSR_128
Definition: ad7616.h:173
no_os_mdelay
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
axi_dma_transfer
Definition: axi_dmac.h:106
ad7616_dev::trigger_pwm_desc
struct no_os_pwm_desc * trigger_pwm_desc
Definition: ad7616.h:183
ad7616_init_param::core_baseaddr
uint32_t core_baseaddr
Definition: ad7616.h:230
ad7616_dev::core_baseaddr
uint32_t core_baseaddr
Definition: ad7616.h:196
ad7616_spi_read
int32_t ad7616_spi_read(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Definition: ad7616.c:418
AD7616_VB7
@ AD7616_VB7
Definition: ad7616.h:151
CS_HIGH
#define CS_HIGH
Definition: spi_engine.h:78
ad7616_init_param::gpio_os0_param
struct no_os_gpio_init_param * gpio_os0_param
Definition: ad7616.h:224
spi_engine_set_speed
void spi_engine_set_speed(struct no_os_spi_desc *desc, uint32_t speed_hz)
Set SPI engine clock frequency.
Definition: spi_engine.c:152
AD7616_OSR_2
@ AD7616_OSR_2
Definition: ad7616.h:167
no_os_error.h
Error codes definition.
no_os_pwm_enable
int32_t no_os_pwm_enable(struct no_os_pwm_desc *desc)
Enable PWM signal generation.
Definition: no_os_pwm.c:104
AD7616_5V
@ AD7616_5V
Definition: ad7616.h:161
AD7616_STATUSEN_MASK
#define AD7616_STATUSEN_MASK
Definition: ad7616.h:86
AD7616_OSR_0
@ AD7616_OSR_0
Definition: ad7616.h:166
ad7616_init_param::gpio_os1_param
struct no_os_gpio_init_param * gpio_os1_param
Definition: ad7616.h:225
AD7616_CRCEN
#define AD7616_CRCEN
Definition: ad7616.h:87
AD7616_VB5
@ AD7616_VB5
Definition: ad7616.h:149
IRQ_DISABLED
@ IRQ_DISABLED
Definition: axi_dmac.h:83
ad7616_init_param::gpio_convst_param
struct no_os_gpio_init_param * gpio_convst_param
Definition: ad7616.h:227
ad7616_init_param::offload_init_param
struct spi_engine_offload_init_param * offload_init_param
Definition: ad7616.h:211
AD7616_INPUT_RANGE
#define AD7616_INPUT_RANGE(ch, x)
Definition: ad7616.h:97
AD7616_VB_VCC
@ AD7616_VB_VCC
Definition: ad7616.h:152
AD7616_VA_ALDO
@ AD7616_VA_ALDO
Definition: ad7616.h:140
AD7616_SEQEN_MASK
#define AD7616_SEQEN_MASK
Definition: ad7616.h:83
ad7616_conversion_result::channel_b
uint16_t channel_b
Definition: ad7616.h:241
ad7616_range
ad7616_range
Definition: ad7616.h:159
ad7616_init_param::trigger_pwm_init
struct no_os_pwm_init_param * trigger_pwm_init
Definition: ad7616.h:213
AD7616_BURSTEN
#define AD7616_BURSTEN(x)
Definition: ad7616.h:80
ad7616_dev::gpio_convst
struct no_os_gpio_desc * gpio_convst
Definition: ad7616.h:193
spi_engine.h
ad7616_init_param
Definition: ad7616.h:208
AD7616_CHANNELS_MASK
#define AD7616_CHANNELS_MASK
Definition: ad7616.h:94
ad7616_dev::clkgen
struct axi_clkgen * clkgen
Definition: ad7616.h:181
AD7616_VB_ALDO
@ AD7616_VB_ALDO
Definition: ad7616.h:153
AD7616_OSR_8
@ AD7616_OSR_8
Definition: ad7616.h:169
AD7616_VA_VCC
@ AD7616_VA_VCC
Definition: ad7616.h:139
ad7616_core_setup
int32_t ad7616_core_setup(struct ad7616_dev *dev)
axi_dmac.h
Driver for the Analog Devices AXI-DMAC core.
AD7616_2V5
@ AD7616_2V5
Definition: ad7616.h:160
ad7616_sequencer_layer::ch_a
enum ad7616_ch ch_a
Definition: ad7616.h:245
ad7616_write_mask
int32_t ad7616_write_mask(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t data)
Definition: ad7616.c:389
AD7616_SEQEN
#define AD7616_SEQEN(x)
Definition: ad7616.h:82
ad7616_dev::reg_access_speed
uint32_t reg_access_speed
Definition: ad7616.h:184
AD7616_OSR_4
@ AD7616_OSR_4
Definition: ad7616.h:168
ad7616_read_channel_source
int32_t ad7616_read_channel_source(struct ad7616_dev *dev, enum ad7616_ch *ch_a, enum ad7616_ch *ch_b)
Read the current selected channels.
Definition: ad7616.c:306
ad7616_set_oversampling_ratio
int32_t ad7616_set_oversampling_ratio(struct ad7616_dev *dev, enum ad7616_osr osr)
Definition: ad7616.c:587
AD7616_VB_RESERVED2
@ AD7616_VB_RESERVED2
Definition: ad7616.h:156
no_os_gpio_remove
int32_t no_os_gpio_remove(struct no_os_gpio_desc *desc)
Free the resources allocated by no_os_gpio_get().
Definition: no_os_gpio.c:110
no_os_spi_desc
Structure holding SPI descriptor.
Definition: no_os_spi.h:177
AD7616_VB_RESERVED1
@ AD7616_VB_RESERVED1
Definition: ad7616.h:154
ad7616_init_param::vb
enum ad7616_range vb[8]
Definition: ad7616.h:234
ad7616_setup_sequencer
int32_t ad7616_setup_sequencer(struct ad7616_dev *dev, struct ad7616_sequencer_layer *layers, uint32_t layers_nb, uint8_t burst)
Setup the sequencer layers.
Definition: ad7616.c:848
no_os_axi_io_read
int32_t no_os_axi_io_read(uint32_t base, uint32_t offset, uint32_t *data)
AXI IO Altera specific read function.
Definition: altera_axi_io.c:59
ad7616_conversion_result
Definition: ad7616.h:239
ad7616_read_channel_source
int32_t ad7616_read_channel_source(struct ad7616_dev *dev, enum ad7616_ch *ch_a, enum ad7616_ch *ch_b)
Read the current selected channels.
Definition: ad7616.c:306
ad7616_dev::interface
enum ad7616_interface interface
Definition: ad7616.h:198
AD7616_SSREN
#define AD7616_SSREN
Definition: ad7616.h:101
ad7616_init_param::osr
enum ad7616_osr osr
Definition: ad7616.h:235
ad7616_read_mask
int32_t ad7616_read_mask(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t *data)
Definition: ad7616.c:364
axi_dmac_init::irq_option
enum use_irq irq_option
Definition: axi_dmac.h:132
AD7616_REG_UP_CTRL
#define AD7616_REG_UP_CTRL
Definition: ad7616.h:60
no_os_gpio_desc
Structure holding the GPIO descriptor.
Definition: no_os_gpio.h:102
AD7616_REG_UP_IF_TYPE
#define AD7616_REG_UP_IF_TYPE
Definition: ad7616.h:59
ad7616_spi_write
int32_t ad7616_spi_write(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Definition: ad7616.c:444
AD7616_VA4
@ AD7616_VA4
Definition: ad7616.h:135
AD7616_CTRL_CNVST_EN
#define AD7616_CTRL_CNVST_EN
Definition: ad7616.h:68
AD7616_VB1
@ AD7616_VB1
Definition: ad7616.h:145
ad7616_read_data_parallel
int32_t ad7616_read_data_parallel(struct ad7616_dev *dev, uint32_t *buf, uint32_t samples)
Read from device in parallel mode. Enter register mode to read/write registers.
Definition: ad7616.c:759
spi_engine_offload_init_param::rx_dma_baseaddr
uint32_t rx_dma_baseaddr
Definition: spi_engine.h:147
AD7616_VA_SELF_TEST
@ AD7616_VA_SELF_TEST
Definition: ad7616.h:142
no_os_pwm_desc
Structure representing an PWM generator device.
Definition: no_os_pwm.h:99
ad7616_set_mode
int32_t ad7616_set_mode(struct ad7616_dev *dev, enum ad7616_mode mode)
Definition: ad7616.c:558
ad7616_select_channel_source
int32_t ad7616_select_channel_source(struct ad7616_dev *dev, enum ad7616_ch ch)
Select a new source for a channel.
Definition: ad7616.c:284
ad7616_read_mask
int32_t ad7616_read_mask(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t *data)
Definition: ad7616.c:364
ad7616_set_range
int32_t ad7616_set_range(struct ad7616_dev *dev, enum ad7616_ch ch, enum ad7616_range range)
Definition: ad7616.c:503
no_os_pwm_init
int32_t no_os_pwm_init(struct no_os_pwm_desc **desc, const struct no_os_pwm_init_param *param)
Initialize the PWM peripheral.
Definition: no_os_pwm.c:57
ad7616_reset
int32_t ad7616_reset(struct ad7616_dev *dev)
Definition: ad7616.c:463
ad7616_init_param::dcache_invalidate_range
void(* dcache_invalidate_range)(uint32_t address, uint32_t bytes_count)
Definition: ad7616.h:236
ad7616_init_param::axi_clkgen_rate
uint32_t axi_clkgen_rate
Definition: ad7616.h:217
ad7616_sequencer_layer::ch_b
enum ad7616_ch ch_b
Definition: ad7616.h:246
ad7616_disable_sequencer
int32_t ad7616_disable_sequencer(struct ad7616_dev *dev)
Definition: ad7616.c:886
ad7616_init_param::va
enum ad7616_range va[8]
Definition: ad7616.h:233
no_os_pwm.h
Header file of PWM Interface.
AD7616_CHB_OFFSET
#define AD7616_CHB_OFFSET
Definition: ad7616.h:93
AD7616_OS
#define AD7616_OS(x)
Definition: ad7616.h:84
AD7616_SW
@ AD7616_SW
Definition: ad7616.h:121
AD7616_TOGGLE_TIMEOUT_DELAY
#define AD7616_TOGGLE_TIMEOUT_DELAY
Definition: ad7616.c:70
ad7616_reset
int32_t ad7616_reset(struct ad7616_dev *dev)
Definition: ad7616.c:463
AD7616_CHANNEL_A_SELF_TEST_VALUE
#define AD7616_CHANNEL_A_SELF_TEST_VALUE
Definition: ad7616.h:111
AD7616_OSR_64
@ AD7616_OSR_64
Definition: ad7616.h:172
NO
@ NO
Definition: axi_dmac.h:102
no_os_free
void no_os_free(void *ptr)
Deallocate memory previously allocated by a call to no_os_calloc or no_os_malloc.
Definition: chibios_alloc.c:75
AD7616_VB2
@ AD7616_VB2
Definition: ad7616.h:146
ad7616_par_write
int32_t ad7616_par_write(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Definition: ad7616.c:736
ad7616_dev::gpio_busy
struct no_os_gpio_desc * gpio_busy
Definition: ad7616.h:194
AD7616_VB0
@ AD7616_VB0
Definition: ad7616.h:144
AD7616_REG_INPUT_RANGE_B1
#define AD7616_REG_INPUT_RANGE_B1
Definition: ad7616.h:74
axi_dmac_init
int32_t axi_dmac_init(struct axi_dmac **dmac_core, const struct axi_dmac_init *init)
Definition: axi_dmac.c:332
no_os_udelay
void no_os_udelay(uint32_t usecs)
Wait until usecs microseconds passed.
Definition: aducm3029_delay.c:120
ad7616_write
int32_t ad7616_write(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Definition: ad7616.c:346
AD7616_10V
@ AD7616_10V
Definition: ad7616.h:162
ad7616_dev::crc
uint8_t crc
Definition: ad7616.h:185
no_os_gpio_set_value
int32_t no_os_gpio_set_value(struct no_os_gpio_desc *desc, uint8_t value)
Set the value of the specified GPIO.
Definition: no_os_gpio.c:203
init_param
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:119
ad7616_select_channel_source
int32_t ad7616_select_channel_source(struct ad7616_dev *dev, enum ad7616_ch ch)
Select a new source for a channel.
Definition: ad7616.c:284
ad7616_init_param::clkgen_init
struct axi_clkgen_init * clkgen_init
Definition: ad7616.h:215
ad7616_init_param::gpio_hw_rngsel1_param
struct no_os_gpio_init_param * gpio_hw_rngsel1_param
Definition: ad7616.h:222
ad7616_dev::osr
enum ad7616_osr osr
Definition: ad7616.h:202
AD7616_VB4
@ AD7616_VB4
Definition: ad7616.h:148
AD7616_CHB_MASK
#define AD7616_CHB_MASK
Definition: ad7616.h:92
AD7616_CTRL_RESETN
#define AD7616_CTRL_RESETN
Definition: ad7616.h:67
AD7616_CHANNEL_B_SELF_TEST_VALUE
#define AD7616_CHANNEL_B_SELF_TEST_VALUE
Definition: ad7616.h:112
ad7616_dev::dcache_invalidate_range
void(* dcache_invalidate_range)(uint32_t address, uint32_t bytes_count)
Definition: ad7616.h:203
ad7616_read
int32_t ad7616_read(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Definition: ad7616.c:329
AD7616_VA2
@ AD7616_VA2
Definition: ad7616.h:133
AD7616_GET_BIT
#define AD7616_GET_BIT(v, b)
Definition: ad7616.c:69
spi_engine_offload_transfer
int32_t spi_engine_offload_transfer(struct no_os_spi_desc *desc, struct spi_engine_offload_message msg, uint32_t no_samples)
Initiate a SPI transfer in offload mode.
Definition: spi_engine.c:805
AD7616_OSR_16
@ AD7616_OSR_16
Definition: ad7616.h:170
no_os_axi_io_write
int32_t no_os_axi_io_write(uint32_t base, uint32_t offset, uint32_t data)
AXI IO Altera specific write function.
Definition: altera_axi_io.c:73
no_os_spi_remove
int32_t no_os_spi_remove(struct no_os_spi_desc *desc)
Free the resources allocated by no_os_spi_init().
Definition: no_os_spi.c:122
AD7616_VB3
@ AD7616_VB3
Definition: ad7616.h:147
ad7616_read_data_serial
int32_t ad7616_read_data_serial(struct ad7616_dev *dev, struct ad7616_conversion_result *results, uint32_t samples)
Read conversion result from device, checking with CRC if enabled.
Definition: ad7616.c:670
spi_engine_offload_init_param
Structure containing the init parameters needed by the offload module.
Definition: spi_engine.h:145
no_os_gpio.h
Header file of GPIO Interface.
AD7616_REG_UP_CONV_RATE
#define AD7616_REG_UP_CONV_RATE
Definition: ad7616.h:61
ad7616_dev::layers_nb
uint8_t layers_nb
Definition: ad7616.h:205
no_os_spi_desc::max_speed_hz
uint32_t max_speed_hz
Definition: no_os_spi.h:183
ad7616_remove
void ad7616_remove(struct ad7616_dev *dev)
Definition: ad7616.c:1069
AD7616_REG_UP_WRITE_DATA
#define AD7616_REG_UP_WRITE_DATA
Definition: ad7616.h:64
no_os_spi_init
int32_t no_os_spi_init(struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
Initialize the SPI communication peripheral.
Definition: no_os_spi.c:58
ad7616_dev::gpio_os0
struct no_os_gpio_desc * gpio_os0
Definition: ad7616.h:190
no_os_get_unaligned_be16
uint16_t no_os_get_unaligned_be16(uint8_t *buf)
AD7616_REG_INPUT_RANGE_A1
#define AD7616_REG_INPUT_RANGE_A1
Definition: ad7616.h:72
axi_dmac_transfer_start
int32_t axi_dmac_transfer_start(struct axi_dmac *dmac, struct axi_dma_transfer *dma_transfer)
Definition: axi_dmac.c:383
ad7616_dev::mode
enum ad7616_mode mode
Definition: ad7616.h:199
AD7616_BURSTEN_MASK
#define AD7616_BURSTEN_MASK
Definition: ad7616.h:81
ad7616_dev::gpio_reset
struct no_os_gpio_desc * gpio_reset
Definition: ad7616.h:189
axi_clkgen_remove
int32_t axi_clkgen_remove(struct axi_clkgen *clkgen)
axi_clkgen_remove
Definition: clk_axi_clkgen.c:546
no_os_util.h
Header file of utility functions.
ad7616_dev::gpio_hw_rngsel1
struct no_os_gpio_desc * gpio_hw_rngsel1
Definition: ad7616.h:188
AD7616_REG_CONFIG
#define AD7616_REG_CONFIG
Definition: ad7616.h:70
no_os_spi_desc::mode
enum no_os_spi_mode mode
Definition: no_os_spi.h:187
no_os_gpio_direction_output
int32_t no_os_gpio_direction_output(struct no_os_gpio_desc *desc, uint8_t value)
Enable the output direction of the specified GPIO.
Definition: no_os_gpio.c:153
ad7616_ch
ad7616_ch
Definition: ad7616.h:130
AD7616_VA_RESERVED2
@ AD7616_VA_RESERVED2
Definition: ad7616.h:143
axi_dma_transfer::size
uint32_t size
Definition: axi_dmac.h:107
ad7616_init_param::gpio_os2_param
struct no_os_gpio_init_param * gpio_os2_param
Definition: ad7616.h:226
AD7616_VA6
@ AD7616_VA6
Definition: ad7616.h:137
READ
#define READ(no_bytes)
Definition: spi_engine.h:68
ad7616_init_param::spi_param
struct no_os_spi_init_param * spi_param
Definition: ad7616.h:210
ad7616_disable_sequencer
int32_t ad7616_disable_sequencer(struct ad7616_dev *dev)
Definition: ad7616.c:886
axi_dmac
Definition: axi_dmac.h:114
ad7616_par_read
int32_t ad7616_par_read(struct ad7616_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Definition: ad7616.c:710
no_os_spi_init_param
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:131
no_os_gpio_get_optional
int32_t no_os_gpio_get_optional(struct no_os_gpio_desc **desc, const struct no_os_gpio_init_param *param)
Get the value of an optional GPIO.
Definition: no_os_gpio.c:81