no-OS
Loading...
Searching...
No Matches
ad5791.h File Reference

Header file of AD5791 Driver. More...

#include <stdint.h>
#include "no_os_delay.h"
#include "no_os_gpio.h"
#include "no_os_spi.h"
#include "no_os_util.h"
#include "no_os_error.h"
Include dependency graph for ad5791.h:

Classes

struct  ad5791_chip_info
 
struct  ad5791_dev
 
struct  ad5791_init_param
 

Macros

#define AD5791_RESET_OUT
 
#define AD5791_RESET_LOW
 
#define AD5791_RESET_HIGH
 
#define AD5791_CLR_OUT
 
#define AD5791_CLR_LOW
 
#define AD5791_CLR_HIGH
 
#define AD5791_LDAC_OUT
 
#define AD5791_LDAC_LOW
 
#define AD5791_LDAC_HIGH
 
#define MAX_RESOLUTION   20
 
#define AD5791_NOP   0
 
#define AD5791_REG_DAC   1
 
#define AD5791_REG_CTRL   2
 
#define AD5791_REG_CLR_CODE   3
 
#define AD5791_CMD_WR_SOFT_CTRL   4
 
#define AD5791_READ   (1ul << 23)
 
#define AD5791_WRITE   (0ul << 23)
 
#define AD5791_ADDR_REG(x)
 
#define AD5791_CTRL_LINCOMP_MASK   NO_OS_GENMASK(9,6)
 
#define AD5791_CTRL_LINCOMP(x)
 
#define AD5791_CTRL_SDODIS_MASK   NO_OS_BIT(5)
 
#define AD5791_CTRL_SDODIS(x)
 
#define AD5791_CTRL_BIN2SC_MASK   NO_OS_BIT(4)
 
#define AD5791_CTRL_BIN2SC(x)
 
#define AD5791_CTRL_DACTRI   NO_OS_BIT(3)
 
#define AD5791_CTRL_OPGND   NO_OS_BIT(2)
 
#define AD5791_CTRL_RBUF_MASK   NO_OS_BIT(1)
 
#define AD5791_CTRL_RBUF(x)
 
#define AD5791_SOFT_CTRL_RESET   (1 << 2)
 
#define AD5791_SOFT_CTRL_CLR   (1 << 1)
 
#define AD5791_SOFT_CTRL_LDAC   (1 << 0)
 
#define AD5791_OUT_NORMAL   0x0
 
#define AD5791_OUT_CLAMPED_6K   0x1
 
#define AD5791_OUT_TRISTATE   0x2
 

Enumerations

enum  ad5791_type {
  ID_AD5760 ,
  ID_AD5780 ,
  ID_AD5781 ,
  ID_AD5790 ,
  ID_AD5791
}
 
enum  ad5791_lin_comp_select {
  AD5781_SPAN_UPTO_10V = 0 ,
  AD5781_SPAN_10V_TO_20V = 4 ,
  AD5791_SPAN_10V_TO_12V = 1 ,
  AD5791_SPAN_12V_TO_16V = 2 ,
  AD5791_SPAN_16V_TO_19V = 3 ,
  AD5791_SPAN_19V_TO_20V = 4
}
 

Functions

int32_t ad5791_init (struct ad5791_dev **device, struct ad5791_init_param init_param)
 Initializes the communication with the device.
 
int32_t ad5791_remove (struct ad5791_dev *dev)
 Free the resources allocated by ad5791_init().
 
int32_t ad5791_set_register_value (struct ad5791_dev *dev, uint8_t register_address, uint32_t register_value)
 Writes data into a register.
 
int32_t ad5791_get_register_value (struct ad5791_dev *dev, uint8_t register_address, uint32_t *value)
 Reads the value of a register.
 
int32_t ad5791_dac_ouput_state (struct ad5791_dev *dev, uint8_t state)
 Sets the DAC output in one of the three states.
 
int32_t ad5791_set_dac_value (struct ad5791_dev *dev, uint32_t value)
 Writes to the DAC register.
 
int32_t ad5791_soft_instruction (struct ad5791_dev *dev, uint8_t instruction_bit)
 Asserts RESET, CLR or LDAC in a software manner.
 
int32_t ad5791_setup (struct ad5791_dev *dev, uint32_t setup_word)
 Configures the output amplifier, DAC coding, SDO state and the linearity error compensation.
 
int ad5791_spi_write_mask (struct ad5791_dev *dev, uint8_t register_address, uint32_t mask, uint32_t value)
 SPI write to device using a mask.
 
int ad5791_set_lin_comp (struct ad5791_dev *dev, enum ad5791_lin_comp_select v_span)
 Set Linearity error compensation based on the reference voltage span.
 
int ad5791_ldac_trigger (struct ad5791_dev *dev)
 Trigger LDAC.
 
int ad5791_clear_async (struct ad5791_dev *dev)
 Clear DAC channel output with the clearcode.
 

Detailed Description

Header file of AD5791 Driver.

Author
DNechita (Dan.N.nosp@m.echi.nosp@m.ta@an.nosp@m.alog.nosp@m..com)

Copyright 2013(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ AD5791_ADDR_REG

#define AD5791_ADDR_REG ( x)
Value:
(((uint32_t)(x) & 0x7) << 20)

◆ AD5791_CLR_HIGH

#define AD5791_CLR_HIGH
Value:
no_os_gpio_set_value(dev->gpio_clr, \
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:170
@ NO_OS_GPIO_HIGH
Definition no_os_gpio.h:82

◆ AD5791_CLR_LOW

#define AD5791_CLR_LOW
Value:
no_os_gpio_set_value(dev->gpio_clr, \
@ NO_OS_GPIO_LOW
Definition no_os_gpio.h:80

◆ AD5791_CLR_OUT

#define AD5791_CLR_OUT
Value:
no_os_gpio_direction_output(dev->gpio_clr, \
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:120

◆ AD5791_CMD_WR_SOFT_CTRL

#define AD5791_CMD_WR_SOFT_CTRL   4

◆ AD5791_CTRL_BIN2SC

#define AD5791_CTRL_BIN2SC ( x)
Value:
((x & 0x01) << 4)

◆ AD5791_CTRL_BIN2SC_MASK

#define AD5791_CTRL_BIN2SC_MASK   NO_OS_BIT(4)

◆ AD5791_CTRL_DACTRI

#define AD5791_CTRL_DACTRI   NO_OS_BIT(3)

◆ AD5791_CTRL_LINCOMP

#define AD5791_CTRL_LINCOMP ( x)
Value:
(((x) & 0xF) << 6)

◆ AD5791_CTRL_LINCOMP_MASK

#define AD5791_CTRL_LINCOMP_MASK   NO_OS_GENMASK(9,6)

◆ AD5791_CTRL_OPGND

#define AD5791_CTRL_OPGND   NO_OS_BIT(2)

◆ AD5791_CTRL_RBUF

#define AD5791_CTRL_RBUF ( x)
Value:
((x & 0x01) << 1)

◆ AD5791_CTRL_RBUF_MASK

#define AD5791_CTRL_RBUF_MASK   NO_OS_BIT(1)

◆ AD5791_CTRL_SDODIS

#define AD5791_CTRL_SDODIS ( x)
Value:
((x & 0x01) << 5)

◆ AD5791_CTRL_SDODIS_MASK

#define AD5791_CTRL_SDODIS_MASK   NO_OS_BIT(5)

◆ AD5791_LDAC_HIGH

#define AD5791_LDAC_HIGH
Value:

◆ AD5791_LDAC_LOW

#define AD5791_LDAC_LOW
Value:

◆ AD5791_LDAC_OUT

#define AD5791_LDAC_OUT
Value:

◆ AD5791_NOP

#define AD5791_NOP   0

◆ AD5791_OUT_CLAMPED_6K

#define AD5791_OUT_CLAMPED_6K   0x1

◆ AD5791_OUT_NORMAL

#define AD5791_OUT_NORMAL   0x0

◆ AD5791_OUT_TRISTATE

#define AD5791_OUT_TRISTATE   0x2

◆ AD5791_READ

#define AD5791_READ   (1ul << 23)

◆ AD5791_REG_CLR_CODE

#define AD5791_REG_CLR_CODE   3

◆ AD5791_REG_CTRL

#define AD5791_REG_CTRL   2

◆ AD5791_REG_DAC

#define AD5791_REG_DAC   1

◆ AD5791_RESET_HIGH

#define AD5791_RESET_HIGH
Value:

◆ AD5791_RESET_LOW

#define AD5791_RESET_LOW
Value:
no_os_gpio_set_value(dev->gpio_reset, \

◆ AD5791_RESET_OUT

#define AD5791_RESET_OUT
Value:

◆ AD5791_SOFT_CTRL_CLR

#define AD5791_SOFT_CTRL_CLR   (1 << 1)

◆ AD5791_SOFT_CTRL_LDAC

#define AD5791_SOFT_CTRL_LDAC   (1 << 0)

◆ AD5791_SOFT_CTRL_RESET

#define AD5791_SOFT_CTRL_RESET   (1 << 2)

◆ AD5791_WRITE

#define AD5791_WRITE   (0ul << 23)

◆ MAX_RESOLUTION

#define MAX_RESOLUTION   20

Enumeration Type Documentation

◆ ad5791_lin_comp_select

Enumerator
AD5781_SPAN_UPTO_10V 
AD5781_SPAN_10V_TO_20V 
AD5791_SPAN_10V_TO_12V 
AD5791_SPAN_12V_TO_16V 
AD5791_SPAN_16V_TO_19V 
AD5791_SPAN_19V_TO_20V 

◆ ad5791_type

Enumerator
ID_AD5760 
ID_AD5780 
ID_AD5781 
ID_AD5790 
ID_AD5791 

Function Documentation

◆ ad5791_clear_async()

int ad5791_clear_async ( struct ad5791_dev * dev)

Clear DAC channel output with the clearcode.

Clear DAC channel output with the clearcode.

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

◆ ad5791_dac_ouput_state()

int32_t ad5791_dac_ouput_state ( struct ad5791_dev * dev,
uint8_t state )

Sets the DAC output in one of the three states.

Sets the DAC output in one of the three states.

Parameters
dev- The device structure.
state- The output state. Example: AD5791_OUT_NORMAL - normal operation mode AD5791_OUT_CLAMPED_6K - output is clamped via ~6KOhm to AGND AD5791_OUT_TRISTATE - output is in tristate
Returns
Negative error code or 0 in case of success.

◆ ad5791_get_register_value()

int32_t ad5791_get_register_value ( struct ad5791_dev * dev,
uint8_t register_address,
uint32_t * value )

Reads the value of a register.

Reads the value of a register.

Parameters
dev- The device structure.
register_address- Address of the register. Example: AD5791_REG_DAC - DAC register AD5791_REG_CTRL - Control register AD5791_REG_CLR_CODE - Clearcode register AD5791_CMD_WR_SOFT_CTRL - Software control register
value- Pointer to the register data.
Returns
dataRead - The register's value or negative error code.

◆ ad5791_init()

int32_t ad5791_init ( struct ad5791_dev ** device,
struct ad5791_init_param init_param )

Initializes the communication with the device.

Initializes the communication with the device.

Parameters
device- The device structure.
init_param- The structure that contains the device initial parameters.
Returns
status - Result of the initialization procedure. Example: 0 - if initialization was successful; -1 - if initialization was unsuccessful.

◆ ad5791_ldac_trigger()

int ad5791_ldac_trigger ( struct ad5791_dev * dev)

Trigger LDAC.

Trigger LDAC.

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

◆ ad5791_remove()

int32_t ad5791_remove ( struct ad5791_dev * dev)

Free the resources allocated by ad5791_init().

Free the resources allocated by ad5791_init().

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

◆ ad5791_set_dac_value()

int32_t ad5791_set_dac_value ( struct ad5791_dev * dev,
uint32_t value )

Writes to the DAC register.

Writes to the DAC register.

Parameters
dev- The device structure.
value- The value to be written to DAC.
Returns
Negative error code or 0 in case of success.

◆ ad5791_set_lin_comp()

int ad5791_set_lin_comp ( struct ad5791_dev * dev,
enum ad5791_lin_comp_select v_span )

Set Linearity error compensation based on the reference voltage span.

Set Linearity error compensation based on the reference voltage span.

Parameters
dev- The device structure.
v_span- voltage span to set the corresponding lin_comp value.
Returns
0 in case of success, negative error code otherwise.

◆ ad5791_set_register_value()

int32_t ad5791_set_register_value ( struct ad5791_dev * dev,
uint8_t register_address,
uint32_t register_value )

Writes data into a register.

Writes data into a register.

Parameters
dev- The device structure.
register_address- Address of the register. Example: AD5791_REG_DAC - DAC register AD5791_REG_CTRL - Control register AD5791_REG_CLR_CODE - Clearcode register AD5791_CMD_WR_SOFT_CTRL - Software control register
register_value- Value of the register.
Returns
Returns 0 in case of success or negative error code.

◆ ad5791_setup()

int32_t ad5791_setup ( struct ad5791_dev * dev,
uint32_t setup_word )

Configures the output amplifier, DAC coding, SDO state and the linearity error compensation.

Configures the output amplifier, DAC coding, SDO state and the linearity error compensation.

Parameters
dev- The device structure.
setup_word- Is a 24-bit value that sets or clears the Control Register bits : RBUF bit(AD5791_CTRL_RBUF(x)), BIN/2sC bit(AD5791_CTRL_BIN2SC(x)), SDODIS bit(AD5791_CTRL_SDODIS(x)) and LINCOMP bits(AD5791_CTRL_LINCOMP(x)). Example: AD5791_CTRL_BIN2SC(1) | AD5791_CTRL_RBUF(1) - sets the DAC register to use offset binary coding and powers down the internal output amplifier.
Returns
Negative error code or 0 in case of success.

◆ ad5791_soft_instruction()

int32_t ad5791_soft_instruction ( struct ad5791_dev * dev,
uint8_t instruction_bit )

Asserts RESET, CLR or LDAC in a software manner.

Asserts RESET, CLR or LDAC in a software manner.

Parameters
dev- The device structure.
instruction_bit- A Software Control Register bit. Example: AD5791_SOFT_CTRL_LDAC - Load DAC AD5791_SOFT_CTRL_CLR - Clear AD5791_SOFT_CTRL_RESET - Reset
Returns
Negative error code or 0 in case of success.

◆ ad5791_spi_write_mask()

int ad5791_spi_write_mask ( struct ad5791_dev * dev,
uint8_t register_address,
uint32_t mask,
uint32_t value )

SPI write to device using a mask.

SPI write to device using a mask.

Parameters
dev- The device structure.
register_address- Address of the register. Example: AD5791_REG_DAC - DAC register AD5791_REG_CTRL - Control register AD5791_REG_CLR_CODE - Clearcode register AD5791_CMD_WR_SOFT_CTRL - Software control register
mask- The mask.
value- The register data.
Returns
0 in case of success, negative error code otherwise.