![]() |
no-OS
|
Implementation of AD5706R Driver. More...
#include <stdlib.h>#include <string.h>#include <stdbool.h>#include "ad5706r.h"#include "no_os_delay.h"#include "no_os_error.h"#include "no_os_print_log.h"#include "no_os_alloc.h"#include "no_os_util.h"Functions | |
| int | ad5706r_spi_reg_read (struct ad5706r_dev *dev, uint32_t reg_addr, uint16_t *reg_data) |
| Read from device. | |
| int | ad5706r_spi_reg_read_multiple (struct ad5706r_dev *dev, uint32_t start_addr, uint8_t count, uint8_t *buff) |
| Read multiple register's values. | |
| int | ad5706r_spi_reg_write (struct ad5706r_dev *dev, uint32_t reg_addr, uint16_t reg_data) |
| Write to device. | |
| int | ad5706r_spi_reg_write_multiple (struct ad5706r_dev *dev, uint32_t start_addr, uint8_t count, uint8_t *buff) |
| Write multiple register's values. | |
| int | ad5706r_spi_write_mask (struct ad5706r_dev *dev, uint32_t reg_addr, uint32_t mask, uint16_t data) |
| SPI write to device using a mask. | |
| int | ad5706r_set_reference (struct ad5706r_dev *dev, enum ad5706r_vref_select reference_selector) |
| Set reference configuration. | |
| int | ad5706r_set_operating_mode (struct ad5706r_dev *dev, enum ad5706r_channels ch, enum ad5706r_output_op_mode op_mode) |
| Set output operating mode of a channel. | |
| int | ad5706r_set_ch_output_range (struct ad5706r_dev *dev, enum ad5706r_channels ch, enum ad5706r_output_range range_sel) |
| Set output range for a channel. | |
| int | ad5706r_func_en (struct ad5706r_dev *dev, uint16_t en_mask) |
| Set the function generator enable configuration. | |
| int | ad5706r_func_mode_select (struct ad5706r_dev *dev, enum ad5706r_channels ch, enum ad5706r_function_mode func_mode_sel) |
| Set function generator mode for a channel. | |
| int | ad5706r_set_dither_period (struct ad5706r_dev *dev, enum ad5706r_channels ch, enum ad5706r_dither_period period) |
| Set period for dither function generator. | |
| int | ad5706r_set_dither_phase (struct ad5706r_dev *dev, enum ad5706r_channels ch, enum ad5706r_dither_phase phase) |
| Set phase for dither function generator. | |
| int | ad5706r_set_hw_sw_ldac (struct ad5706r_dev *dev, uint16_t mask_hw_sw_ldac) |
| Set the hardware and software ldac configuration. | |
| int | ad5706r_set_sync_async_ldac (struct ad5706r_dev *dev, uint16_t mask_ldac_sync_async) |
| Set sync/async ldac configuration. | |
| int | ad5706r_set_ldac_config (struct ad5706r_dev *dev, enum ad5706r_channels ch, enum ad5706r_dac_mode dac_mode, struct ad5706r_ldac_settings *ldac_settings) |
| Set ldac config for single channel. | |
| int | ad5706r_multi_dac_sw_ldac_trigger (struct ad5706r_dev *dev) |
| Trigger Multi DAC SW LDAC. | |
| int | ad5706r_set_multi_ldac_config (struct ad5706r_dev *dev, uint16_t ch_mask, enum ad5706r_dac_mode dac_mode, struct ad5706r_ldac_settings *ldac_settings) |
| Set ldac config for multiple channels. | |
| int | ad5706r_set_dac_a_value (struct ad5706r_dev *dev, enum ad5706r_channels ch, uint16_t dac_value) |
| Set dac value on DAC input register A. | |
| int | ad5706r_set_dac_b_value (struct ad5706r_dev *dev, enum ad5706r_channels ch, uint16_t dac_value) |
| Set dac value on DAC input register B. | |
| int | ad5706r_set_multi_dac_a_value (struct ad5706r_dev *dev, uint16_t dac_value) |
| Set dac value on Multi DAC input register A. | |
| int | ad5706r_set_mux_out_mode (struct ad5706r_dev *dev, enum ad5706r_mux_out_state mux_output_mode_sel) |
| Set the multiplexer output mode. | |
| int | ad5706r_set_mux_out_select (struct ad5706r_dev *dev, enum ad5706r_mux_out_select mux_output_sel) |
| Set the multiplexer output select register. | |
| int | ad5706r_hw_ldac_trigger (struct ad5706r_dev *dev) |
| Trigger the LDAC using hardware. | |
| int | ad5706r_set_edge_trigger (struct ad5706r_dev *dev, enum ad5706r_channels ch, enum ad5706r_ldac_edge_trig trig_edge) |
| Set LDAC/TGP/DCLK edge trigger. | |
| int | ad5706r_sw_ldac_trigger (struct ad5706r_dev *dev) |
| Trigger the LDAC using software. | |
| int | ad5706r_sw_reset (struct ad5706r_dev *dev) |
| Perform soft reset. | |
| int | ad5706r_hw_reset (struct ad5706r_dev *dev) |
| Perform hard reset. | |
| int | ad5706r_device_config (struct ad5706r_dev *dev, struct ad5706r_init_param *init_param) |
| Configures the device. | |
| int | ad5706r_set_device_spi (struct ad5706r_dev *dev, struct ad5706r_device_spi_settings *spi_settings) |
| Set device spi settings. | |
| int | ad5706r_crc_enable (struct ad5706r_dev *dev, bool crc_enable) |
| Configures the CRC selection bit . | |
| int | ad5706r_shdn_trigger (struct ad5706r_dev *dev, bool shdn_state) |
| Set SHDN pin state. | |
| int | ad5706r_init (struct ad5706r_dev **device, struct ad5706r_init_param *init_param) |
| Initialize the device. | |
| int | ad5706r_remove (struct ad5706r_dev *dev) |
| Free the device descriptor. | |
Implementation of AD5706R Driver.
Copyright 2024-2026(c) Analog Devices, Inc. SPDX-License-Identifier: BSD-3-Clause
| int ad5706r_crc_enable | ( | struct ad5706r_dev * | dev, |
| bool | crc_enable ) |
Configures the CRC selection bit .
| dev | - The device structure. |
| crc_enable | - boolean selection for crc bit. |
| int ad5706r_device_config | ( | struct ad5706r_dev * | dev, |
| struct ad5706r_init_param * | init_param ) |
Configures the device.
| dev | - The device structure to be initialized. |
| init_param | - Configuration parameters for the device. |
| int ad5706r_func_en | ( | struct ad5706r_dev * | dev, |
| uint16_t | en_mask ) |
Set the function generator enable configuration.
| dev | - The device structure. |
| en_mask | - Mask to enable function generator. |
| int ad5706r_func_mode_select | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| enum ad5706r_function_mode | func_mode_sel ) |
Set function generator mode for a channel.
| dev | - The device structure. |
| ch | - Channel selected. |
| func_mode_sel | - Function generator mode to be selected. Accepted values: AD5706R_TOGGLE (default) AD5706R_DITHER |
| int ad5706r_hw_ldac_trigger | ( | struct ad5706r_dev * | dev | ) |
Trigger the LDAC using hardware.
| dev | - The device structure. |
| int ad5706r_hw_reset | ( | struct ad5706r_dev * | dev | ) |
Perform hard reset.
| dev | - The device structure. |
| int ad5706r_init | ( | struct ad5706r_dev ** | device, |
| struct ad5706r_init_param * | init_param ) |
Initialize the device.
| device | - The device structure. |
| init_param | - The structure that contains the device initial parameters. |
| int ad5706r_multi_dac_sw_ldac_trigger | ( | struct ad5706r_dev * | dev | ) |
Trigger Multi DAC SW LDAC.
| dev | - The device structure. |
| int ad5706r_remove | ( | struct ad5706r_dev * | dev | ) |
Free the device descriptor.
| dev | - The device structure. |
| int ad5706r_set_ch_output_range | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| enum ad5706r_output_range | range_sel ) |
Set output range for a channel.
| dev | - The device structure. |
| ch | - Channel selected. |
| range_sel | - Output range to be selected. Accepted values: AD5706R_50mA (default) AD5706R_150mA AD5706R_200mA AD5706R_300mA |
| int ad5706r_set_dac_a_value | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| uint16_t | dac_value ) |
Set dac value on DAC input register A.
| dev | - The device structure. |
| ch | - Channel selected. |
| dac_value | - value that will be set in DAC input register A. |
| int ad5706r_set_dac_b_value | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| uint16_t | dac_value ) |
Set dac value on DAC input register B.
| dev | - The device structure. |
| ch | - Channel selected. |
| dac_value | - value that will be set in DAC input register B. |
| int ad5706r_set_device_spi | ( | struct ad5706r_dev * | dev, |
| struct ad5706r_device_spi_settings * | spi_settings ) |
Set device spi settings.
| dev | - The device structure. |
| spi_settings | - The structure that contains the device spi parameters. |
| int ad5706r_set_dither_period | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| enum ad5706r_dither_period | period ) |
Set period for dither function generator.
| dev | - The device structure. |
| ch | - Channel selected. |
| period | - Dither period to be selected. Accepted values: AD5706R_SAMPLES_4 (default) AD5706R_SAMPLES_8 AD5706R_SAMPLES_16 AD5706R_SAMPLES_32 AD5706R_SAMPLES_64 |
| int ad5706r_set_dither_phase | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| enum ad5706r_dither_phase | phase ) |
Set phase for dither function generator.
| dev | - The device structure. |
| ch | - Channel selected. |
| phase | - Dither phase to be selected. Accepted values: AD5706R_DEGREES_0 (default) AD5706R_DEGREES_90 AD5706R_DEGREES_180 AD5706R_DEGREES_270 |
| int ad5706r_set_edge_trigger | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| enum ad5706r_ldac_edge_trig | trig_edge ) |
Set LDAC/TGP/DCLK edge trigger.
| dev | - The device structure. |
| ch | - Channel selected. |
| trig_edge | - Edge trigger to be selected. Accepted values: AD5706R_RISING_EDGE_TRIG (default) AD5706R_FALLING_EDGE_TRIG AD5706R_ANY_EDGE_TRIG |
| int ad5706r_set_hw_sw_ldac | ( | struct ad5706r_dev * | dev, |
| uint16_t | mask_hw_sw_ldac ) |
Set the hardware and software ldac configuration.
| dev | - The device structure. |
| mask_hw_sw_ldac | - The array contains HW/SW LDAC channel masks. |
| int ad5706r_set_ldac_config | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| enum ad5706r_dac_mode | dac_mode, | ||
| struct ad5706r_ldac_settings * | ldac_settings ) |
Set ldac config for single channel.
| dev | - The device structure. |
| ch | - Channel selected. |
| dac_mode | - DAC Controller Mode to be configured for selected channel. Accepted values: AD5706R_DIRECT_WRITE_REG (default) AD5706R_SW_LDAC AD5706R_HW_LDAC AD5706R_SW_TOGGLE AD5706R_HW_TOGGLE AD5706R_SW_DITHER AD5706R_HW_DITHER |
| ldac_settings | - LDAC mode config Structure. |
| int ad5706r_set_multi_dac_a_value | ( | struct ad5706r_dev * | dev, |
| uint16_t | dac_value ) |
Set dac value on Multi DAC input register A.
| dev | - The device structure. |
| dac_value | - value that will be set in MULTI DAC input register A. |
| int ad5706r_set_multi_ldac_config | ( | struct ad5706r_dev * | dev, |
| uint16_t | ch_mask, | ||
| enum ad5706r_dac_mode | dac_mode, | ||
| struct ad5706r_ldac_settings * | ldac_settings ) |
Set ldac config for multiple channels.
| dev | - The device structure. |
| ch_mask | - Selected channels mask. |
| dac_mode | - DAC Controller Mode to be configured for selected channel. Accepted values: AD5706R_DIRECT_WRITE_REG (default) AD5706R_SW_LDAC AD5706R_HW_LDAC AD5706R_SW_TOGGLE AD5706R_HW_TOGGLE AD5706R_SW_DITHER AD5706R_HW_DITHER |
| ldac_settings | - LDAC mode config Structure. |
| int ad5706r_set_mux_out_mode | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_mux_out_state | mux_output_mode_sel ) |
Set the multiplexer output mode.
| dev | - The device structure. |
| mux_output_mode_sel | - Select mux output state. Accepted values: AD5706R_HIGH_Z (default) AD5706R_BYPASS AD5706R_BUFFER |
| int ad5706r_set_mux_out_select | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_mux_out_select | mux_output_sel ) |
Set the multiplexer output select register.
| dev | - The device structure. |
| mux_output_sel | - Select signal to be monitored on the mux_out pin. |
| int ad5706r_set_operating_mode | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_channels | ch, | ||
| enum ad5706r_output_op_mode | op_mode ) |
Set output operating mode of a channel.
| dev | - The device structure. |
| ch | - Channel selected. |
| op_mode | - Output operating mode to be selected. Accepted values: AD5706R_SHUTDOWN_SW (default) AD5706R_SHUTDOWN_SW_W_GND AD5706R_NORMAL_SW AD5706R_SHUTDOWN_HW AD5706R_SHUTDOWN_HW_W_GND AD5706R_NORMAL_HW |
| int ad5706r_set_reference | ( | struct ad5706r_dev * | dev, |
| enum ad5706r_vref_select | reference_selector ) |
Set reference configuration.
| dev | - The device structure. |
| reference_selector | - The reference to be selected. Accepted values: AD5706R_EXTERNAL_VREF_PIN_INPUT (default) AD5706R_INTERNAL_VREF_PIN_2P5V |
| int ad5706r_set_sync_async_ldac | ( | struct ad5706r_dev * | dev, |
| uint16_t | mask_ldac_sync_async ) |
Set sync/async ldac configuration.
| dev | - The device structure. |
| mask_ldac_sync_async | - The array contains SYNC/ASYNC mode channel masks. |
| int ad5706r_shdn_trigger | ( | struct ad5706r_dev * | dev, |
| bool | shdn_state ) |
Set SHDN pin state.
| dev | - The device structure. |
| shdn_state | - Boolean selection for SHDN state. |
| int ad5706r_spi_reg_read | ( | struct ad5706r_dev * | dev, |
| uint32_t | reg_addr, | ||
| uint16_t * | reg_data ) |
Read from device.
| dev | - The device structure. |
| reg_addr | - The register address. |
| reg_data | - The register data. |
| int ad5706r_spi_reg_read_multiple | ( | struct ad5706r_dev * | dev, |
| uint32_t | start_addr, | ||
| uint8_t | count, | ||
| uint8_t * | buff ) |
Read multiple register's values.
| dev | - The device structure. |
| start_addr | - Starting register address to read from. |
| count | - Number of bytes to read. |
| buff | - Buffer to store data. |
Offset register address when in descending address mode with respect to register length.
| int ad5706r_spi_reg_write | ( | struct ad5706r_dev * | dev, |
| uint32_t | reg_addr, | ||
| uint16_t | reg_data ) |
Write to device.
| dev | - The device structure. |
| reg_addr | - The register address. |
| reg_data | - The register data. |
| int ad5706r_spi_reg_write_multiple | ( | struct ad5706r_dev * | dev, |
| uint32_t | start_addr, | ||
| uint8_t | count, | ||
| uint8_t * | buff ) |
Write multiple register's values.
| dev | - The device structure. |
| start_addr | - Starting register address to write into. |
| count | - Number of bytes to write. |
| buff | - Buffer to write data from. |
Offset register address when in descending address mode with respect to register length.
| int ad5706r_spi_write_mask | ( | struct ad5706r_dev * | dev, |
| uint32_t | reg_addr, | ||
| uint32_t | mask, | ||
| uint16_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. |
| int ad5706r_sw_ldac_trigger | ( | struct ad5706r_dev * | dev | ) |
Trigger the LDAC using software.
| dev | - The device structure. |
| int ad5706r_sw_reset | ( | struct ad5706r_dev * | dev | ) |
Perform soft reset.
| dev | - The device structure. |