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

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.

SPDX-License-Identifier: BSD-3-Clause

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.

◆ 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.

◆ 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.

◆ 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.

◆ 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.

◆ 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.

◆ 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.