no-OS
Loading...
Searching...
No Matches
iio_ad5933.c File Reference

Implementation of the AD5933 IIO driver. More...

#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <math.h>
#include "iio_ad5933.h"
#include "ad5933.h"
#include "iio.h"
#include "no_os_alloc.h"
#include "no_os_util.h"
#include <string.h>
Include dependency graph for iio_ad5933.c:

Macros

#define AD5933_TEMP_SCALE_INT   0
 
#define AD5933_TEMP_SCALE_MICRO   31250
 
#define AD5933_INIT_EXCITATION_TIME_ms   100
 
#define DECIMAL_TO_MICROS(x)
 
#define MICROS_TO_DECIMAL(x)
 
#define AD5933_STATE_SWEEP_DONE   0x0C
 
#define AD5933_CH_RW_ATTR(_name, _priv)
 
#define AD5933_CH_RO_ATTR(_name, _priv)
 

Enumerations

enum  ad5933_iio_chan {
  AD5933_CH_REAL ,
  AD5933_CH_IMAG ,
  AD5933_CH_TEMP
}
 
enum  ad5933_iio_attr_priv {
  AD5933_ATTR_TEMP_SCALE ,
  AD5933_ATTR_PGA_GAIN ,
  AD5933_ATTR_PGA_GAIN_AVAILABLE ,
  AD5933_ATTR_OUTPUT_RANGE ,
  AD5933_ATTR_OUTPUT_RANGE_AVAILABLE ,
  AD5933_ATTR_START_FREQ ,
  AD5933_ATTR_FREQ_INCREMENT ,
  AD5933_ATTR_FREQ_POINTS ,
  AD5933_ATTR_SETTLING_CYCLES ,
  AD5933_ATTR_SWEEP_INITIALIZED ,
  AD5933_ATTR_SWEEP_STARTED ,
  AD5933_ATTR_CURRENT_OUTPUT_FREQ ,
  AD5933_ATTR_REPEAT_MEASUREMENT ,
  AD5933_ATTR_INCREMENTED_MEASUREMENT ,
  AD5933_ATTR_CLK_FREQ ,
  AD5933_ATTR_MIN_OUTPUT_FREQ ,
  AD5933_ATTR_MAX_OUTPUT_FREQ
}
 

Functions

int ad5933_iio_init (struct ad5933_iio_dev **iio_dev, struct ad5933_iio_dev_init_param *init_param)
 Initialize the AD5933 IIO driver.
 
int ad5933_iio_remove (struct ad5933_iio_dev *desc)
 Free the resources allocated by ad5933_iio_init().
 

Detailed Description

Implementation of the AD5933 IIO driver.

Author
Mark John Lerry Casero (markj.nosp@m.ohnl.nosp@m.erry..nosp@m.case.nosp@m.ro@an.nosp@m.alog.nosp@m..com)

Copyright 2026(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ AD5933_CH_RO_ATTR

#define AD5933_CH_RO_ATTR ( _name,
_priv )
Value:
{ \
.name = _name, \
.priv = _priv, \
.show = ad5933_iio_read_attr, \
}

◆ AD5933_CH_RW_ATTR

#define AD5933_CH_RW_ATTR ( _name,
_priv )
Value:
{ \
.name = _name, \
.priv = _priv, \
.show = ad5933_iio_read_attr, \
.store = ad5933_iio_write_attr, \
}

◆ AD5933_INIT_EXCITATION_TIME_ms

#define AD5933_INIT_EXCITATION_TIME_ms   100

◆ AD5933_STATE_SWEEP_DONE

#define AD5933_STATE_SWEEP_DONE   0x0C

◆ AD5933_TEMP_SCALE_INT

#define AD5933_TEMP_SCALE_INT   0

◆ AD5933_TEMP_SCALE_MICRO

#define AD5933_TEMP_SCALE_MICRO   31250

◆ DECIMAL_TO_MICROS

#define DECIMAL_TO_MICROS ( x)
Value:
((x) * 1e6)

◆ MICROS_TO_DECIMAL

#define MICROS_TO_DECIMAL ( x)
Value:
((x) / 1e6)

Enumeration Type Documentation

◆ ad5933_iio_attr_priv

Device-attribute selector carried through iio_attribute.priv.

Enumerator
AD5933_ATTR_TEMP_SCALE 
AD5933_ATTR_PGA_GAIN 
AD5933_ATTR_PGA_GAIN_AVAILABLE 
AD5933_ATTR_OUTPUT_RANGE 
AD5933_ATTR_OUTPUT_RANGE_AVAILABLE 
AD5933_ATTR_START_FREQ 
AD5933_ATTR_FREQ_INCREMENT 
AD5933_ATTR_FREQ_POINTS 
AD5933_ATTR_SETTLING_CYCLES 
AD5933_ATTR_SWEEP_INITIALIZED 
AD5933_ATTR_SWEEP_STARTED 
AD5933_ATTR_CURRENT_OUTPUT_FREQ 
AD5933_ATTR_REPEAT_MEASUREMENT 
AD5933_ATTR_INCREMENTED_MEASUREMENT 
AD5933_ATTR_CLK_FREQ 
AD5933_ATTR_MIN_OUTPUT_FREQ 
AD5933_ATTR_MAX_OUTPUT_FREQ 

◆ ad5933_iio_chan

Per-channel selector carried through iio_channel.address.

Enumerator
AD5933_CH_REAL 
AD5933_CH_IMAG 
AD5933_CH_TEMP 

Function Documentation

◆ ad5933_iio_init()

int ad5933_iio_init ( struct ad5933_iio_dev ** iio_dev,
struct ad5933_iio_dev_init_param * init_param )

Initialize the AD5933 IIO driver.

Parameters
iio_dev- The AD5933 IIO device descriptor.
init_param- The AD5933 IIO device initialization parameters.
Returns
0 in case of success, negative error code otherwise.

◆ ad5933_iio_remove()

int ad5933_iio_remove ( struct ad5933_iio_dev * desc)

Free the resources allocated by ad5933_iio_init().

Parameters
desc- The AD5933 IIO device descriptor.
Returns
0 in case of success, negative error code otherwise.