no-OS
|
Implementation of ad69x Driver. More...
#include <string.h>
#include "stdio.h"
#include "stdlib.h"
#include "ad469x.h"
#include "spi_engine.h"
#include "no_os_delay.h"
#include "no_os_error.h"
#include "no_os_util.h"
#include "no_os_alloc.h"
Classes | |
struct | ad469x_device_info |
Macros | |
#define | AD469x_TEST_DATA 0xEA |
Functions | |
int32_t | ad469x_spi_reg_read (struct ad469x_dev *dev, uint16_t reg_addr, uint8_t *reg_data) |
int32_t | ad469x_spi_reg_write (struct ad469x_dev *dev, uint16_t reg_addr, uint8_t reg_data) |
int32_t | ad469x_spi_read_mask (struct ad469x_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t *data) |
int32_t | ad469x_spi_write_mask (struct ad469x_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t data) |
int32_t | ad469x_set_reg_access_mode (struct ad469x_dev *dev, enum ad469x_reg_access access) |
Configure register access mode. More... | |
int32_t | ad469x_get_num_channels (struct ad469x_dev *dev, uint8_t *num_channels) |
bool | ad469x_is_temp_channel (struct ad469x_dev *dev, uint8_t channel) |
int32_t | ad469x_adv_seq_osr (struct ad469x_dev *dev, uint16_t ch, enum ad469x_osr_ratios ratio) |
Configure over sampling ratio in advanced sequencer mode. More... | |
int32_t | ad469x_std_seq_osr (struct ad469x_dev *dev, enum ad469x_osr_ratios ratio) |
Configure over sampling ratio in standard sequencer mode. More... | |
int32_t | ad469x_std_pin_pairing (struct ad469x_dev *dev, enum ad469x_pin_pairing pin_pair) |
Configure the pin pairing option in standard sequencer mode. More... | |
int32_t | ad469x_set_channel_sequence (struct ad469x_dev *dev, enum ad469x_channel_sequencing seq) |
Set channel sequence. More... | |
int32_t | ad469x_adv_sequence_set_num_slots (struct ad469x_dev *dev, uint8_t num_slots) |
Configure advanced sequencer number of slots, temp channel not included. More... | |
int32_t | ad469x_adv_sequence_set_slot (struct ad469x_dev *dev, uint8_t slot, uint8_t channel) |
Advanced sequencer, assign channel to a slot. More... | |
int32_t | ad469x_std_sequence_ch (struct ad469x_dev *dev, uint16_t ch_mask) |
Configure standard sequencer channels. More... | |
int32_t | ad469x_sequence_enable_temp (struct ad469x_dev *dev) |
Enable temperature read at the end of the sequence, for standard and advanced sequencer. More... | |
int32_t | ad469x_sequence_disable_temp (struct ad469x_dev *dev) |
Disable temperature read at the end of the sequence, for standard and advanced sequencer. More... | |
int32_t | ad469x_set_busy (struct ad469x_dev *dev, enum ad469x_busy_gp_sel gp_sel) |
Configure converter busy indicator to the output of the specified port. More... | |
int32_t | ad469x_enter_conversion_mode (struct ad469x_dev *dev) |
Enter conversion mode. To exit conversion mode send a 5 bit conversion mode command AD469x_CMD_REG_CONFIG_MODE. More... | |
int32_t | ad469x_exit_conversion_mode (struct ad469x_dev *dev) |
Exit conversion mode. Enter register mode to read/write registers. More... | |
int32_t | ad469x_seq_read_data (struct ad469x_dev *dev, uint32_t *buf, uint32_t samples) |
Read from device when converter has the channel sequencer activated. Enter register mode to read/write registers. More... | |
int32_t | ad469x_read_data (struct ad469x_dev *dev, uint8_t channel, uint32_t *buf, uint16_t samples) |
Read from device. Enter register mode to read/write registers. More... | |
int32_t | ad469x_reset_dev (struct ad469x_dev *dev) |
Resets the ad469x device. More... | |
int32_t | ad469x_get_reference (struct ad469x_dev *device, enum ad469x_ref_set *ref_set) |
Get the value of reference. More... | |
int32_t | ad469x_set_reference (struct ad469x_dev *device, enum ad469x_ref_set ref_set) |
Set the value of reference. More... | |
int32_t | ad469x_config (struct ad469x_dev *dev, struct ad469x_init_param *config_desc) |
int32_t | ad469x_config_extended (struct ad469x_dev *dev, struct ad469x_init_param *config_desc) |
int32_t | ad469x_configure_ain_high_z (struct ad469x_dev *dev, uint8_t ch, enum ad469x_ain_high_z status) |
Configure analog input high Z mode. More... | |
int32_t | ad469x_get_ain_high_z_status (struct ad469x_dev *dev, uint8_t ch, enum ad469x_ain_high_z *status) |
Get the status of analog input high Z mode. More... | |
int32_t | ad469x_init (struct ad469x_dev **device, struct ad469x_init_param *init_param) |
int32_t | ad469x_remove (struct ad469x_dev *dev) |
Free the memory allocated by ad469x_init(). More... | |
Variables | |
const uint8_t | ad469x_device_resol [] |
Device resolution. More... | |
struct ad469x_device_info | dev_info [] |
Implementation of ad69x Driver.
Copyright 2020-22(c) Analog Devices, Inc.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define AD469x_TEST_DATA 0xEA |
int32_t ad469x_adv_seq_osr | ( | struct ad469x_dev * | dev, |
uint16_t | ch, | ||
enum ad469x_osr_ratios | ratio | ||
) |
Configure over sampling ratio in advanced sequencer mode.
[in] | dev | - ad469x_dev device handler. |
[in] | ch | - Channel to configure. |
[in] | ratio | - OSR ratio. |
int32_t ad469x_adv_sequence_set_num_slots | ( | struct ad469x_dev * | dev, |
uint8_t | num_slots | ||
) |
Configure advanced sequencer number of slots, temp channel not included.
[in] | dev | - ad469x_dev device handler. |
[in] | num_slots | - Number of slots, max value = 0x7f |
int32_t ad469x_adv_sequence_set_slot | ( | struct ad469x_dev * | dev, |
uint8_t | slot, | ||
uint8_t | channel | ||
) |
Advanced sequencer, assign channel to a slot.
[in] | dev | - ad469x_dev device handler. |
[in] | slot | - Slot number [0x00, 0x7f] |
[in] | channel | - Assigned channel [0x00, 0x0f]. |
int32_t ad469x_config | ( | struct ad469x_dev * | dev, |
struct ad469x_init_param * | config_desc | ||
) |
Configure the device with initial parameters.
[in,out] | dev | - The device structure. |
[in] | config_desc | - Pointer to structure containing configuration parameters. |
int32_t ad469x_config_extended | ( | struct ad469x_dev * | dev, |
struct ad469x_init_param * | config_desc | ||
) |
Configure the device with default parameters and enter conversion mode this adds default ch/slot assigments based on sequece mode.
[in,out] | dev | - The device structure. |
[in] | config_desc | - Pointer to structure containing configuration parameters. |
int32_t ad469x_configure_ain_high_z | ( | struct ad469x_dev * | dev, |
uint8_t | ch, | ||
enum ad469x_ain_high_z | status | ||
) |
Configure analog input high Z mode.
dev | The device structure |
ch | Channel ID |
status | Status of analog input high Z bit |
int32_t ad469x_enter_conversion_mode | ( | struct ad469x_dev * | dev | ) |
Enter conversion mode. To exit conversion mode send a 5 bit conversion mode command AD469x_CMD_REG_CONFIG_MODE.
[in] | dev | - ad469x_dev device handler. |
int32_t ad469x_exit_conversion_mode | ( | struct ad469x_dev * | dev | ) |
Exit conversion mode. Enter register mode to read/write registers.
[in] | dev | - ad469x_dev device handler. |
int32_t ad469x_get_ain_high_z_status | ( | struct ad469x_dev * | dev, |
uint8_t | ch, | ||
enum ad469x_ain_high_z * | status | ||
) |
Get the status of analog input high Z mode.
dev | The device structure |
ch | Channel ID |
status | Status of analog input high Z bit |
int32_t ad469x_get_num_channels | ( | struct ad469x_dev * | dev, |
uint8_t * | num_channels | ||
) |
int32_t ad469x_get_reference | ( | struct ad469x_dev * | device, |
enum ad469x_ref_set * | ref_set | ||
) |
Get the value of reference.
device | AD469x Device instance. |
ref_set | Value of VREF_SET |
int32_t ad469x_init | ( | struct ad469x_dev ** | device, |
struct ad469x_init_param * | init_param | ||
) |
Initialize the device.
[out] | device | - The device structure. |
[in] | init_param | - The structure that contains the device initial parameters. |
bool ad469x_is_temp_channel | ( | struct ad469x_dev * | dev, |
uint8_t | channel | ||
) |
int32_t ad469x_read_data | ( | struct ad469x_dev * | dev, |
uint8_t | channel, | ||
uint32_t * | buf, | ||
uint16_t | samples | ||
) |
Read from device. Enter register mode to read/write registers.
[in] | dev | - ad469x_dev device handler. |
[in] | channel | - ad469x selected channel. |
[out] | buf | - data buffer. |
[in] | samples | - sample number. |
int32_t ad469x_remove | ( | struct ad469x_dev * | dev | ) |
Free the memory allocated by ad469x_init().
[in] | dev | - Pointer to the device handler. |
int32_t ad469x_reset_dev | ( | struct ad469x_dev * | dev | ) |
Resets the ad469x device.
[in] | dev | - ad469x_dev device handler. |
int32_t ad469x_seq_read_data | ( | struct ad469x_dev * | dev, |
uint32_t * | buf, | ||
uint32_t | samples | ||
) |
Read from device when converter has the channel sequencer activated. Enter register mode to read/write registers.
[in] | dev | - ad469x_dev device handler. |
[out] | buf | - data buffer. |
[in] | samples | - Number of samples per channel. For example, if with ad469x_std_sequence_ch 2 channel where activated, buf will be filled with 10 samples for each of them. If temp is enable, the there will be an other 10 samples for temperature |
int32_t ad469x_sequence_disable_temp | ( | struct ad469x_dev * | dev | ) |
Disable temperature read at the end of the sequence, for standard and advanced sequencer.
[in] | dev | - ad469x_dev device handler. |
int32_t ad469x_sequence_enable_temp | ( | struct ad469x_dev * | dev | ) |
Enable temperature read at the end of the sequence, for standard and advanced sequencer.
[in] | dev | - ad469x_dev device handler. |
int32_t ad469x_set_busy | ( | struct ad469x_dev * | dev, |
enum ad469x_busy_gp_sel | gp_sel | ||
) |
Configure converter busy indicator to the output of the specified port.
[in] | dev | - ad469x_dev device handler. |
[in] | gp_sel | - Port. |
int32_t ad469x_set_channel_sequence | ( | struct ad469x_dev * | dev, |
enum ad469x_channel_sequencing | seq | ||
) |
Set channel sequence.
[in] | dev | - ad469x_dev device handler. |
[in] | seq | - Channel sequence. |
int32_t ad469x_set_reference | ( | struct ad469x_dev * | device, |
enum ad469x_ref_set | ref_set | ||
) |
Set the value of reference.
device | AD469x Device instance. |
ref_set | Value of VREF_SET |
int32_t ad469x_set_reg_access_mode | ( | struct ad469x_dev * | dev, |
enum ad469x_reg_access | access | ||
) |
Configure register access mode.
[in] | dev | - ad469x_dev device handler. |
[in] | access | - Access mode |
int32_t ad469x_spi_read_mask | ( | struct ad469x_dev * | dev, |
uint16_t | reg_addr, | ||
uint8_t | mask, | ||
uint8_t * | data | ||
) |
SPI read from device using a mask.
dev | - The device structure. |
reg_addr | - The register address. |
mask | - The mask. |
data | - The register data. |
int32_t ad469x_spi_reg_read | ( | struct ad469x_dev * | dev, |
uint16_t | reg_addr, | ||
uint8_t * | reg_data | ||
) |
Read from device.
dev | - The device structure. |
reg_addr | - The register address. |
reg_data | - The register data. |
int32_t ad469x_spi_reg_write | ( | struct ad469x_dev * | dev, |
uint16_t | reg_addr, | ||
uint8_t | reg_data | ||
) |
Write to device.
dev | - The device structure. |
reg_addr | - The register address. |
reg_data | - The register data. @eturn 0 in case of success, negative error code otherwise. |
int32_t ad469x_spi_write_mask | ( | struct ad469x_dev * | dev, |
uint16_t | reg_addr, | ||
uint8_t | mask, | ||
uint8_t | data | ||
) |
SPI write to device using a mask.
dev | - The device structure. |
reg_addr | - The register address. |
mask | - The mask. |
data | - The register data. |
int32_t ad469x_std_pin_pairing | ( | struct ad469x_dev * | dev, |
enum ad469x_pin_pairing | pin_pair | ||
) |
Configure the pin pairing option in standard sequencer mode.
[in] | dev | - ad469x_dev device handler. |
[in] | pin_pair | - Pin pairing selection. |
int32_t ad469x_std_seq_osr | ( | struct ad469x_dev * | dev, |
enum ad469x_osr_ratios | ratio | ||
) |
Configure over sampling ratio in standard sequencer mode.
[in] | dev | - ad469x_dev device handler. |
[in] | ratio | - OSR ratio. |
int32_t ad469x_std_sequence_ch | ( | struct ad469x_dev * | dev, |
uint16_t | ch_mask | ||
) |
Configure standard sequencer channels.
[in] | dev | - ad469x_dev device handler. |
[in] | ch_mask | - Extra channels to activate. |
const uint8_t ad469x_device_resol[] |
Device resolution.
struct ad469x_device_info dev_info[] |