no-OS
Macros | Functions
ad7124.c File Reference

AD7124 implementation file. Devices: AD7124-4, AD7124-8. More...

#include <stdlib.h>
#include <stdbool.h>
#include "ad7124.h"
#include "no-os/delay.h"
Include dependency graph for ad7124.c:

Macros

#define INVALID_VAL   -1 /* Invalid argument */
 
#define COMM_ERR   -2 /* Communication error on receive */
 
#define TIMEOUT   -3 /* A timeout has occured */
 
#define AD7124_POST_RESET_DELAY   4
 

Functions

int32_t ad7124_no_check_read_register (struct ad7124_dev *dev, struct ad7124_st_reg *p_reg)
 Reads the value of the specified register without checking if the device is ready to accept user requests. More...
 
int32_t ad7124_no_check_write_register (struct ad7124_dev *dev, struct ad7124_st_reg reg)
 Writes the value of the specified register without checking if the device is ready to accept user requests. More...
 
int32_t ad7124_read_register (struct ad7124_dev *dev, struct ad7124_st_reg *p_reg)
 Reads the value of the specified register only when the device is ready to accept user requests. If the device ready flag is deactivated the read operation will be executed without checking the device state. DEPRECATED, use ad7124_read_register2. More...
 
int32_t ad7124_read_register2 (struct ad7124_dev *dev, uint32_t reg, uint32_t *readval)
 Wrap the read register function to give it a modern signature. More...
 
int32_t ad7124_write_register (struct ad7124_dev *dev, struct ad7124_st_reg p_reg)
 Writes the value of the specified register only when the device is ready to accept user requests. If the device ready flag is deactivated the write operation will be executed without checking the device state. DEPRECATED, use ad7124_write_register2. More...
 
int32_t ad7124_write_register2 (struct ad7124_dev *dev, uint32_t reg, uint32_t writeval)
 Wrap the write register function to give it a modern signature. More...
 
int32_t ad7124_reset (struct ad7124_dev *dev)
 Resets the device. More...
 
int32_t ad7124_wait_for_spi_ready (struct ad7124_dev *dev, uint32_t timeout)
 Waits until the device can accept read and write user actions. More...
 
int32_t ad7124_wait_to_power_on (struct ad7124_dev *dev, uint32_t timeout)
 Waits until the device finishes the power-on reset operation. More...
 
int32_t ad7124_wait_for_conv_ready (struct ad7124_dev *dev, uint32_t timeout)
 Waits until a new conversion result is available. More...
 
int32_t ad7124_read_data (struct ad7124_dev *dev, int32_t *p_data)
 Reads the conversion result from the device. More...
 
int32_t ad7124_get_read_chan_id (struct ad7124_dev *dev, uint32_t *status)
 Get the ID of the channel of the latest conversion. More...
 
uint8_t ad7124_compute_crc8 (uint8_t *p_buf, uint8_t buf_size)
 Computes the CRC checksum for a data buffer. More...
 
void ad7124_update_crcsetting (struct ad7124_dev *dev)
 Updates the CRC settings. More...
 
void ad7124_update_dev_spi_settings (struct ad7124_dev *dev)
 Updates the device SPI interface settings. More...
 
int32_t ad7124_setup (struct ad7124_dev **device, struct ad7124_init_param *init_param)
 Initializes the AD7124. More...
 
int32_t ad7124_fclk_get (struct ad7124_dev *dev, float *f_clk)
 Get the AD7124 reference clock. More...
 
int32_t ad7124_fltcoff_get (struct ad7124_dev *dev, int16_t ch_no, uint16_t *flt_coff)
 Get the filter coefficient for the sample rate. More...
 
float ad7124_get_odr (struct ad7124_dev *dev, int16_t ch_no)
 Calculate ODR of the device. More...
 
int32_t ad7124_set_odr (struct ad7124_dev *dev, float odr, int16_t ch_no)
 Set ODR of the device. More...
 
int32_t ad7124_remove (struct ad7124_dev *dev)
 Free the resources allocated by AD7124_Setup(). More...
 

Detailed Description

AD7124 implementation file. Devices: AD7124-4, AD7124-8.

Copyright 2015-2019(c) Analog Devices, Inc.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, 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

◆ AD7124_POST_RESET_DELAY

#define AD7124_POST_RESET_DELAY   4

◆ COMM_ERR

#define COMM_ERR   -2 /* Communication error on receive */

◆ INVALID_VAL

#define INVALID_VAL   -1 /* Invalid argument */

◆ TIMEOUT

#define TIMEOUT   -3 /* A timeout has occured */

Function Documentation

◆ ad7124_compute_crc8()

uint8_t ad7124_compute_crc8 ( uint8_t *  p_buf,
uint8_t  buf_size 
)

Computes the CRC checksum for a data buffer.

Parameters
p_buf- Data buffer
buf_size- Data buffer size in bytes
Returns
Returns the computed CRC checksum.
Here is the caller graph for this function:

◆ ad7124_fclk_get()

int32_t ad7124_fclk_get ( struct ad7124_dev dev,
float *  f_clk 
)

Get the AD7124 reference clock.

Parameters
[in]dev- Pointer to the application handler.
[out]f_clk- Pointer to the clock frequency container.
Returns
0 in case of success, error code otherwise.
Here is the caller graph for this function:

◆ ad7124_fltcoff_get()

int32_t ad7124_fltcoff_get ( struct ad7124_dev dev,
int16_t  ch_no,
uint16_t *  flt_coff 
)

Get the filter coefficient for the sample rate.

Parameters
[in]dev- Pointer to the application handler.
[in]ch_no- Channel number.
[out]flt_coff- Pointer to the filter coefficient container.
Returns
0 in case of success, error code otherwise.
Here is the caller graph for this function:

◆ ad7124_get_odr()

float ad7124_get_odr ( struct ad7124_dev dev,
int16_t  ch_no 
)

Calculate ODR of the device.

Parameters
[in]dev- Pointer to the application handler.
[in]ch_no- Channel number.
Returns
Output data rate in case of success, negative error code otherwise.

◆ ad7124_get_read_chan_id()

int32_t ad7124_get_read_chan_id ( struct ad7124_dev dev,
uint32_t *  status 
)

Get the ID of the channel of the latest conversion.

Parameters
dev- The handler of the instance of the driver.
status- Pointer to store the read data.
Returns
Returns 0 for success or negative error code.

◆ ad7124_no_check_read_register()

int32_t ad7124_no_check_read_register ( struct ad7124_dev dev,
struct ad7124_st_reg p_reg 
)

Reads the value of the specified register without checking if the device is ready to accept user requests.

Parameters
dev- The handler of the instance of the driver.
p_reg- Pointer to the register structure holding info about the register to be read. The read value is stored inside the register structure.
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_no_check_write_register()

int32_t ad7124_no_check_write_register ( struct ad7124_dev dev,
struct ad7124_st_reg  reg 
)

Writes the value of the specified register without checking if the device is ready to accept user requests.

Parameters
dev- The handler of the instance of the driver.
reg- Register structure holding info about the register to be written
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_read_data()

int32_t ad7124_read_data ( struct ad7124_dev dev,
int32_t *  p_data 
)

Reads the conversion result from the device.

Parameters
dev- The handler of the instance of the driver.
p_data- Pointer to store the read data.
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_read_register()

int32_t ad7124_read_register ( struct ad7124_dev dev,
struct ad7124_st_reg p_reg 
)

Reads the value of the specified register only when the device is ready to accept user requests. If the device ready flag is deactivated the read operation will be executed without checking the device state. DEPRECATED, use ad7124_read_register2.

Parameters
dev- The handler of the instance of the driver.
p_reg- Pointer to the register structure holding info about the register to be read. The read value is stored inside the register structure.
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_read_register2()

int32_t ad7124_read_register2 ( struct ad7124_dev dev,
uint32_t  reg,
uint32_t *  readval 
)

Wrap the read register function to give it a modern signature.

Parameters
[in]dev- Driver handler pointer.
[in]reg- Address of the register to be read.
[out]readval- Pointer to the register value.
Returns
SUCCESS in case of success, error code otherwise.
Here is the caller graph for this function:

◆ ad7124_remove()

int32_t ad7124_remove ( struct ad7124_dev dev)

Free the resources allocated by AD7124_Setup().

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

◆ ad7124_reset()

int32_t ad7124_reset ( struct ad7124_dev dev)

Resets the device.

Parameters
dev- The handler of the instance of the driver.
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_set_odr()

int32_t ad7124_set_odr ( struct ad7124_dev dev,
float  odr,
int16_t  ch_no 
)

Set ODR of the device.

Parameters
[in]dev- Pointer to the application handler.
[in]odr- New ODR of the device.
[in]ch_no- Channel number.
Returns
0 in case of success, error code otherwise.

◆ ad7124_setup()

int32_t ad7124_setup ( struct ad7124_dev **  device,
struct ad7124_init_param init_param 
)

Initializes the AD7124.

Parameters
device- The device structure.
init_param- The structure that contains the device initial parameters.
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_update_crcsetting()

void ad7124_update_crcsetting ( struct ad7124_dev dev)

Updates the CRC settings.

Parameters
dev- The handler of the instance of the driver.
Returns
None.
Here is the caller graph for this function:

◆ ad7124_update_dev_spi_settings()

void ad7124_update_dev_spi_settings ( struct ad7124_dev dev)

Updates the device SPI interface settings.

Parameters
dev- The handler of the instance of the driver.
Returns
None.
Here is the caller graph for this function:

◆ ad7124_wait_for_conv_ready()

int32_t ad7124_wait_for_conv_ready ( struct ad7124_dev dev,
uint32_t  timeout 
)

Waits until a new conversion result is available.

Parameters
dev- The handler of the instance of the driver.
timeout- Count representing the number of polls to be done until the function returns if no new data is available.
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_wait_for_spi_ready()

int32_t ad7124_wait_for_spi_ready ( struct ad7124_dev dev,
uint32_t  timeout 
)

Waits until the device can accept read and write user actions.

Parameters
dev- The handler of the instance of the driver.
timeout- Count representing the number of polls to be done until the function returns.
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_wait_to_power_on()

int32_t ad7124_wait_to_power_on ( struct ad7124_dev dev,
uint32_t  timeout 
)

Waits until the device finishes the power-on reset operation.

Parameters
dev- The handler of the instance of the driver.
timeout- Count representing the number of polls to be done until the function returns.
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_write_register()

int32_t ad7124_write_register ( struct ad7124_dev dev,
struct ad7124_st_reg  p_reg 
)

Writes the value of the specified register only when the device is ready to accept user requests. If the device ready flag is deactivated the write operation will be executed without checking the device state. DEPRECATED, use ad7124_write_register2.

Parameters
dev- The handler of the instance of the driver.
p_reg- Register structure holding info about the register to be written
Returns
Returns 0 for success or negative error code.
Here is the caller graph for this function:

◆ ad7124_write_register2()

int32_t ad7124_write_register2 ( struct ad7124_dev dev,
uint32_t  reg,
uint32_t  writeval 
)

Wrap the write register function to give it a modern signature.

Parameters
[in]dev- Driver handler pointer.
[in]reg- Address of the register to be read.
[in]writeval- New value for the register.
Returns
SUCCESS in case of success, error code otherwise.
Here is the caller graph for this function: