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

Implementation of ADE7753 Driver. More...

#include "ade7753.h"
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include "no_os_util.h"
#include "no_os_spi.h"
#include "no_os_gpio.h"
#include "no_os_irq.h"
#include "no_os_delay.h"
#include "no_os_units.h"
#include "no_os_alloc.h"
#include "no_os_crc16.h"
#include "no_os_print_log.h"
#include <stdlib.h>
#include <errno.h>
#include <math.h>
Include dependency graph for ade7753.c:

Functions

int ade7753_init (struct ade7753_dev **device, struct ade7753_init_param init_param)
 Initialize the device.
 
int ade7753_read (struct ade7753_dev *dev, uint16_t reg_addr, int32_t *reg_data)
 Read device register.
 
int ade7753_write (struct ade7753_dev *dev, uint16_t reg_addr, uint32_t reg_data)
 Write device register.
 
int ade7753_update_bits (struct ade7753_dev *dev, uint16_t reg_addr, uint32_t mask, uint32_t reg_data)
 Update specific register bits.
 
int ade7753_remove (struct ade7753_dev *dev)
 Remove the device and release resources.
 
int ade7753_sw_reset (struct ade7753_dev *dev)
 Reset the device using SW reset.
 
int ade7753_hw_reset (struct ade7753_dev *dev)
 Reset the device using HW reset.
 
int ade7753_version_product (struct ade7753_dev *dev, uint32_t *data_read)
 Version product.
 
int ade7753_read_reset_iapk_val (struct ade7753_dev *dev, uint32_t *val)
 read with reset Ipeak val
 
int ade7753_reset_vpk_val (struct ade7753_dev *dev, uint32_t *val)
 read with reset Vpeak val
 
int ade7753_get_int_status (struct ade7753_dev *dev, uint32_t msk, uint8_t *status)
 Get interrupt indicator from STATUS register.
 
int ade7753_clear_irq_status (struct ade7753_dev *dev, int32_t *reg_data)
 Clear irq status flags.
 
int ade7753_enable_irq (struct ade7753_dev *dev, uint32_t msk, uint8_t en)
 Enable/Disable interrupt.
 
int ade7753_wave_update_rate (struct ade7753_dev *dev, enum ade7753_dtrt_e sel)
 Select waveform register update rate.
 
int ade7753_wave_sample_data_source (struct ade7753_dev *dev, enum ade7753_wavsel_e sel)
 Select source of sampled data for wave register.
 
int ade7753_energy_vals (struct ade7753_dev *dev, struct ade7753_energy_values *data)
 Read energy values.
 
int ade7753_rms_vals (struct ade7753_dev *dev, struct ade7753_rms_values *data)
 Read rms values.
 
int ade7753_period_val (struct ade7753_dev *dev, struct ade7753_period_value *data)
 Read period value.
 

Detailed Description

Implementation of ADE7753 Driver.

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

Copyright 2025(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Function Documentation

◆ ade7753_clear_irq_status()

int ade7753_clear_irq_status ( struct ade7753_dev * dev,
int32_t * reg_data )

Clear irq status flags.

Parameters
dev- The device structure.
reg_data- value of the status register
Returns
0 in case of success, negative error code otherwise.

◆ ade7753_enable_irq()

int ade7753_enable_irq ( struct ade7753_dev * dev,
uint32_t msk,
uint8_t en )

Enable/Disable interrupt.

Parameters
dev- The device structure.
msk- Interrupt mask.
en-Enable/Disable
Returns
0 in case of success, negative error code otherwise.

◆ ade7753_energy_vals()

int ade7753_energy_vals ( struct ade7753_dev * dev,
struct ade7753_energy_values * data )

Read energy values.

Parameters
dev- The device structure.
data- Structure to store energy values
Returns
0 in case of success, negative error code otherwise.

◆ ade7753_get_int_status()

int ade7753_get_int_status ( struct ade7753_dev * dev,
uint32_t msk,
uint8_t * status )

Get interrupt indicator from STATUS register.

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

◆ ade7753_hw_reset()

int ade7753_hw_reset ( struct ade7753_dev * dev)

Reset the device using HW reset.

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

◆ ade7753_init()

int ade7753_init ( struct ade7753_dev ** device,
struct ade7753_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.

◆ ade7753_period_val()

int ade7753_period_val ( struct ade7753_dev * dev,
struct ade7753_period_value * data )

Read period value.

Parameters
dev- The device structure.
data- Structure to store the period val
Returns
0 in case of success, negative error code otherwise.

◆ ade7753_read()

int ade7753_read ( struct ade7753_dev * dev,
uint16_t reg_addr,
int32_t * reg_data )

Read device register.

Parameters
dev- The device structure.
reg_addr- The register address.
reg_data- The data read from 32bit register.
Returns
0 in case of success, negative error code otherwise.

◆ ade7753_read_reset_iapk_val()

int ade7753_read_reset_iapk_val ( struct ade7753_dev * dev,
uint32_t * val )

read with reset Ipeak val

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

◆ ade7753_remove()

int ade7753_remove ( struct ade7753_dev * dev)

Remove the device and release resources.

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

◆ ade7753_reset_vpk_val()

int ade7753_reset_vpk_val ( struct ade7753_dev * dev,
uint32_t * val )

read with reset Vpeak val

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

◆ ade7753_rms_vals()

int ade7753_rms_vals ( struct ade7753_dev * dev,
struct ade7753_rms_values * data )

Read rms values.

Parameters
dev- The device structure.
data- Structure to store rms values
Returns
0 in case of success, negative error code otherwise.

◆ ade7753_sw_reset()

int ade7753_sw_reset ( struct ade7753_dev * dev)

Reset the device using SW reset.

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

◆ ade7753_update_bits()

int ade7753_update_bits ( struct ade7753_dev * dev,
uint16_t reg_addr,
uint32_t mask,
uint32_t reg_data )

Update specific register bits.

Parameters
dev- The device structure.
reg_addr- The register address.
mask- Specific bits mask.
reg_data- The data to be written.
Returns
0 in case of success, negative error code otherwise.

◆ ade7753_version_product()

int ade7753_version_product ( struct ade7753_dev * dev,
uint32_t * data_read )

Version product.

Parameters
dev- The device structure.
data_read- The version product read value
Returns
0 in case of success, negative error code otherwise.

◆ ade7753_wave_sample_data_source()

int ade7753_wave_sample_data_source ( struct ade7753_dev * dev,
enum ade7753_wavsel_e sel )

Select source of sampled data for wave register.

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

◆ ade7753_wave_update_rate()

int ade7753_wave_update_rate ( struct ade7753_dev * dev,
enum ade7753_dtrt_e sel )

Select waveform register update rate.

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

◆ ade7753_write()

int ade7753_write ( struct ade7753_dev * dev,
uint16_t reg_addr,
uint32_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.