Wiki

This version (18 Feb 2019 09:13) was approved by jcolao.The Previously approved version (17 Oct 2018 15:45) is available.Diff

AD738x - No-OS Driver

Supported Devices

Evaluation Boards

Overview

The AD7380 and AD7381 are a 16-bit, 14-bit and 12- bit pin compatible family of dual simultaneous sampling, high speed, low power, successive approximation analog-to-digital converters (ADC) that operate from a 3.3 V power supply and features throughput rates up to 4 MSPS for the AD7380 and AD7381. The analog input type is differential, accept a wide common mode input voltage and are sampled and converted on the falling edge of CS.

The AD738x has optional integrated on-chip oversampling blocks to improve dynamic range and reduce noise at lower bandwidths. An internal 2.5 V reference is included.

Alternatively, an external reference up to 3.3 V can be used. The conversion process and data acquisition use standard control inputs allowing for easy interfacing to microprocessors or DSPs. It is compatible with 1.8 V, 2.5 V, 3.3 V interfaces, using the separate logic supply.

The AD738x is available in a 16-lead LFCSP package with operation specified from −40°C to +125°C.

Applications:

  • Motor control position feedback
  • Motor control current sense
  • Data acquisition systems
  • EDFA applications
  • I and Q demodulation
  • SONAR
  • Power Quality

No-OS Driver Description

Functions Declarations

Function Description
int32_t ad738x_init(ad738x_dev **device, ad738x_init_param init_param)
Initialize the device.
int32_t ad738x_remove(ad738x_dev *dev)
Free the resources allocated by ad738x_init().
int32_t ad738x_reference_sel(ad738x_dev *dev, ad738x_ref_sel ref_sel)
Enable internal or external reference.
int32_t ad738x_power_down_mode(ad738x_dev *dev, ad738x_pwd_mode pmode)
Device power down.
int32_t ad738x_oversampling_config(ad738x_dev *dev, ad738x_os_mode os_mode, ad738x_os_ratio os_ratio, ad738x_resolution res)
Sets the oversampling mode in the device (os_mode). Sets the oversampling ratio (osr). Sets the size of the conversion result data (res)
int32_t ad738x_reset(ad738x_dev *dev, ad738x_reset_type reset)
Device reset over SPI.
int32_t ad738x_set_conversion_mode(ad738x_dev *dev, ad738x_conv_mode mode)
Select if ADC A and ADC B output on both SDOA and SDOB lines (two wire mode) or only on on the SDOA line.
int32_t ad738x_spi_single_conversion(ad738x_dev *dev, uint16_t *adc_data)
Read conversion result from device.
int32_t ad738x_spi_write_mask(ad738x_dev *dev, uint8_t reg_addr, uint32_t mask, uint16_t data)
SPI write to device using a mask.
int32_t ad738x_spi_reg_write(ad738x_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Write to device.
int32_t ad738x_spi_reg_read(ad738x_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Read from device.

Types Declarations

typedef enum {
	TWO_WIRE_MODE,
	ONE_WIRE_MODE
} ad738x_conv_mode;
 
typedef enum {
	NORMAL_OS_MODE,
	ROLLING_OS_MODE
} ad738x_os_mode;
 
typedef enum {
	OSR_DISABLED,
	OSR_X2,
	OSR_X4,
	OSR_X8,
	OSR_X16,
	OSR_X32,
} ad738x_os_ratio;
 
typedef enum {
	RES_16_BIT,
	RES_18_BIT
} ad738x_resolution;
 
typedef enum {
	SOFT_RESET,
	HARD_RESET
} ad738x_reset_type;
 
typedef enum {
	NORMAL_PWDM,
	FULL_PWDM
} ad738x_pwd_mode;
 
typedef enum {
	INT_REF,
	EXT_REF
} ad738x_ref_sel;
 
typedef struct {
        /* SPI */
        spi_desc		    *spi_desc;
        /* Device Settings */
        ad738x_conv_mode 	conv_mode;
	ad738x_resolution 	resolution;
} ad738x_dev;
 
typedef struct {
        /* SPI */
        spi_init_param		    spi_init;
        /* Device Settings */
        ad738x_conv_mode 		conv_mode;
        ad738x_ref_sel			ref_sel;
} ad738x_init_param;

HDL Downloads

No-OS Downloads

resources/eval/user-guides/ad738x.txt · Last modified: 07 Feb 2019 03:40 by jcolao