no-OS
Loading...
Searching...
No Matches
ade7758.h File Reference

Header file of ADE7758 Driver. More...

#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 ade7758.h:

Classes

struct  ade7758_init_param
 ADE7758 Device initialization parameters. More...
 
struct  ade7758_dev
 ADE7758 Device structure. More...
 
struct  ade7758_energy_values
 ADE7758 energy registers values. More...
 
struct  ade7758_rms_values
 ADE7758 rms registers values. More...
 
struct  ade7758_freq_per_value
 ADE7758 pq values. More...
 
struct  ade7758_temp_value
 ADE7758 pq values. More...
 

Macros

#define ADE7758_SPI_READ   NO_OS_BIT(7)
 
#define ADE7758_VERSION   0x3F
 
#define ADE7758_REG_VERSION_PRODUCT   0x48
 
#define IS_7BITS_REG(x)
 
#define IS_8BITS_REG(x)
 
#define IS_12BITS_REG(x)
 
#define IS_16BITS_REG(x)
 
#define IS_24BITS_REG(x)
 
#define ADE7758_RESET_DEL   1
 
#define ADE7758_REG_AWATTHR   0x01
 
#define ADE7758_REG_BWATTHR   0x02
 
#define ADE7758_REG_CWATTHR   0x03
 
#define ADE7758_REG_AVARHR   0x04
 
#define ADE7758_REG_BVARHR   0x05
 
#define ADE7758_REG_CVARHR   0x06
 
#define ADE7758_REG_AVAHR   0x07
 
#define ADE7758_REG_BVAHR   0x08
 
#define ADE7758_REG_CVAHR   0x09
 
#define ADE7758_REG_AIRMS   0x0A
 
#define ADE7758_REG_BIRMS   0x0B
 
#define ADE7758_REG_CIRMS   0x0C
 
#define ADE7758_REG_AVRMS   0x0D
 
#define ADE7758_REG_BVRMS   0X0E
 
#define ADE7758_REG_CVRMS   0x0F
 
#define ADE7758_REG_FREQ   0x10
 
#define ADE7758_REG_TEMP   0x11
 
#define ADE7758_REG_WFORM   0x12
 
#define ADE7758_REG_OPMODE   0x13
 
#define ADE7758_REG_MMODE   0x14
 
#define ADE7758_REG_WAVMODE   0x15
 
#define ADE7758_REG_COMPMODE   0x16
 
#define ADE7758_REG_LCYCMODE   0x17
 
#define ADE7758_REG_MASK   0x18
 
#define ADE7758_REG_STATUS   0x19
 
#define ADE7758_REG_RSTATUS   0x1A
 
#define ADE7758_REG_ZXTOUT   0X1B
 
#define ADE7758_REG_LINECYC   0x1C
 
#define ADE7758_REG_SAGCYC   0x1D
 
#define ADE7758_REG_SAGLVL   0x1E
 
#define ADE7758_REG_VPINTLVL   0x1F
 
#define ADE7758_REG_IPINTLVL   0x20
 
#define ADE7758_REG_VPEAK   0x21
 
#define ADE7758_REG_IPEAK   0x22
 
#define ADE7758_REG_GAIN   0x23
 
#define ADE7758_REG_AVRMSGAIN   0x24
 
#define ADE7758_REG_BVRMSGAIN   0x25
 
#define ADE7758_REG_CVRMSGAIN   0x26
 
#define ADE7758_REG_AIGAIN   0x27
 
#define ADE7758_REG_BIGAIN   0x28
 
#define ADE7758_REG_CIGAIN   0x29
 
#define ADE7758_REG_AWG   0x2A
 
#define ADE7758_REG_BWG   0x2B
 
#define ADE7758_REG_CWG   0x2C
 
#define ADE7758_REG_AVARG   0x2D
 
#define ADE7758_REG_BVARG   0x2E
 
#define ADE7758_REG_CVARG   0x2F
 
#define ADE7758_REG_AVAG   0x30
 
#define ADE7758_REG_BVAG   0x31
 
#define ADE7758_REG_CVAG   0x32
 
#define ADE7758_REG_AVRMSOS   0x33
 
#define ADE7758_REG_BVRMSOS   0x34
 
#define ADE7758_REG_CVRMSOS   0x35
 
#define ADE7758_REG_AIRMSOS   0x36
 
#define ADE7758_REG_BIRMSOS   0x37
 
#define ADE7758_REG_CIRMSOS   0x38
 
#define ADE7758_REG_AWATTOS   0x39
 
#define ADE7758_REG_BWATTOS   0x3A
 
#define ADE7758_REG_CWATTOS   0x3B
 
#define ADE7758_REG_AVAROS   0x3C
 
#define ADE7758_REG_BVAROS   0x3D
 
#define ADE7758_REG_CVAROS   0x3E
 
#define ADE7758_REG_APHCAL   0x3F
 
#define ADE7758_REG_BPHCAL   0x40
 
#define ADE7758_REG_CPHCAL   0x41
 
#define ADE7758_REG_WDIV   0x42
 
#define ADE7758_REG_VARDIV   0x43
 
#define ADE7758_REG_VADIV   0x44
 
#define ADE7758_REG_APCFNUM   0x45
 
#define ADE7758_REG_APCFDEN   0x46
 
#define ADE7758_REG_VARCFNUM   0x47
 
#define ADE7758_REG_VARCFDEN   0x48
 
#define ADE7758_REG_CHKSUM   0x7E
 
#define ADE7758_REG_VERSION   0x7F
 
#define ADE7758_SWRST_MSK   NO_OS_BIT(6)
 
#define ADE7758_DISMOD_MSK   NO_OS_GENMASK(5, 3)
 
#define ADE7758_DISCF_MSK   NO_OS_BIT(2)
 
#define ADE7758_DISLPF_MSK   NO_OS_BIT(1)
 
#define ADE7758_DISHPF_MSK   NO_OS_BIT(0)
 
#define ADE7758_PKIRQSEL_MSK   NO_OS_GENMASK(7, 5)
 
#define ADE7758_PEAKSEL_MSK   NO_OS_GENMASK(4, 2)
 
#define ADE7758_FREQSEL_MSK   NO_OS_GENMASK(1, 0)
 
#define ADE7758_VACF_MSK   NO_OS_BIT(7)
 
#define ADE7758_DTRT_MSK   NO_OS_GENMASK(6, 5)
 
#define ADE7758_WAVSEL_MSK   NO_OS_GENMASK(4, 2)
 
#define ADE7758_PHSEL_MSK   NO_OS_GENMASK(1, 0)
 
#define ADE7758_NOLOAD_MSK   NO_OS_BIT(7)
 
#define ADE7758_SAVAR_MSK   NO_OS_BIT(6)
 
#define ADE7758_ABS_MSK   NO_OS_BIT(5)
 
#define ADE7758_TERMSEL_MSK   NO_OS_GENMASK(4, 2)
 
#define ADE7758_CONSEL_MSK   NO_OS_GENMASK(1, 0)
 
#define ADE7758_FREQ_PERIOD_SEL_MSK   NO_OS_BIT(7)
 
#define ADE7758_RSTREAD_MSK   NO_OS_BIT(6)
 
#define ADE7758_ZXSEL_MSK   NO_OS_GENMASK(5, 3)
 
#define ADE7758_LVA_MSK   NO_OS_BIT(2)
 
#define ADE7758_LVAR_MSK   NO_OS_BIT(1)
 
#define ADE7758_LWATT_MSK   NO_OS_BIT(0)
 
#define ADE7758_SEQERR_MSK   NO_OS_BIT(19)
 
#define ADE7758_REVPRP_MSK   NO_OS_BIT(18)
 
#define ADE7758_REVPAP_MSK   NO_OS_BIT(17)
 
#define ADE7758_WFSM_MSK   NO_OS_BIT(16)
 
#define ADE7758_PKI_MSK   NO_OS_BIT(15)
 
#define ADE7758_PKV_MSK   NO_OS_BIT(14)
 
#define ADE7758_RESET_MSK   NO_OS_BIT(13)
 
#define ADE7758_LENERGY_MSK   NO_OS_BIT(12)
 
#define ADE7758_ZXC_MSK   NO_OS_BIT(11)
 
#define ADE7758_ZXB_MSK   NO_OS_BIT(10)
 
#define ADE7758_ZXA_MSK   NO_OS_BIT(9)
 
#define ADE7758_ZXTOC_MSK   NO_OS_BIT(8)
 
#define ADE7758_ZXTOB_MSK   NO_OS_BIT(7)
 
#define ADE7758_ZXTOA_MSK   NO_OS_BIT(6)
 
#define ADE7758_SAGC_MSK   NO_OS_BIT(5)
 
#define ADE7758_SAGB_MSK   NO_OS_BIT(4)
 
#define ADE7758_SAGA_MSK   NO_OS_BIT(3)
 
#define ADE7758_VAEHF_MSK   NO_OS_BIT(2)
 
#define ADE7758_REHF_MSK   NO_OS_BIT(1)
 
#define ADE7758_AEHF_MSK   NO_OS_BIT(0)
 
#define ADE7758_INTEGRATOR_EN_MSK   NO_OS_BIT(7)
 
#define ADE7758_PGA2_GAIN_MSK   NO_OS_GENMASK(6, 5)
 
#define ADE7758_FULL_SCALE_MSK   NO_OS_GENMASK(4, 3)
 
#define ADE7758_PGA1_GAIN_MSK   NO_OS_GENMASK(1, 0)
 

Enumerations

enum  ade7758_dismod {
  ADE7758_NORMAL_OPERATION ,
  ADE7758_SWITCH_OFF_CURRENT_ADC ,
  ADE7758_SWITCH_OFF_VOLTAGE_ADC ,
  ADE7758_SLEEP_MODE ,
  ADE7758_SWAP_VOLTAGE_CURRENT ,
  ADE7758_OFF_CURRENT_ADCS_REDIRECTED_TO_VOLTAGE ,
  ADE7758_OFF_VOLTAGE_ADCS_REDIRECTED_TO_CURRENT ,
  ADE7758_POWER_DOWN_MODE
}
 ADE7758 ADCs can be turned off by using these bits. More...
 
enum  ade7758_phsel {
  ADE7758_PHASE_A ,
  ADE7758_PHASE_B ,
  ADE7758_PHASE_C
}
 ADE7758 select the phase of the waveform sample or the source for the voltage line frequency measurement. More...
 
enum  ade7758_wavesel {
  ADE7758_CURRENT ,
  ADE7758_VOLTAGE ,
  ADE7758_ACTIVE_POWER ,
  ADE7758_REACTIVE_POWER ,
  ADE7758_APPARENT_POWER
}
 ADE7758 select the type of waveform. More...
 
enum  ade7758_data_rate {
  ADE7758_DATA_RATE_26_04KSPS ,
  ADE7758_DATA_RATE_13_02KSPS ,
  ADE7758_DATA_RATE_6_51KSPS ,
  ADE7758_DATA_RATE_3_25KSPS
}
 ADE7758 select the data rate. More...
 
enum  ade7758_consel {
  ADE7758_CONSEL_0 ,
  ADE7758_CONSEL_1 ,
  ADE7758_CONSEL_2
}
 ADE7758 select the input to the energy accumulation registers. More...
 
enum  ade7758_pga_gain {
  ADE7758_PGA_GAIN_1 ,
  ADE7758_PGA_GAIN_2
}
 ADE7758 select the PGA gain. More...
 
enum  ade7758_ch_full_scale_sel {
  ADE7758_FS_0_5 ,
  ADE7758_FS_0_25 ,
  ADE7758_FS_0_125
}
 ADE7758 Current input full-scale select. More...
 

Functions

int ade7758_init (struct ade7758_dev **device, struct ade7758_init_param init_param)
 Initialize the device.
 
int ade7758_setup (struct ade7758_dev *dev)
 Setup the ADE7758 device.
 
int ade7758_read (struct ade7758_dev *dev, uint16_t reg_addr, int32_t *reg_data)
 Read device register.
 
int ade7758_write (struct ade7758_dev *dev, uint16_t reg_addr, uint32_t reg_data)
 Write device register.
 
int ade7758_update_bits (struct ade7758_dev *dev, uint16_t reg_addr, uint32_t mask, uint32_t reg_data)
 Update specific register bits.
 
int ade7758_remove (struct ade7758_dev *dev)
 Remove the device and release resources.
 
int ade7758_sw_reset (struct ade7758_dev *dev)
 Reset the device using SW reset.
 
int ade7758_version_product (struct ade7758_dev *dev, uint32_t *data_read)
 Version product.
 
int ade7758_read_ipk_val (struct ade7758_dev *dev, uint32_t *val)
 read Ipeak val
 
int ade7758_vpk_val (struct ade7758_dev *dev, uint32_t *val)
 read Vpeak val
 
int ade7758_get_int_status (struct ade7758_dev *dev, uint32_t msk, uint8_t *status)
 Get interrupt indicator from STATUS register.
 
int ade7758_clear_irq_status (struct ade7758_dev *dev, int32_t *reg_data)
 Clear irq status flags.
 
int ade7758_enable_irq (struct ade7758_dev *dev, uint32_t msk, uint8_t en)
 Enable/Disable interrupt.
 
int ade7758_wave_update_rate (struct ade7758_dev *dev, enum ade7758_data_rate sel)
 Select waveform register update rate.
 
int ade7758_wave_sample_data_source (struct ade7758_dev *dev, enum ade7758_wavesel sel)
 Select source of sampled data for wave register.
 
int ade7758_wave_phase_sel (struct ade7758_dev *dev, enum ade7758_phsel sel)
 Select the phase of sampled data for wave register.
 
int ade7758_consel (struct ade7758_dev *dev, enum ade7758_consel sel)
 Select the input to the energy accumulation registers.
 
int ade7758_freq_source (struct ade7758_dev *dev, enum ade7758_phsel sel)
 Select the source of the measurement of the voltage line frequency.
 
int ade7758_adcs_mode (struct ade7758_dev *dev, enum ade7758_dismod sel)
 Operation mode of the ADCs.
 
int ade7758_energy_vals_phase_a (struct ade7758_dev *dev, struct ade7758_energy_values *data)
 Read energy values phase A.
 
int ade7758_energy_vals_phase_b (struct ade7758_dev *dev, struct ade7758_energy_values *data)
 Read energy values phase B.
 
int ade7758_energy_vals_phase_c (struct ade7758_dev *dev, struct ade7758_energy_values *data)
 Read energy values phase C.
 
int ade7758_rms_vals_phase_a (struct ade7758_dev *dev, struct ade7758_rms_values *data)
 Read rms values phase A.
 
int ade7758_rms_vals_phase_b (struct ade7758_dev *dev, struct ade7758_rms_values *data)
 Read rms values phase B.
 
int ade7758_rms_vals_phase_c (struct ade7758_dev *dev, struct ade7758_rms_values *data)
 Read rms values phase C.
 
int ade7758_frequency_period_val (struct ade7758_dev *dev, struct ade7758_freq_per_value *data)
 Read frequency/period value.
 
int ade7758_temperature_val (struct ade7758_dev *dev, struct ade7758_temp_value *data)
 Read temperature value.
 

Detailed Description

Header file of ADE7758 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

Macro Definition Documentation

◆ ADE7758_ABS_MSK

#define ADE7758_ABS_MSK   NO_OS_BIT(5)

◆ ADE7758_AEHF_MSK

#define ADE7758_AEHF_MSK   NO_OS_BIT(0)

◆ ADE7758_CONSEL_MSK

#define ADE7758_CONSEL_MSK   NO_OS_GENMASK(1, 0)

◆ ADE7758_DISCF_MSK

#define ADE7758_DISCF_MSK   NO_OS_BIT(2)

◆ ADE7758_DISHPF_MSK

#define ADE7758_DISHPF_MSK   NO_OS_BIT(0)

◆ ADE7758_DISLPF_MSK

#define ADE7758_DISLPF_MSK   NO_OS_BIT(1)

◆ ADE7758_DISMOD_MSK

#define ADE7758_DISMOD_MSK   NO_OS_GENMASK(5, 3)

◆ ADE7758_DTRT_MSK

#define ADE7758_DTRT_MSK   NO_OS_GENMASK(6, 5)

◆ ADE7758_FREQ_PERIOD_SEL_MSK

#define ADE7758_FREQ_PERIOD_SEL_MSK   NO_OS_BIT(7)

◆ ADE7758_FREQSEL_MSK

#define ADE7758_FREQSEL_MSK   NO_OS_GENMASK(1, 0)

◆ ADE7758_FULL_SCALE_MSK

#define ADE7758_FULL_SCALE_MSK   NO_OS_GENMASK(4, 3)

◆ ADE7758_INTEGRATOR_EN_MSK

#define ADE7758_INTEGRATOR_EN_MSK   NO_OS_BIT(7)

◆ ADE7758_LENERGY_MSK

#define ADE7758_LENERGY_MSK   NO_OS_BIT(12)

◆ ADE7758_LVA_MSK

#define ADE7758_LVA_MSK   NO_OS_BIT(2)

◆ ADE7758_LVAR_MSK

#define ADE7758_LVAR_MSK   NO_OS_BIT(1)

◆ ADE7758_LWATT_MSK

#define ADE7758_LWATT_MSK   NO_OS_BIT(0)

◆ ADE7758_NOLOAD_MSK

#define ADE7758_NOLOAD_MSK   NO_OS_BIT(7)

◆ ADE7758_PEAKSEL_MSK

#define ADE7758_PEAKSEL_MSK   NO_OS_GENMASK(4, 2)

◆ ADE7758_PGA1_GAIN_MSK

#define ADE7758_PGA1_GAIN_MSK   NO_OS_GENMASK(1, 0)

◆ ADE7758_PGA2_GAIN_MSK

#define ADE7758_PGA2_GAIN_MSK   NO_OS_GENMASK(6, 5)

◆ ADE7758_PHSEL_MSK

#define ADE7758_PHSEL_MSK   NO_OS_GENMASK(1, 0)

◆ ADE7758_PKI_MSK

#define ADE7758_PKI_MSK   NO_OS_BIT(15)

◆ ADE7758_PKIRQSEL_MSK

#define ADE7758_PKIRQSEL_MSK   NO_OS_GENMASK(7, 5)

◆ ADE7758_PKV_MSK

#define ADE7758_PKV_MSK   NO_OS_BIT(14)

◆ ADE7758_REG_AIGAIN

#define ADE7758_REG_AIGAIN   0x27

◆ ADE7758_REG_AIRMS

#define ADE7758_REG_AIRMS   0x0A

◆ ADE7758_REG_AIRMSOS

#define ADE7758_REG_AIRMSOS   0x36

◆ ADE7758_REG_APCFDEN

#define ADE7758_REG_APCFDEN   0x46

◆ ADE7758_REG_APCFNUM

#define ADE7758_REG_APCFNUM   0x45

◆ ADE7758_REG_APHCAL

#define ADE7758_REG_APHCAL   0x3F

◆ ADE7758_REG_AVAG

#define ADE7758_REG_AVAG   0x30

◆ ADE7758_REG_AVAHR

#define ADE7758_REG_AVAHR   0x07

◆ ADE7758_REG_AVARG

#define ADE7758_REG_AVARG   0x2D

◆ ADE7758_REG_AVARHR

#define ADE7758_REG_AVARHR   0x04

◆ ADE7758_REG_AVAROS

#define ADE7758_REG_AVAROS   0x3C

◆ ADE7758_REG_AVRMS

#define ADE7758_REG_AVRMS   0x0D

◆ ADE7758_REG_AVRMSGAIN

#define ADE7758_REG_AVRMSGAIN   0x24

◆ ADE7758_REG_AVRMSOS

#define ADE7758_REG_AVRMSOS   0x33

◆ ADE7758_REG_AWATTHR

#define ADE7758_REG_AWATTHR   0x01

◆ ADE7758_REG_AWATTOS

#define ADE7758_REG_AWATTOS   0x39

◆ ADE7758_REG_AWG

#define ADE7758_REG_AWG   0x2A

◆ ADE7758_REG_BIGAIN

#define ADE7758_REG_BIGAIN   0x28

◆ ADE7758_REG_BIRMS

#define ADE7758_REG_BIRMS   0x0B

◆ ADE7758_REG_BIRMSOS

#define ADE7758_REG_BIRMSOS   0x37

◆ ADE7758_REG_BPHCAL

#define ADE7758_REG_BPHCAL   0x40

◆ ADE7758_REG_BVAG

#define ADE7758_REG_BVAG   0x31

◆ ADE7758_REG_BVAHR

#define ADE7758_REG_BVAHR   0x08

◆ ADE7758_REG_BVARG

#define ADE7758_REG_BVARG   0x2E

◆ ADE7758_REG_BVARHR

#define ADE7758_REG_BVARHR   0x05

◆ ADE7758_REG_BVAROS

#define ADE7758_REG_BVAROS   0x3D

◆ ADE7758_REG_BVRMS

#define ADE7758_REG_BVRMS   0X0E

◆ ADE7758_REG_BVRMSGAIN

#define ADE7758_REG_BVRMSGAIN   0x25

◆ ADE7758_REG_BVRMSOS

#define ADE7758_REG_BVRMSOS   0x34

◆ ADE7758_REG_BWATTHR

#define ADE7758_REG_BWATTHR   0x02

◆ ADE7758_REG_BWATTOS

#define ADE7758_REG_BWATTOS   0x3A

◆ ADE7758_REG_BWG

#define ADE7758_REG_BWG   0x2B

◆ ADE7758_REG_CHKSUM

#define ADE7758_REG_CHKSUM   0x7E

◆ ADE7758_REG_CIGAIN

#define ADE7758_REG_CIGAIN   0x29

◆ ADE7758_REG_CIRMS

#define ADE7758_REG_CIRMS   0x0C

◆ ADE7758_REG_CIRMSOS

#define ADE7758_REG_CIRMSOS   0x38

◆ ADE7758_REG_COMPMODE

#define ADE7758_REG_COMPMODE   0x16

◆ ADE7758_REG_CPHCAL

#define ADE7758_REG_CPHCAL   0x41

◆ ADE7758_REG_CVAG

#define ADE7758_REG_CVAG   0x32

◆ ADE7758_REG_CVAHR

#define ADE7758_REG_CVAHR   0x09

◆ ADE7758_REG_CVARG

#define ADE7758_REG_CVARG   0x2F

◆ ADE7758_REG_CVARHR

#define ADE7758_REG_CVARHR   0x06

◆ ADE7758_REG_CVAROS

#define ADE7758_REG_CVAROS   0x3E

◆ ADE7758_REG_CVRMS

#define ADE7758_REG_CVRMS   0x0F

◆ ADE7758_REG_CVRMSGAIN

#define ADE7758_REG_CVRMSGAIN   0x26

◆ ADE7758_REG_CVRMSOS

#define ADE7758_REG_CVRMSOS   0x35

◆ ADE7758_REG_CWATTHR

#define ADE7758_REG_CWATTHR   0x03

◆ ADE7758_REG_CWATTOS

#define ADE7758_REG_CWATTOS   0x3B

◆ ADE7758_REG_CWG

#define ADE7758_REG_CWG   0x2C

◆ ADE7758_REG_FREQ

#define ADE7758_REG_FREQ   0x10

◆ ADE7758_REG_GAIN

#define ADE7758_REG_GAIN   0x23

◆ ADE7758_REG_IPEAK

#define ADE7758_REG_IPEAK   0x22

◆ ADE7758_REG_IPINTLVL

#define ADE7758_REG_IPINTLVL   0x20

◆ ADE7758_REG_LCYCMODE

#define ADE7758_REG_LCYCMODE   0x17

◆ ADE7758_REG_LINECYC

#define ADE7758_REG_LINECYC   0x1C

◆ ADE7758_REG_MASK

#define ADE7758_REG_MASK   0x18

◆ ADE7758_REG_MMODE

#define ADE7758_REG_MMODE   0x14

◆ ADE7758_REG_OPMODE

#define ADE7758_REG_OPMODE   0x13

◆ ADE7758_REG_RSTATUS

#define ADE7758_REG_RSTATUS   0x1A

◆ ADE7758_REG_SAGCYC

#define ADE7758_REG_SAGCYC   0x1D

◆ ADE7758_REG_SAGLVL

#define ADE7758_REG_SAGLVL   0x1E

◆ ADE7758_REG_STATUS

#define ADE7758_REG_STATUS   0x19

◆ ADE7758_REG_TEMP

#define ADE7758_REG_TEMP   0x11

◆ ADE7758_REG_VADIV

#define ADE7758_REG_VADIV   0x44

◆ ADE7758_REG_VARCFDEN

#define ADE7758_REG_VARCFDEN   0x48

◆ ADE7758_REG_VARCFNUM

#define ADE7758_REG_VARCFNUM   0x47

◆ ADE7758_REG_VARDIV

#define ADE7758_REG_VARDIV   0x43

◆ ADE7758_REG_VERSION

#define ADE7758_REG_VERSION   0x7F

◆ ADE7758_REG_VERSION_PRODUCT

#define ADE7758_REG_VERSION_PRODUCT   0x48

◆ ADE7758_REG_VPEAK

#define ADE7758_REG_VPEAK   0x21

◆ ADE7758_REG_VPINTLVL

#define ADE7758_REG_VPINTLVL   0x1F

◆ ADE7758_REG_WAVMODE

#define ADE7758_REG_WAVMODE   0x15

◆ ADE7758_REG_WDIV

#define ADE7758_REG_WDIV   0x42

◆ ADE7758_REG_WFORM

#define ADE7758_REG_WFORM   0x12

◆ ADE7758_REG_ZXTOUT

#define ADE7758_REG_ZXTOUT   0X1B

◆ ADE7758_REHF_MSK

#define ADE7758_REHF_MSK   NO_OS_BIT(1)

◆ ADE7758_RESET_DEL

#define ADE7758_RESET_DEL   1

◆ ADE7758_RESET_MSK

#define ADE7758_RESET_MSK   NO_OS_BIT(13)

◆ ADE7758_REVPAP_MSK

#define ADE7758_REVPAP_MSK   NO_OS_BIT(17)

◆ ADE7758_REVPRP_MSK

#define ADE7758_REVPRP_MSK   NO_OS_BIT(18)

◆ ADE7758_RSTREAD_MSK

#define ADE7758_RSTREAD_MSK   NO_OS_BIT(6)

◆ ADE7758_SAGA_MSK

#define ADE7758_SAGA_MSK   NO_OS_BIT(3)

◆ ADE7758_SAGB_MSK

#define ADE7758_SAGB_MSK   NO_OS_BIT(4)

◆ ADE7758_SAGC_MSK

#define ADE7758_SAGC_MSK   NO_OS_BIT(5)

◆ ADE7758_SAVAR_MSK

#define ADE7758_SAVAR_MSK   NO_OS_BIT(6)

◆ ADE7758_SEQERR_MSK

#define ADE7758_SEQERR_MSK   NO_OS_BIT(19)

◆ ADE7758_SPI_READ

#define ADE7758_SPI_READ   NO_OS_BIT(7)

◆ ADE7758_SWRST_MSK

#define ADE7758_SWRST_MSK   NO_OS_BIT(6)

◆ ADE7758_TERMSEL_MSK

#define ADE7758_TERMSEL_MSK   NO_OS_GENMASK(4, 2)

◆ ADE7758_VACF_MSK

#define ADE7758_VACF_MSK   NO_OS_BIT(7)

◆ ADE7758_VAEHF_MSK

#define ADE7758_VAEHF_MSK   NO_OS_BIT(2)

◆ ADE7758_VERSION

#define ADE7758_VERSION   0x3F

◆ ADE7758_WAVSEL_MSK

#define ADE7758_WAVSEL_MSK   NO_OS_GENMASK(4, 2)

◆ ADE7758_WFSM_MSK

#define ADE7758_WFSM_MSK   NO_OS_BIT(16)

◆ ADE7758_ZXA_MSK

#define ADE7758_ZXA_MSK   NO_OS_BIT(9)

◆ ADE7758_ZXB_MSK

#define ADE7758_ZXB_MSK   NO_OS_BIT(10)

◆ ADE7758_ZXC_MSK

#define ADE7758_ZXC_MSK   NO_OS_BIT(11)

◆ ADE7758_ZXSEL_MSK

#define ADE7758_ZXSEL_MSK   NO_OS_GENMASK(5, 3)

◆ ADE7758_ZXTOA_MSK

#define ADE7758_ZXTOA_MSK   NO_OS_BIT(6)

◆ ADE7758_ZXTOB_MSK

#define ADE7758_ZXTOB_MSK   NO_OS_BIT(7)

◆ ADE7758_ZXTOC_MSK

#define ADE7758_ZXTOC_MSK   NO_OS_BIT(8)

◆ IS_12BITS_REG

#define IS_12BITS_REG ( x)
Value:
(((x) == ADE7758_REG_FREQ) || ((x) >= ADE7758_REG_AVRMSGAIN && (x) <= ADE7758_REG_CVAROS) \
|| ((x) == ADE7758_REG_APCFDEN) || ((x) == ADE7758_REG_VARCFDEN))
#define ADE7758_REG_CVAROS
Definition ade7758.h:115
#define ADE7758_REG_AVRMSGAIN
Definition ade7758.h:89
#define ADE7758_REG_FREQ
Definition ade7758.h:69
#define ADE7758_REG_VARCFDEN
Definition ade7758.h:125
#define ADE7758_REG_APCFDEN
Definition ade7758.h:123

◆ IS_16BITS_REG

#define IS_16BITS_REG ( x)
Value:
(((x) >= ADE7758_REG_AWATTHR && (x) <= ADE7758_REG_CVAHR) \
|| ((x) >= ADE7758_REG_ZXTOUT && (x) <= ADE7758_REG_LINECYC) || ((x) == ADE7758_REG_APCFNUM) \
|| ((x) == ADE7758_REG_VARCFNUM))
#define ADE7758_REG_ZXTOUT
Definition ade7758.h:80
#define ADE7758_REG_LINECYC
Definition ade7758.h:81
#define ADE7758_REG_CVAHR
Definition ade7758.h:62
#define ADE7758_REG_VARCFNUM
Definition ade7758.h:124
#define ADE7758_REG_APCFNUM
Definition ade7758.h:122
#define ADE7758_REG_AWATTHR
Definition ade7758.h:54

◆ IS_24BITS_REG

#define IS_24BITS_REG ( x)
Value:
(((x) >= ADE7758_REG_AIRMS && (x) <= ADE7758_REG_CVRMS) \
|| ((x) == ADE7758_REG_WFORM) || ((x) >= ADE7758_REG_MASK && (x) <= ADE7758_REG_RSTATUS))
#define ADE7758_REG_MASK
Definition ade7758.h:77
#define ADE7758_REG_WFORM
Definition ade7758.h:71
#define ADE7758_REG_AIRMS
Definition ade7758.h:63
#define ADE7758_REG_CVRMS
Definition ade7758.h:68
#define ADE7758_REG_RSTATUS
Definition ade7758.h:79

◆ IS_7BITS_REG

#define IS_7BITS_REG ( x)
Value:
#define ADE7758_REG_APHCAL
Definition ade7758.h:116
#define ADE7758_REG_CPHCAL
Definition ade7758.h:118

◆ IS_8BITS_REG

#define IS_8BITS_REG ( x)
Value:
(((x) == ADE7758_REG_TEMP) || ((x) >= ADE7758_REG_OPMODE && (x) <= ADE7758_REG_LCYCMODE) \
|| ((x) >= ADE7758_REG_SAGCYC && (x) <= ADE7758_REG_GAIN) || ((x) >= ADE7758_REG_WDIV && (x) <= ADE7758_REG_VADIV) \
#define ADE7758_REG_GAIN
Definition ade7758.h:88
#define ADE7758_REG_CHKSUM
Definition ade7758.h:126
#define ADE7758_REG_WDIV
Definition ade7758.h:119
#define ADE7758_REG_VADIV
Definition ade7758.h:121
#define ADE7758_REG_SAGCYC
Definition ade7758.h:82
#define ADE7758_REG_LCYCMODE
Definition ade7758.h:76
#define ADE7758_REG_OPMODE
Definition ade7758.h:72
#define ADE7758_REG_TEMP
Definition ade7758.h:70
#define ADE7758_REG_VERSION
Definition ade7758.h:127

Enumeration Type Documentation

◆ ade7758_ch_full_scale_sel

ADE7758 Current input full-scale select.

Enumerator
ADE7758_FS_0_5 
ADE7758_FS_0_25 
ADE7758_FS_0_125 

◆ ade7758_consel

ADE7758 select the input to the energy accumulation registers.

Enumerator
ADE7758_CONSEL_0 
ADE7758_CONSEL_1 
ADE7758_CONSEL_2 

◆ ade7758_data_rate

ADE7758 select the data rate.

Enumerator
ADE7758_DATA_RATE_26_04KSPS 
ADE7758_DATA_RATE_13_02KSPS 
ADE7758_DATA_RATE_6_51KSPS 
ADE7758_DATA_RATE_3_25KSPS 

◆ ade7758_dismod

ADE7758 ADCs can be turned off by using these bits.

Enumerator
ADE7758_NORMAL_OPERATION 
ADE7758_SWITCH_OFF_CURRENT_ADC 
ADE7758_SWITCH_OFF_VOLTAGE_ADC 
ADE7758_SLEEP_MODE 
ADE7758_SWAP_VOLTAGE_CURRENT 
ADE7758_OFF_CURRENT_ADCS_REDIRECTED_TO_VOLTAGE 
ADE7758_OFF_VOLTAGE_ADCS_REDIRECTED_TO_CURRENT 
ADE7758_POWER_DOWN_MODE 

◆ ade7758_pga_gain

ADE7758 select the PGA gain.

Enumerator
ADE7758_PGA_GAIN_1 
ADE7758_PGA_GAIN_2 

◆ ade7758_phsel

ADE7758 select the phase of the waveform sample or the source for the voltage line frequency measurement.

Enumerator
ADE7758_PHASE_A 
ADE7758_PHASE_B 
ADE7758_PHASE_C 

◆ ade7758_wavesel

ADE7758 select the type of waveform.

Enumerator
ADE7758_CURRENT 
ADE7758_VOLTAGE 
ADE7758_ACTIVE_POWER 
ADE7758_REACTIVE_POWER 
ADE7758_APPARENT_POWER 

Function Documentation

◆ ade7758_adcs_mode()

int ade7758_adcs_mode ( struct ade7758_dev * dev,
enum ade7758_dismod sel )

Operation mode of the ADCs.

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

◆ ade7758_clear_irq_status()

int ade7758_clear_irq_status ( struct ade7758_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.

◆ ade7758_consel()

int ade7758_consel ( struct ade7758_dev * dev,
enum ade7758_consel sel )

Select the input to the energy accumulation registers.

Parameters
dev- The device structure.
sel- consel value (see datasheet)
Returns
0 in case of success, negative error code otherwise.

◆ ade7758_enable_irq()

int ade7758_enable_irq ( struct ade7758_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.

◆ ade7758_energy_vals_phase_a()

int ade7758_energy_vals_phase_a ( struct ade7758_dev * dev,
struct ade7758_energy_values * data )

Read energy values phase A.

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

◆ ade7758_energy_vals_phase_b()

int ade7758_energy_vals_phase_b ( struct ade7758_dev * dev,
struct ade7758_energy_values * data )

Read energy values phase B.

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

◆ ade7758_energy_vals_phase_c()

int ade7758_energy_vals_phase_c ( struct ade7758_dev * dev,
struct ade7758_energy_values * data )

Read energy values phase C.

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

◆ ade7758_freq_source()

int ade7758_freq_source ( struct ade7758_dev * dev,
enum ade7758_phsel sel )

Select the source of the measurement of the voltage line frequency.

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

◆ ade7758_frequency_period_val()

int ade7758_frequency_period_val ( struct ade7758_dev * dev,
struct ade7758_freq_per_value * data )

Read frequency/period value.

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

◆ ade7758_get_int_status()

int ade7758_get_int_status ( struct ade7758_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.

◆ ade7758_init()

int ade7758_init ( struct ade7758_dev ** device,
struct ade7758_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.

◆ ade7758_read()

int ade7758_read ( struct ade7758_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.

◆ ade7758_read_ipk_val()

int ade7758_read_ipk_val ( struct ade7758_dev * dev,
uint32_t * val )

read Ipeak val

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

◆ ade7758_remove()

int ade7758_remove ( struct ade7758_dev * dev)

Remove the device and release resources.

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

◆ ade7758_rms_vals_phase_a()

int ade7758_rms_vals_phase_a ( struct ade7758_dev * dev,
struct ade7758_rms_values * data )

Read rms values phase A.

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

◆ ade7758_rms_vals_phase_b()

int ade7758_rms_vals_phase_b ( struct ade7758_dev * dev,
struct ade7758_rms_values * data )

Read rms values phase B.

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

◆ ade7758_rms_vals_phase_c()

int ade7758_rms_vals_phase_c ( struct ade7758_dev * dev,
struct ade7758_rms_values * data )

Read rms values phase C.

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

◆ ade7758_setup()

int ade7758_setup ( struct ade7758_dev * dev)

Setup the ADE7758 device.

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

◆ ade7758_sw_reset()

int ade7758_sw_reset ( struct ade7758_dev * dev)

Reset the device using SW reset.

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

◆ ade7758_temperature_val()

int ade7758_temperature_val ( struct ade7758_dev * dev,
struct ade7758_temp_value * data )

Read temperature value.

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

◆ ade7758_update_bits()

int ade7758_update_bits ( struct ade7758_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.

◆ ade7758_version_product()

int ade7758_version_product ( struct ade7758_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.

◆ ade7758_vpk_val()

int ade7758_vpk_val ( struct ade7758_dev * dev,
uint32_t * val )

read Vpeak val

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

◆ ade7758_wave_phase_sel()

int ade7758_wave_phase_sel ( struct ade7758_dev * dev,
enum ade7758_phsel sel )

Select the phase of sampled data for wave register.

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

◆ ade7758_wave_sample_data_source()

int ade7758_wave_sample_data_source ( struct ade7758_dev * dev,
enum ade7758_wavesel 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.

◆ ade7758_wave_update_rate()

int ade7758_wave_update_rate ( struct ade7758_dev * dev,
enum ade7758_data_rate sel )

Select waveform register update rate.

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

◆ ade7758_write()

int ade7758_write ( struct ade7758_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.