no-OS
Classes | Macros | Enumerations | Functions
ad5592r-base.h File Reference

Header file of AD5592R Base Driver. More...

#include "stdint.h"
#include "no_os_delay.h"
#include "no_os_spi.h"
#include "no_os_i2c.h"
#include "no_os_util.h"
#include <stdbool.h>
Include dependency graph for ad5592r-base.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ad5592r_rw_ops
 
struct  ad5592r_init_param
 
struct  ad5592r_dev
 

Macros

#define CH_MODE_UNUSED   0
 
#define CH_MODE_ADC   1
 
#define CH_MODE_DAC   2
 
#define CH_MODE_DAC_AND_ADC   3
 
#define CH_MODE_GPI   4
 
#define CH_MODE_GPO   5
 
#define CH_OFFSTATE_PULLDOWN   0
 
#define CH_OFFSTATE_OUT_LOW   1
 
#define CH_OFFSTATE_OUT_HIGH   2
 
#define CH_OFFSTATE_OUT_TRISTATE   3
 
#define AD5592R_REG_PD_PD_ALL   NO_OS_BIT(10)
 
#define AD5592R_REG_PD_EN_REF   NO_OS_BIT(9)
 
#define AD5592R_REG_CTRL_ADC_PC_BUFF   NO_OS_BIT(9)
 
#define AD5592R_REG_CTRL_ADC_BUFF_EN   NO_OS_BIT(8)
 
#define AD5592R_REG_CTRL_CONFIG_LOCK   NO_OS_BIT(7)
 
#define AD5592R_REG_CTRL_W_ALL_DACS   NO_OS_BIT(6)
 
#define AD5592R_REG_CTRL_ADC_RANGE   NO_OS_BIT(5)
 
#define AD5592R_REG_CTRL_DAC_RANGE   NO_OS_BIT(4)
 
#define AD5592R_REG_ADC_SEQ_REP   NO_OS_BIT(9)
 
#define AD5592R_REG_ADC_SEQ_TEMP_READBACK   NO_OS_BIT(8)
 
#define AD5592R_REG_ADC_SEQ_CODE_MSK(x)   ((x) & 0x0FFF)
 
#define AD5592R_REG_GPIO_OUT_EN_ADC_NOT_BUSY   NO_OS_BIT(8)
 
#define AD5592R_REG_LDAC_IMMEDIATE_OUT   0x00
 
#define AD5592R_REG_LDAC_INPUT_REG_ONLY   0x01
 
#define AD5592R_REG_LDAC_INPUT_REG_OUT   0x02
 
#define INTERNAL_VREF_VOLTAGE   2.5
 

Enumerations

enum  ad5592r_registers {
  AD5592R_REG_NOOP = 0x0,
  AD5592R_REG_DAC_READBACK = 0x1,
  AD5592R_REG_ADC_SEQ = 0x2,
  AD5592R_REG_CTRL = 0x3,
  AD5592R_REG_ADC_EN = 0x4,
  AD5592R_REG_DAC_EN = 0x5,
  AD5592R_REG_PULLDOWN = 0x6,
  AD5592R_REG_LDAC = 0x7,
  AD5592R_REG_GPIO_OUT_EN = 0x8,
  AD5592R_REG_GPIO_SET = 0x9,
  AD5592R_REG_GPIO_IN_EN = 0xA,
  AD5592R_REG_PD = 0xB,
  AD5592R_REG_OPEN_DRAIN = 0xC,
  AD5592R_REG_TRISTATE = 0xD,
  AD5592R_REG_RESET = 0xF
}
 

Functions

int32_t ad5592r_base_reg_write (struct ad5592r_dev *dev, uint8_t reg, uint16_t value)
 
int32_t ad5592r_base_reg_read (struct ad5592r_dev *dev, uint8_t reg, uint16_t *value)
 
int32_t ad5592r_gpio_get (struct ad5592r_dev *dev, uint8_t offset)
 
int32_t ad5592r_gpio_set (struct ad5592r_dev *dev, uint8_t offset, int32_t value)
 
int32_t ad5592r_gpio_direction_input (struct ad5592r_dev *dev, uint8_t offset)
 
int32_t ad5592r_gpio_direction_output (struct ad5592r_dev *dev, uint8_t offset, int32_t value)
 
int32_t ad5592r_software_reset (struct ad5592r_dev *dev)
 
int32_t ad5592r_set_channel_modes (struct ad5592r_dev *dev)
 
int32_t ad5592r_reset_channel_modes (struct ad5592r_dev *dev)
 

Detailed Description

Header file of AD5592R Base Driver.

Author
Mircea Caprioru (mirce.nosp@m.a.ca.nosp@m.prior.nosp@m.u@an.nosp@m.alog..nosp@m.com)

Copyright 2018, 2020(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:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of Analog Devices, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

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.

Macro Definition Documentation

◆ AD5592R_REG_ADC_SEQ_CODE_MSK

#define AD5592R_REG_ADC_SEQ_CODE_MSK (   x)    ((x) & 0x0FFF)

◆ AD5592R_REG_ADC_SEQ_REP

#define AD5592R_REG_ADC_SEQ_REP   NO_OS_BIT(9)

◆ AD5592R_REG_ADC_SEQ_TEMP_READBACK

#define AD5592R_REG_ADC_SEQ_TEMP_READBACK   NO_OS_BIT(8)

◆ AD5592R_REG_CTRL_ADC_BUFF_EN

#define AD5592R_REG_CTRL_ADC_BUFF_EN   NO_OS_BIT(8)

◆ AD5592R_REG_CTRL_ADC_PC_BUFF

#define AD5592R_REG_CTRL_ADC_PC_BUFF   NO_OS_BIT(9)

◆ AD5592R_REG_CTRL_ADC_RANGE

#define AD5592R_REG_CTRL_ADC_RANGE   NO_OS_BIT(5)

◆ AD5592R_REG_CTRL_CONFIG_LOCK

#define AD5592R_REG_CTRL_CONFIG_LOCK   NO_OS_BIT(7)

◆ AD5592R_REG_CTRL_DAC_RANGE

#define AD5592R_REG_CTRL_DAC_RANGE   NO_OS_BIT(4)

◆ AD5592R_REG_CTRL_W_ALL_DACS

#define AD5592R_REG_CTRL_W_ALL_DACS   NO_OS_BIT(6)

◆ AD5592R_REG_GPIO_OUT_EN_ADC_NOT_BUSY

#define AD5592R_REG_GPIO_OUT_EN_ADC_NOT_BUSY   NO_OS_BIT(8)

◆ AD5592R_REG_LDAC_IMMEDIATE_OUT

#define AD5592R_REG_LDAC_IMMEDIATE_OUT   0x00

◆ AD5592R_REG_LDAC_INPUT_REG_ONLY

#define AD5592R_REG_LDAC_INPUT_REG_ONLY   0x01

◆ AD5592R_REG_LDAC_INPUT_REG_OUT

#define AD5592R_REG_LDAC_INPUT_REG_OUT   0x02

◆ AD5592R_REG_PD_EN_REF

#define AD5592R_REG_PD_EN_REF   NO_OS_BIT(9)

◆ AD5592R_REG_PD_PD_ALL

#define AD5592R_REG_PD_PD_ALL   NO_OS_BIT(10)

◆ CH_MODE_ADC

#define CH_MODE_ADC   1

◆ CH_MODE_DAC

#define CH_MODE_DAC   2

◆ CH_MODE_DAC_AND_ADC

#define CH_MODE_DAC_AND_ADC   3

◆ CH_MODE_GPI

#define CH_MODE_GPI   4

◆ CH_MODE_GPO

#define CH_MODE_GPO   5

◆ CH_MODE_UNUSED

#define CH_MODE_UNUSED   0

◆ CH_OFFSTATE_OUT_HIGH

#define CH_OFFSTATE_OUT_HIGH   2

◆ CH_OFFSTATE_OUT_LOW

#define CH_OFFSTATE_OUT_LOW   1

◆ CH_OFFSTATE_OUT_TRISTATE

#define CH_OFFSTATE_OUT_TRISTATE   3

◆ CH_OFFSTATE_PULLDOWN

#define CH_OFFSTATE_PULLDOWN   0

◆ INTERNAL_VREF_VOLTAGE

#define INTERNAL_VREF_VOLTAGE   2.5

Enumeration Type Documentation

◆ ad5592r_registers

Enumerator
AD5592R_REG_NOOP 
AD5592R_REG_DAC_READBACK 
AD5592R_REG_ADC_SEQ 
AD5592R_REG_CTRL 
AD5592R_REG_ADC_EN 
AD5592R_REG_DAC_EN 
AD5592R_REG_PULLDOWN 
AD5592R_REG_LDAC 
AD5592R_REG_GPIO_OUT_EN 
AD5592R_REG_GPIO_SET 
AD5592R_REG_GPIO_IN_EN 
AD5592R_REG_PD 
AD5592R_REG_OPEN_DRAIN 
AD5592R_REG_TRISTATE 
AD5592R_REG_RESET 

Function Documentation

◆ ad5592r_base_reg_read()

int32_t ad5592r_base_reg_read ( struct ad5592r_dev dev,
uint8_t  reg,
uint16_t *  value 
)

Read register.

Parameters
dev- The device structure.
reg- The register address.
value- register value
Returns
0 in case of success, negative error code otherwise
Here is the caller graph for this function:

◆ ad5592r_base_reg_write()

int32_t ad5592r_base_reg_write ( struct ad5592r_dev dev,
uint8_t  reg,
uint16_t  value 
)

Write register.

Parameters
dev- The device structure.
reg- The register address.
value- register value
Returns
0 in case of success, negative error code otherwise
Here is the caller graph for this function:

◆ ad5592r_gpio_direction_input()

int32_t ad5592r_gpio_direction_input ( struct ad5592r_dev dev,
uint8_t  offset 
)

Set GPIO as input

Parameters
dev- The device structure.
offset- The channel number.
Returns
0 in case of success, negative error code otherwise

◆ ad5592r_gpio_direction_output()

int32_t ad5592r_gpio_direction_output ( struct ad5592r_dev dev,
uint8_t  offset,
int32_t  value 
)

Set GPIO as output

Parameters
dev- The device structure.
offset- The channel number.
value- GPIO value to set.
Returns
0 in case of success, negative error code otherwise

◆ ad5592r_gpio_get()

int32_t ad5592r_gpio_get ( struct ad5592r_dev dev,
uint8_t  offset 
)

Get GPIO value

Parameters
dev- The device structure.
offset- The channel number.
Returns
0 or 1 depending on the GPIO value.

◆ ad5592r_gpio_set()

int32_t ad5592r_gpio_set ( struct ad5592r_dev dev,
uint8_t  offset,
int32_t  value 
)

Set GPIO value

Parameters
dev- The device structure.
offset- The channel number.
value- the GPIO value (0 or 1)

◆ ad5592r_reset_channel_modes()

int32_t ad5592r_reset_channel_modes ( struct ad5592r_dev dev)

Reset channels and set GPIO to unused.

Parameters
dev- The device structure.
Returns
0 in case of success, negative error code otherwise

◆ ad5592r_set_channel_modes()

int32_t ad5592r_set_channel_modes ( struct ad5592r_dev dev)

Set channels modes.

Parameters
dev- The device structure.
Returns
0 in case of success, negative error code otherwise
Here is the caller graph for this function:

◆ ad5592r_software_reset()

int32_t ad5592r_software_reset ( struct ad5592r_dev dev)

Software reset device.

Parameters
dev- The device structure.
Returns
0 in case of success, negative error code otherwise
Here is the caller graph for this function: