no-OS
Functions
ade7913.c File Reference

Implementation of ADE7913 Driver. More...

#include <stdlib.h>
#include <errno.h>
#include <math.h>
#include "ade7913.h"
#include "no_os_delay.h"
#include "no_os_units.h"
#include "no_os_alloc.h"
#include "no_os_crc8.h"
#include "no_os_crc16.h"
#include "no_os_print_log.h"
Include dependency graph for ade7913.c:

Functions

int ade7913_read (struct ade7913_dev *dev, uint8_t reg_addr, uint8_t *reg_data)
 Read device register. More...
 
int ade7913_read_waveforms (struct ade7913_dev *dev, uint8_t reg_addr, uint8_t *reg_data)
 Read multiple devices. More...
 
int ade7913_write (struct ade7913_dev *dev, uint8_t reg_addr, uint8_t reg_data)
 Write device register. More...
 
int ade7913_write_broadcast (struct ade7913_dev *dev, uint8_t reg_addr, uint8_t *reg_data)
 Write broadcast. More...
 
int ade7913_init (struct ade7913_dev **device, struct ade7913_init_param init_param)
 Initialize the device. More...
 
int ade7913_remove (struct ade7913_dev *dev)
 Remove the device and release resources. More...
 
int ade7913_sw_reset (struct ade7913_dev *dev)
 Reset the device using SW reset. More...
 
int ade7913_wr_lock (struct ade7913_dev *dev)
 Lock device. More...
 
int ade7913_wr_unlock (struct ade7913_dev *dev)
 Unlock device. More...
 
int ade7913_get_sync_cnt_val (struct ade7913_dev *dev, uint16_t *counter)
 Get synchronization counter value. More...
 
int ade7913_set_clkout_en (struct ade7913_dev *dev, uint8_t clkout_en)
 Set clkout enable. More...
 
int ade7913_pwrdwn (struct ade7913_dev *dev, uint8_t pwrdwn)
 Power down enable. More...
 
int ade7913_temp_en (struct ade7913_dev *dev, uint8_t temp_en)
 Temperature enable. More...
 
int ade7913_sync_en (struct ade7913_dev *dev)
 Sync enable. More...
 
int ade7913_adc_freq (struct ade7913_dev *dev, enum ade7913_adc_freq_e frequency)
 Set ADC frequency. More...
 
int ade7913_lfp_bw (struct ade7913_dev *dev, uint8_t bw)
 Digital lpf bandwith select. More...
 
int ade7913_crc_status (struct ade7913_dev *dev, uint8_t *status)
 CRC of config registers status. More...
 
int ade7913_ic_prot_status (struct ade7913_dev *dev, uint8_t *status)
 IC config regs protection status. More...
 
int ade7913_emi_ctrl (struct ade7913_dev *dev, uint8_t emi_ctrl)
 Set EMI CTRL register. More...
 
int ade7913_adc_na_status (struct ade7913_dev *dev, uint8_t *status)
 ADC not accesed during one period status. More...
 
int ade7913_cnt_snapshot_val (struct ade7913_dev *dev, uint16_t *val)
 Cnt snapshot. More...
 
int ade7913_get_version_product (struct ade7913_dev *dev, uint8_t *ver_product)
 Get version product value. More...
 

Detailed Description

Implementation of ADE7913 Driver.

Author
Radu Etz (radu..nosp@m.etz@.nosp@m.analo.nosp@m.g.co.nosp@m.m)

Copyright 2024(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.

Function Documentation

◆ ade7913_adc_freq()

int ade7913_adc_freq ( struct ade7913_dev dev,
enum ade7913_adc_freq_e  frequency 
)

Set ADC frequency.

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

◆ ade7913_adc_na_status()

int ade7913_adc_na_status ( struct ade7913_dev dev,
uint8_t *  status 
)

ADC not accesed during one period status.

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

◆ ade7913_cnt_snapshot_val()

int ade7913_cnt_snapshot_val ( struct ade7913_dev dev,
uint16_t *  val 
)

Cnt snapshot.

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

◆ ade7913_crc_status()

int ade7913_crc_status ( struct ade7913_dev dev,
uint8_t *  status 
)

CRC of config registers status.

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

◆ ade7913_emi_ctrl()

int ade7913_emi_ctrl ( struct ade7913_dev dev,
uint8_t  emi_ctrl 
)

Set EMI CTRL register.

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

◆ ade7913_get_sync_cnt_val()

int ade7913_get_sync_cnt_val ( struct ade7913_dev dev,
uint16_t *  counter 
)

Get synchronization counter value.

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

◆ ade7913_get_version_product()

int ade7913_get_version_product ( struct ade7913_dev dev,
uint8_t *  ver_product 
)

Get version product value.

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

◆ ade7913_ic_prot_status()

int ade7913_ic_prot_status ( struct ade7913_dev dev,
uint8_t *  status 
)

IC config regs protection status.

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

◆ ade7913_init()

int ade7913_init ( struct ade7913_dev **  device,
struct ade7913_init_param  init_param 
)

Initialize the device.

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

◆ ade7913_lfp_bw()

int ade7913_lfp_bw ( struct ade7913_dev dev,
uint8_t  bw 
)

Digital lpf bandwith select.

Parameters
dev- The device structure.
bw- 0 - BW = 3.3kHz, 1 - BW = 2kHz (for CLKIN 4.096 MHz and ADC freq 8kHz).
Returns
0 in case of success, negative error code otherwise.

◆ ade7913_pwrdwn()

int ade7913_pwrdwn ( struct ade7913_dev dev,
uint8_t  pwrdwn 
)

Power down enable.

Parameters
dev- The device structure.
pwrdwn- 0 - dc-dc is functional, 1 - dc-dc is turned off.
Returns
0 in case of success, negative error code otherwise.

◆ ade7913_read()

int ade7913_read ( struct ade7913_dev dev,
uint8_t  reg_addr,
uint8_t *  reg_data 
)

Read device register.

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

◆ ade7913_read_waveforms()

int ade7913_read_waveforms ( struct ade7913_dev dev,
uint8_t  reg_addr,
uint8_t *  reg_data 
)

Read multiple devices.

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

◆ ade7913_remove()

int ade7913_remove ( struct ade7913_dev dev)

Remove the device and release resources.

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

◆ ade7913_set_clkout_en()

int ade7913_set_clkout_en ( struct ade7913_dev dev,
uint8_t  clkout_en 
)

Set clkout enable.

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

◆ ade7913_sw_reset()

int ade7913_sw_reset ( struct ade7913_dev dev)

Reset the device using SW reset.

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

◆ ade7913_sync_en()

int ade7913_sync_en ( struct ade7913_dev dev)

Sync enable.

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

◆ ade7913_temp_en()

int ade7913_temp_en ( struct ade7913_dev dev,
uint8_t  temp_en 
)

Temperature enable.

Parameters
dev- The device structure.
temp_en- 0 - voltage V2P V2M measured, 1 - internal temperature sensor measured .
Returns
0 in case of success, negative error code otherwise.

◆ ade7913_wr_lock()

int ade7913_wr_lock ( struct ade7913_dev dev)

Lock device.

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

◆ ade7913_wr_unlock()

int ade7913_wr_unlock ( struct ade7913_dev dev)

Unlock device.

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

◆ ade7913_write()

int ade7913_write ( struct ade7913_dev dev,
uint8_t  reg_addr,
uint8_t  reg_data 
)

Write device register.

Parameters
dev-The device structure.
reg_addr- The register address.
reg_data- The data to be written.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function:

◆ ade7913_write_broadcast()

int ade7913_write_broadcast ( struct ade7913_dev dev,
uint8_t  reg_addr,
uint8_t *  reg_data 
)

Write broadcast.

Parameters
dev-The device structure.
reg_addr- The register address.
reg_data- The data to be written.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function: