53#define ADE7758_SPI_READ NO_OS_BIT(7)
56#define ADE7758_VERSION 0x3F
58#define ADE7758_REG_VERSION_PRODUCT 0x48
61#define IS_7BITS_REG(x) ((x) >= ADE7758_REG_APHCAL && (x) <= ADE7758_REG_CPHCAL)
62#define IS_8BITS_REG(x) (((x) == ADE7758_REG_TEMP) || ((x) >= ADE7758_REG_OPMODE && (x) <= ADE7758_REG_LCYCMODE) \
63 || ((x) >= ADE7758_REG_SAGCYC && (x) <= ADE7758_REG_GAIN) || ((x) >= ADE7758_REG_WDIV && (x) <= ADE7758_REG_VADIV) \
64 ||((x) >= ADE7758_REG_CHKSUM && (x) <= ADE7758_REG_VERSION))
62#define IS_8BITS_REG(x) (((x) == ADE7758_REG_TEMP) || ((x) >= ADE7758_REG_OPMODE && (x) <= ADE7758_REG_LCYCMODE) \ …
65#define IS_12BITS_REG(x) (((x) == ADE7758_REG_FREQ) || ((x) >= ADE7758_REG_AVRMSGAIN && (x) <= ADE7758_REG_CVAROS) \
66 || ((x) == ADE7758_REG_APCFDEN) || ((x) == ADE7758_REG_VARCFDEN))
65#define IS_12BITS_REG(x) (((x) == ADE7758_REG_FREQ) || ((x) >= ADE7758_REG_AVRMSGAIN && (x) <= ADE7758_REG_CVAROS) \ …
67#define IS_16BITS_REG(x) (((x) >= ADE7758_REG_AWATTHR && (x) <= ADE7758_REG_CVAHR) \
68 || ((x) >= ADE7758_REG_ZXTOUT && (x) <= ADE7758_REG_LINECYC) || ((x) == ADE7758_REG_APCFNUM) \
69 || ((x) == ADE7758_REG_VARCFNUM))
67#define IS_16BITS_REG(x) (((x) >= ADE7758_REG_AWATTHR && (x) <= ADE7758_REG_CVAHR) \ …
70#define IS_24BITS_REG(x) (((x) >= ADE7758_REG_AIRMS && (x) <= ADE7758_REG_CVRMS) \
71 || ((x) == ADE7758_REG_WFORM) || ((x) >= ADE7758_REG_MASK && (x) <= ADE7758_REG_RSTATUS))
70#define IS_24BITS_REG(x) (((x) >= ADE7758_REG_AIRMS && (x) <= ADE7758_REG_CVRMS) \ …
74#define ADE7758_RESET_DEL 1
77#define ADE7758_REG_AWATTHR 0x01
78#define ADE7758_REG_BWATTHR 0x02
79#define ADE7758_REG_CWATTHR 0x03
80#define ADE7758_REG_AVARHR 0x04
81#define ADE7758_REG_BVARHR 0x05
82#define ADE7758_REG_CVARHR 0x06
83#define ADE7758_REG_AVAHR 0x07
84#define ADE7758_REG_BVAHR 0x08
85#define ADE7758_REG_CVAHR 0x09
86#define ADE7758_REG_AIRMS 0x0A
87#define ADE7758_REG_BIRMS 0x0B
88#define ADE7758_REG_CIRMS 0x0C
89#define ADE7758_REG_AVRMS 0x0D
90#define ADE7758_REG_BVRMS 0X0E
91#define ADE7758_REG_CVRMS 0x0F
92#define ADE7758_REG_FREQ 0x10
93#define ADE7758_REG_TEMP 0x11
94#define ADE7758_REG_WFORM 0x12
95#define ADE7758_REG_OPMODE 0x13
96#define ADE7758_REG_MMODE 0x14
97#define ADE7758_REG_WAVMODE 0x15
98#define ADE7758_REG_COMPMODE 0x16
99#define ADE7758_REG_LCYCMODE 0x17
100#define ADE7758_REG_MASK 0x18
101#define ADE7758_REG_STATUS 0x19
102#define ADE7758_REG_RSTATUS 0x1A
103#define ADE7758_REG_ZXTOUT 0X1B
104#define ADE7758_REG_LINECYC 0x1C
105#define ADE7758_REG_SAGCYC 0x1D
106#define ADE7758_REG_SAGLVL 0x1E
107#define ADE7758_REG_VPINTLVL 0x1F
108#define ADE7758_REG_IPINTLVL 0x20
109#define ADE7758_REG_VPEAK 0x21
110#define ADE7758_REG_IPEAK 0x22
111#define ADE7758_REG_GAIN 0x23
112#define ADE7758_REG_AVRMSGAIN 0x24
113#define ADE7758_REG_BVRMSGAIN 0x25
114#define ADE7758_REG_CVRMSGAIN 0x26
115#define ADE7758_REG_AIGAIN 0x27
116#define ADE7758_REG_BIGAIN 0x28
117#define ADE7758_REG_CIGAIN 0x29
118#define ADE7758_REG_AWG 0x2A
119#define ADE7758_REG_BWG 0x2B
120#define ADE7758_REG_CWG 0x2C
121#define ADE7758_REG_AVARG 0x2D
122#define ADE7758_REG_BVARG 0x2E
123#define ADE7758_REG_CVARG 0x2F
124#define ADE7758_REG_AVAG 0x30
125#define ADE7758_REG_BVAG 0x31
126#define ADE7758_REG_CVAG 0x32
127#define ADE7758_REG_AVRMSOS 0x33
128#define ADE7758_REG_BVRMSOS 0x34
129#define ADE7758_REG_CVRMSOS 0x35
130#define ADE7758_REG_AIRMSOS 0x36
131#define ADE7758_REG_BIRMSOS 0x37
132#define ADE7758_REG_CIRMSOS 0x38
133#define ADE7758_REG_AWATTOS 0x39
134#define ADE7758_REG_BWATTOS 0x3A
135#define ADE7758_REG_CWATTOS 0x3B
136#define ADE7758_REG_AVAROS 0x3C
137#define ADE7758_REG_BVAROS 0x3D
138#define ADE7758_REG_CVAROS 0x3E
139#define ADE7758_REG_APHCAL 0x3F
140#define ADE7758_REG_BPHCAL 0x40
141#define ADE7758_REG_CPHCAL 0x41
142#define ADE7758_REG_WDIV 0x42
143#define ADE7758_REG_VARDIV 0x43
144#define ADE7758_REG_VADIV 0x44
145#define ADE7758_REG_APCFNUM 0x45
146#define ADE7758_REG_APCFDEN 0x46
147#define ADE7758_REG_VARCFNUM 0x47
148#define ADE7758_REG_VARCFDEN 0x48
149#define ADE7758_REG_CHKSUM 0x7E
150#define ADE7758_REG_VERSION 0x7F
153#define ADE7758_SWRST_MSK NO_OS_BIT(6)
154#define ADE7758_DISMOD_MSK NO_OS_GENMASK(5, 3)
155#define ADE7758_DISCF_MSK NO_OS_BIT(2)
156#define ADE7758_DISLPF_MSK NO_OS_BIT(1)
157#define ADE7758_DISHPF_MSK NO_OS_BIT(0)
160#define ADE7758_PKIRQSEL_MSK NO_OS_GENMASK(7, 5)
161#define ADE7758_PEAKSEL_MSK NO_OS_GENMASK(4, 2)
162#define ADE7758_FREQSEL_MSK NO_OS_GENMASK(1, 0)
165#define ADE7758_VACF_MSK NO_OS_BIT(7)
166#define ADE7758_DTRT_MSK NO_OS_GENMASK(6, 5)
167#define ADE7758_WAVSEL_MSK NO_OS_GENMASK(4, 2)
168#define ADE7758_PHSEL_MSK NO_OS_GENMASK(1, 0)
171#define ADE7758_NOLOAD_MSK NO_OS_BIT(7)
172#define ADE7758_SAVAR_MSK NO_OS_BIT(6)
173#define ADE7758_ABS_MSK NO_OS_BIT(5)
174#define ADE7758_TERMSEL_MSK NO_OS_GENMASK(4, 2)
175#define ADE7758_CONSEL_MSK NO_OS_GENMASK(1, 0)
178#define ADE7758_FREQSEL_MSK NO_OS_BIT(7)
179#define ADE7758_RSTREAD_MSK NO_OS_BIT(6)
180#define ADE7758_ZXSEL_MSK NO_OS_GENMASK(5, 3)
181#define ADE7758_LVA_MSK NO_OS_BIT(2)
182#define ADE7758_LVAR_MSK NO_OS_BIT(1)
183#define ADE7758_LWATT_MSK NO_OS_BIT(0)
186#define ADE7758_SEQERR_MSK NO_OS_BIT(19)
187#define ADE7758_REVPRP_MSK NO_OS_BIT(18)
188#define ADE7758_REVPAP_MSK NO_OS_BIT(17)
189#define ADE7758_WFSM_MSK NO_OS_BIT(16)
190#define ADE7758_PKI_MSK NO_OS_BIT(15)
191#define ADE7758_PKV_MSK NO_OS_BIT(14)
193#define ADE7758_RESET_MSK NO_OS_BIT(13)
194#define ADE7758_LENERGY_MSK NO_OS_BIT(12)
195#define ADE7758_ZXC_MSK NO_OS_BIT(11)
196#define ADE7758_ZXB_MSK NO_OS_BIT(10)
197#define ADE7758_ZXA_MSK NO_OS_BIT(9)
198#define ADE7758_ZXTOC_MSK NO_OS_BIT(8)
199#define ADE7758_ZXTOB_MSK NO_OS_BIT(7)
200#define ADE7758_ZXTOA_MSK NO_OS_BIT(6)
201#define ADE7758_SAGC_MSK NO_OS_BIT(5)
202#define ADE7758_SAGB_MSK NO_OS_BIT(4)
203#define ADE7758_SAGA_MSK NO_OS_BIT(3)
204#define ADE7758_VAEHF_MSK NO_OS_BIT(2)
205#define ADE7758_REHF_MSK NO_OS_BIT(1)
206#define ADE7758_AEHF_MSK NO_OS_BIT(0)
209#define ADE7758_INTEGRATOR_EN_MSK NO_OS_BIT(7)
210#define ADE7758_PGA2_GAIN_MSK NO_OS_GENMASK(6, 5)
211#define ADE7758_FULL_SCALE_MSK NO_OS_GENMASK(4, 3)
212#define ADE7758_PGA1_GAIN_MSK NO_OS_GENMASK(1, 0)
427 uint32_t mask, uint32_t reg_data);
504 struct ade7758_period_value *data);
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int ade7758_remove(struct ade7758_dev *dev)
Remove the device and release resources.
Definition ade7758.c:320
int ade7758_read_ipk_val(struct ade7758_dev *dev, uint32_t *val)
read Ipeak val
Definition ade7758.c:390
int ade7758_version_product(struct ade7758_dev *dev, uint32_t *data_read)
Version product.
Definition ade7758.c:366
int ade7758_clear_irq_status(struct ade7758_dev *dev, int32_t *reg_data)
Clear irq status flags.
Definition ade7758.c:463
int ade7758_freq_source(struct ade7758_dev *dev, enum ade7758_phsel sel)
Select the source of the measurement of the voltage line frequency.
Definition ade7758.c:627
int ade7758_rms_vals_phase_a(struct ade7758_dev *dev, struct ade7758_rms_values *data)
Read rms values phase A.
Definition ade7758.c:818
ade7758_ch_full_scale_sel
ADE7758 Current input full-scale select.
Definition ade7758.h:314
@ ADE7758_FS_0_5
Definition ade7758.h:317
@ ADE7758_FS_0_125
Definition ade7758.h:321
@ ADE7758_FS_0_25
Definition ade7758.h:319
int ade7758_get_int_status(struct ade7758_dev *dev, uint32_t msk, uint8_t *status)
Get interrupt indicator from STATUS register.
Definition ade7758.c:437
ade7758_dismod
ADE7758 ADCs can be turned off by using these bits.
Definition ade7758.h:218
@ ADE7758_POWER_DOWN_MODE
Definition ade7758.h:236
@ ADE7758_SWITCH_OFF_VOLTAGE_ADC
Definition ade7758.h:224
@ ADE7758_NORMAL_OPERATION
Definition ade7758.h:220
@ ADE7758_SWITCH_OFF_CURRENT_ADC
Definition ade7758.h:222
@ ADE7758_OFF_VOLTAGE_ADCS_REDIRECTED_TO_CURRENT
Definition ade7758.h:234
@ ADE7758_SWAP_VOLTAGE_CURRENT
Definition ade7758.h:228
@ ADE7758_SLEEP_MODE
Definition ade7758.h:226
@ ADE7758_OFF_CURRENT_ADCS_REDIRECTED_TO_VOLTAGE
Definition ade7758.h:231
int ade7758_init(struct ade7758_dev **device, struct ade7758_init_param init_param)
Initialize the device.
Definition ade7758.c:59
int ade7758_period_val(struct ade7758_dev *dev, struct ade7758_period_value *data)
int ade7758_read(struct ade7758_dev *dev, uint16_t reg_addr, int32_t *reg_data)
Read device register.
Definition ade7758.c:182
int ade7758_wave_phase_sel(struct ade7758_dev *dev, enum ade7758_phsel sel)
Select the phase of sampled data for wave register.
Definition ade7758.c:569
ade7758_wavesel
ADE7758 select the type of waveform.
Definition ade7758.h:257
@ ADE7758_REACTIVE_POWER
Definition ade7758.h:265
@ ADE7758_VOLTAGE
Definition ade7758.h:261
@ ADE7758_ACTIVE_POWER
Definition ade7758.h:263
@ ADE7758_APPARENT_POWER
Definition ade7758.h:267
@ ADE7758_CURRENT
Definition ade7758.h:259
int ade7758_rms_vals_phase_c(struct ade7758_dev *dev, struct ade7758_rms_values *data)
Read rms values phase C.
Definition ade7758.c:880
int ade7758_sw_reset(struct ade7758_dev *dev)
Reset the device using SW reset.
Definition ade7758.c:345
ade7758_phsel
ADE7758 select the phase of the waveform sample or the source for the voltage line frequency measurem...
Definition ade7758.h:244
@ ADE7758_PHASE_A
Definition ade7758.h:246
@ ADE7758_PHASE_B
Definition ade7758.h:248
@ ADE7758_PHASE_C
Definition ade7758.h:250
int ade7758_adcs_mode(struct ade7758_dev *dev, enum ade7758_dismod sel)
Operation mode of the ADCs.
Definition ade7758.c:656
int ade7758_write(struct ade7758_dev *dev, uint16_t reg_addr, uint32_t reg_data)
Write device register.
Definition ade7758.c:245
int ade7758_vpk_val(struct ade7758_dev *dev, uint32_t *val)
read Vpeak val
Definition ade7758.c:413
int ade7758_energy_vals_phase_b(struct ade7758_dev *dev, struct ade7758_energy_values *data)
Read energy values phase B.
Definition ade7758.c:744
int ade7758_wave_update_rate(struct ade7758_dev *dev, enum ade7758_data_rate sel)
Select waveform register update rate.
Definition ade7758.c:499
int ade7758_update_bits(struct ade7758_dev *dev, uint16_t reg_addr, uint32_t mask, uint32_t reg_data)
Update specific register bits.
Definition ade7758.c:298
int ade7758_energy_vals_phase_a(struct ade7758_dev *dev, struct ade7758_energy_values *data)
Read energy values phase A.
Definition ade7758.c:707
int ade7758_wave_sample_data_source(struct ade7758_dev *dev, enum ade7758_wavesel sel)
Select source of sampled data for wave register.
Definition ade7758.c:532
ade7758_pga_gain
ADE7758 select the PGA gain.
Definition ade7758.h:302
@ ADE7758_PGA_GAIN_1
Definition ade7758.h:305
@ ADE7758_PGA_GAIN_2
Definition ade7758.h:307
int ade7758_setup(struct ade7758_dev *dev)
Setup the ADE7758 device.
Definition ade7758.c:127
int ade7758_rms_vals_phase_b(struct ade7758_dev *dev, struct ade7758_rms_values *data)
Read rms values phase B.
Definition ade7758.c:849
int ade7758_energy_vals_phase_c(struct ade7758_dev *dev, struct ade7758_energy_values *data)
Read energy values phase C.
Definition ade7758.c:781
ade7758_consel
ADE7758 select the input to the energy accumulation registers.
Definition ade7758.h:289
@ ADE7758_CONSEL_2
Definition ade7758.h:295
@ ADE7758_CONSEL_1
Definition ade7758.h:293
@ ADE7758_CONSEL_0
Definition ade7758.h:291
ade7758_data_rate
ADE7758 select the data rate.
Definition ade7758.h:274
@ ADE7758_DATA_RATE_26_04KSPS
Definition ade7758.h:276
@ ADE7758_DATA_RATE_13_02KSPS
Definition ade7758.h:278
@ ADE7758_DATA_RATE_3_25KSPS
Definition ade7758.h:282
@ ADE7758_DATA_RATE_6_51KSPS
Definition ade7758.h:280
int ade7758_temp_val(struct ade7758_dev *dev, struct ade7758_temp_value *data)
int ade7758_enable_irq(struct ade7758_dev *dev, uint32_t msk, uint8_t en)
Enable/Disable interrupt.
Definition ade7758.c:487
Error macro definition for ARM Compiler.
Header file of CRC-16 computation.
Header file of Delay functions.
Header file of GPIO Interface.
Header file of IRQ interface.
Header file of SPI Interface.
Header file of utility functions.
ADE7758 Device structure.
Definition ade7758.h:339
struct no_os_spi_desc * spi_desc
Definition ade7758.h:341
struct no_os_irq_ctrl_desc * irq_ctrl
Definition ade7758.h:345
uint32_t irq_status
Definition ade7758.h:343
ADE7758 energy registers values.
Definition ade7758.h:352
int32_t apparent_energy_reg_val_phase_c
Definition ade7758.h:370
int32_t active_energy_reg_val_phase_a
Definition ade7758.h:354
int32_t apparent_energy_reg_val_phase_b
Definition ade7758.h:368
int32_t active_energy_reg_val_phase_c
Definition ade7758.h:358
int32_t active_energy_reg_val_phase_b
Definition ade7758.h:356
int32_t acc_reactive_energy_reg_val_phase_b
Definition ade7758.h:362
int32_t acc_reactive_energy_reg_val_phase_a
Definition ade7758.h:360
int32_t acc_reactive_energy_reg_val_phase_c
Definition ade7758.h:364
int32_t apparent_energy_reg_val_phase_a
Definition ade7758.h:366
ADE7758 pq values.
Definition ade7758.h:396
uint32_t freq_per_reg_val
Definition ade7758.h:398
ADE7758 Device initialization parameters.
Definition ade7758.h:328
struct no_os_irq_ctrl_desc * irq_ctrl
Definition ade7758.h:332
struct no_os_spi_init_param * spi_init
Definition ade7758.h:330
ADE7758 rms registers values.
Definition ade7758.h:377
uint32_t current_rms_reg_val_phase_a
Definition ade7758.h:379
uint32_t voltage_rms_reg_val_phase_b
Definition ade7758.h:385
uint32_t current_rms_reg_val_phase_c
Definition ade7758.h:387
uint32_t voltage_rms_reg_val_phase_a
Definition ade7758.h:381
uint32_t current_rms_reg_val_phase_b
Definition ade7758.h:383
uint32_t voltage_rms_reg_val_phase_c
Definition ade7758.h:389
ADE7758 pq values.
Definition ade7758.h:405
uint32_t temp_reg_val
Definition ade7758.h:407
Definition ad9361_util.h:63
Definition no_os_irq.h:117
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128