14#ifndef AD4692_SUPPORT_H
15#define AD4692_SUPPORT_H
21#include "no_os_gpio.h"
23#include "iio_trigger.h"
31#define AD4692_MAX_SLOTS_AS 128
37#define AD4692_N_BYTES_TXN_24BIT 5
40#define AD4692_N_BYTES_TXN_16BIT 4
43#define AD4692_N_BYTES_TXN_OFFSET 2
46#define AD4692_N_CNV_TOGGLES 2
49#define AD4692_EXIT_MANUAL_MODE 0x0
52#define PWM_PERIOD_TO_FREQUENCY(x) (1E9 / x)
86 int32_t (*
remove)(
struct ad4692_desc *desc);
126 uint32_t sampling_rate);
134 enum ad4692_spi_mode mode);
uint8_t channel_sequence[AD4692_MAX_SLOTS_AS]
Definition ad4692_iio.c:321
struct ad4692_data_transfer_system ad4692_data_transfer_cnv_clock_mode
Definition ad4692_support_cnv_clock_mode.c:459
int ad4692_configure_acc_mask(uint16_t channel_mask, enum ad4692_sequencer_modes sequencer, uint8_t *chn_priorities)
Configure the accumulator mask.
Definition ad4692_support.c:321
ad4692_readback_options
AD4692 readback options.
Definition ad4692_support.h:71
@ ACCUMULATOR_DATA
Definition ad4692_support.h:73
@ AVERAGED_DATA
Definition ad4692_support.h:72
void ad4692_get_tx_command(uint8_t *local_tx_data)
Get the Tx buffer respective to the enabled channels.
Definition ad4692_support.c:278
enum ad4692_int_osc_sel ad4692_osc_freq_id
Definition ad4692_iio.c:309
struct ad4692_data_transfer_system ad4692_data_transfer_spi_burst_mode
Definition ad4692_support_spi_burst_mode.c:510
uint8_t n_data_bytes
Definition ad4692_iio.c:327
uint16_t channel_mask
Definition ad4692_iio.c:232
ad4692_sequencer_modes
AD4692 sequencer modes.
Definition ad4692_support.h:62
@ STANDARD_SEQUENCER
Definition ad4692_support.h:63
@ ADVANCED_SEQUENCER
Definition ad4692_support.h:64
int32_t ad4692_data_transfer_update_freq(uint32_t *sampling_rate)
Delegation: update sampling frequency for active mode.
Definition ad4692_support.c:239
int32_t ad4692_data_transfer_read_converted_data(struct ad4692_desc *desc, uint8_t chn, uint32_t *adc_data)
Delegation: read converted data from active mode.
Definition ad4692_support.c:98
struct ad4692_data_transfer_system ad4692_data_transfer_cnv_burst_mode
Definition ad4692_support_cnv_burst_mode.c:487
int32_t ad4692_data_transfer_submit(struct iio_device_data *iio_dev_data)
Delegation: submit samples for active mode.
Definition ad4692_support.c:202
struct ad4692_data_transfer_system ad4692_data_transfer_manual_mode
Definition ad4692_support_manual_mode.c:945
uint8_t channel_priorities[]
Definition ad4692_iio.c:318
int32_t ad4692_data_transfer_init(struct ad4692_desc *desc, enum ad4692_spi_mode mode)
Initialize the data transfer system for a given ADC mode.
Definition ad4692_support.c:52
enum ad4692_sequencer_modes ad4692_sequencer_mode
Definition ad4692_iio.c:294
uint8_t n_bytes_per_transaction
Definition ad4692_iio.c:330
int32_t ad4692_data_transfer_trigger_handler(struct iio_device_data *iio_dev_data)
Delegation: trigger handler for active mode.
Definition ad4692_support.c:220
uint8_t num_of_active_channels
Definition ad4170_iio.c:195
int32_t ad4692_data_transfer_end(void *dev)
Delegation: end transfer for active mode.
Definition ad4692_support.c:166
int ad4692_configure_channel(struct ad4692_desc *desc)
Configure the per channel accumulator count limit and enable the desired channels in the AD4692 devic...
Definition ad4692_support.c:492
int ad4692_exit_manual_mode(struct ad4692_desc *desc)
Exit manual mode and switch to CNV clock mode.
Definition ad4692_support.c:534
int32_t ad4692_data_transfer_remove(struct ad4692_desc *desc)
Delegation: remove active mode resources.
Definition ad4692_support.c:184
uint32_t ad4692_get_max_sampling_rate(enum ad4692_spi_mode mode)
Get maximum sampling rate for a given ADC mode.
Definition ad4692_support.c:257
void ad4692_update_active_channels(uint32_t ch_mask)
Update active channels based on sequencer mode and channel mask.
Definition ad4692_support.c:117
int ad4692_configure_pwm_rate(struct no_os_pwm_desc *desc, uint32_t sampling_rate)
Configure PWM with optimal prescaler for given sampling rate.
Definition ad4692_support.c:574
int ad4692_configure_channel_priorities(uint8_t *chn_priorities, uint8_t *channel_sequence, uint8_t *num_as_slots, uint8_t *acc_count)
Configure the advanced sequencer slots.
Definition ad4692_support.c:372
volatile bool ad4692_conversion_flag
Definition ad4692_iio.c:220
int32_t ad4692_data_transfer_prepare(void *dev, uint32_t ch_mask)
Delegation: prepare transfer for active mode.
Definition ad4692_support.c:148
uint8_t ad4692_acc_count[]
Definition ad4692_iio.c:235
volatile bool buf_size_updated
Definition ad4692_support.c:37
uint8_t ad4692_active_channels[]
Definition ad4692_iio.c:214
struct iio_hw_trig * ad4692_hw_trig_desc
Definition ad4692_iio.c:154
enum ad4692_readback_options ad4692_readback_option
Definition ad4692_iio.c:303
AD4692 Data transfer system function pointers (per ADC mode)
Definition ad4692_support.h:80
int32_t(* trigger_handler)(struct iio_device_data *iio_dev_data)
Definition ad4692_support.h:84
int32_t(* submit_samples)(struct iio_device_data *iio_dev_data)
Definition ad4692_support.h:83
int32_t(* remove)(struct ad4692_desc *desc)
Definition ad4692_support.h:86
int32_t(* end_transfer)(void *dev)
Definition ad4692_support.h:85
int32_t(* update_sampling_frequency)(uint32_t *sampling_rate)
Definition ad4692_support.h:89
int32_t(* prepare_transfer)(void *dev, uint32_t ch_mask)
Definition ad4692_support.h:82
uint32_t(* get_max_sampling_rate)(void)
Definition ad4692_support.h:90
int32_t(* read_converted_data)(struct ad4692_desc *desc, uint8_t chn, uint32_t *adc_data)
Definition ad4692_support.h:87
int32_t(* initialize)(struct ad4692_desc *desc)
Definition ad4692_support.h:81