no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ade7816.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef __ADE7816_H__
34#define __ADE7816_H__
35
36#include <stdbool.h>
37#include <stdint.h>
38#include <string.h>
39#include <stdio.h>
40#include "no_os_util.h"
41#include "no_os_spi.h"
42#include "no_os_gpio.h"
43#include "no_os_irq.h"
44#include "no_os_error.h"
45#include "no_os_i2c.h"
46
47#define ADE7816_VGAIN_REG 0x4380
48#define ADE7816_IAGAIN_REG 0x4381
49#define ADE7816_IBGAIN_REG 0x4382
50#define ADE7816_ICGAIN_REG 0x4383
51#define ADE7816_IDGAIN_REG 0x4384
52#define ADE7816_IEGAIN_REG 0x4385
53#define ADE7816_IFGAIN_REG 0x4386
54
55#define ADE7816_DICOEFF_REG 0x4388
56#define ADE7816_HPFDIS_REG 0x4389
57#define ADE7816_VRMSOS_REG 0x438A
58#define ADE7816_IARMSOS_REG 0x438B
59#define ADE7816_IBRMSOS_REG 0x438C
60#define ADE7816_ICRMSOS_REG 0x438D
61#define ADE7816_IDRMSOS_REG 0x438E
62#define ADE7816_IERMSOS_REG 0x438F
63#define ADE7816_IFRMSOS_REG 0x4390
64#define ADE7816_AWGAIN_REG 0x4391
65#define ADE7816_AWATTOS_REG 0x4392
66#define ADE7816_BWGAIN_REG 0x4393
67#define ADE7816_BWATTOS_REG 0x4394
68#define ADE7816_CWGAIN_REG 0x4395
69#define ADE7816_CWATTOS_REG 0x4396
70#define ADE7816_DWGAIN_REG 0x4397
71#define ADE7816_DWATTOS_REG 0x4398
72#define ADE7816_EWGAIN_REG 0x4399
73#define ADE7816_EWATTOS_REG 0x439A
74#define ADE7816_FWGAIN_REG 0x439B
75#define ADE7816_FWATTOS_REG 0x439C
76#define ADE7816_AVARGAIN_REG 0x439D
77#define ADE7816_AVAROS_REG 0x439E
78#define ADE7816_BVARGAIN_REG 0x439F
79#define ADE7816_BVAROS_REG 0x43A0
80#define ADE7816_CVARGAIN_REG 0x43A1
81#define ADE7816_CVAROS_REG 0x43A2
82#define ADE7816_DVARGAIN_REG 0x43A3
83#define ADE7816_DVAROS_REG 0x43A4
84#define ADE7816_EVARGAIN_REG 0x43A5
85#define ADE7816_EVAROS_REG 0x43A6
86#define ADE7816_FVARGAIN_REG 0x43A7
87#define ADE7816_FVAROS_REG 0x43A8
88
89#define ADE7816_WTHR1_REG 0x43AB
90#define ADE7816_WTHR0_REG 0x43AC
91#define ADE7816_VARTHR1_REG 0x43AD
92#define ADE7816_VARTHR0_REG 0x43AE
93#define ADE7816_APNOLOAD_REG 0x43AF
94#define ADE7816_VARNOLOAD_REG 0x43B0
95#define ADE7816_PCF_A_COEFF_REG 0x43B1
96#define ADE7816_PCF_B_COEFF_REG 0x43B3
97#define ADE7816_PCF_C_COEFF_REG 0x43B4
98#define ADE7816_PCF_D_COEFF_REG 0x43B5
99#define ADE7816_PCF_E_COEFF_REG 0x43B6
100#define ADE7816_PCF_F_COEFF_REG 0x43B7
101
102#define ADE7816_VRMS_REG 0x43C0
103#define ADE7816_IARMS_REG 0x43C1
104#define ADE7816_IBRMS_REG 0x43C2
105#define ADE7816_ICRMS_REG 0x43C3
106#define ADE7816_IDRMS_REG 0x43C4
107#define ADE7816_IERMS_REG 0x43C5
108#define ADE7816_IFRMS_REG 0x43C6
109
110#define ADE7816_RUN_REG 0xE228
111
112#define ADE7816_AWATTHR_REG 0xE400
113#define ADE7816_BWATTHR_REG 0xE401
114#define ADE7816_CWATTHR_REG 0xE402
115#define ADE7816_DWATTHR_REG 0xE403
116#define ADE7816_EWATTHR_REG 0xE404
117#define ADE7816_FWATTHR_REG 0xE405
118#define ADE7816_AVARHR_REG 0xE406
119#define ADE7816_BVARHR_REG 0xE407
120#define ADE7816_CVARHR_REG 0xE408
121#define ADE7816_DVARHR_REG 0xE409
122#define ADE7816_EVARHR_REG 0xE40A
123#define ADE7816_FVARHR_REG 0xE40B
124
125#define ADE7816_IPEAK_REG 0xE500
126#define ADE7816_VPEAK_REG 0xE501
127#define ADE7816_STATUS0_REG 0xE502
128#define ADE7816_STATUS1_REG 0xE503
129
130#define ADE7816_OIVL_REG 0xE507
131#define ADE7816_OVLVL_REG 0xE508
132#define ADE7816_SAGLVL_REG 0xE509
133#define ADE7816_MASK0_REG 0xE50A
134#define ADE7816_MASK1_REG 0xE50B
135#define ADE7816_IAVW_IDVW_REG 0xE50C
136#define ADE7816_IBVW_IEVW_REG 0xE50D
137#define ADE7816_ICVW_IFVW_REG 0xE50E
138
139#define ADE7816_VWV_REG 0xE510
140
141#define ADE7816_CHECKSUM_REG 0xE51F
142
143#define ADE7816_CHSTATUS_REG 0xE600
144#define ADE7816_ANGLE0_REG 0xE601
145#define ADE7816_ANGLE1_REG 0xE602
146#define ADE7816_ANGLE2_REG 0xE603
147
148#define ADE7816_PERIOD_REG 0xE607
149#define ADE7816_CHNOLOAD_REG 0xE608
150
151#define ADE7816_LINECYC_REG 0xE60C
152#define ADE7816_ZXTOUT_REG 0xE60D
153#define ADE7816_COMPMODE_REG 0xE60E
154#define ADE7816_GAIN_REG 0xE60F
155
156#define ADE7816_CHSIGN_REG 0xE617
157#define ADE7816_CONFIG_REG 0xE618
158
159#define ADE7816_MMODE_REG 0xE700
160#define ADE7816_ACCMODE_REG 0xE701
161#define ADE7816_LCYCMODE_REG 0xE702
162#define ADE7816_PEAKCYC_REG 0xE703
163#define ADE7816_SAGCYC_REG 0xE704
164
165#define ADE7816_HSDC_CFG_REG 0xE706
166#define ADE7816_VERSION_REG 0xE707
167
168#define ADE7816_CONFIG2_REG 0xEC01
169
170//MASK MACROS
171#define ADE7816_LSB_REG_MASK NO_OS_GENMASK(7, 0)
172#define ADE7816_MSB_REG_MASK NO_OS_GENMASK(15, 8)
173
174#define ADE7816_FOURTH_BYTE_MASK NO_OS_GENMASK(31, 24)
175#define ADE7816_THIRD_BYTE_MASK NO_OS_GENMASK(23, 16)
176#define ADE7816_SECOND_BYTE_MASK NO_OS_GENMASK(15, 8)
177#define ADE7816_FIRST_BYTE_MASK NO_OS_GENMASK(7, 0)
178
179#define ADE7816_SWRST_MASK NO_OS_BIT(7)
180
181#define ADE7816_I2C_LOCK_MASK NO_OS_BIT(1)
182
183#define ADE7816_ZSPE_MASK NO_OS_GENMASK(27, 0)
184
185#define ADE7816_THR_MSB_MASK NO_OS_GENMASK(31, 24)
186#define ADE7816_THR_LSB_MASK NO_OS_GENMASK(23, 0)
187
188#define ADE7816_RSTREAD_MASK NO_OS_BIT(6)
189
190#define ADE7816_LMASK NO_OS_GENMASK(1, 0)
191#define ADE7816_ZX_SEL_MASK NO_OS_BIT(3)
192
193#define ADE7816_LENERGY_MASK NO_OS_BIT(5)
194
195#define ADE7816_CHANNEL_SEL_MASK NO_OS_BIT(14)
196
197#define ADE7816_DREADY_MASK NO_OS_BIT(17)
198
199#define ADE7816_MMODE_MASK NO_OS_GENMASK(4, 2)
200
201#define ADE7816_REVSEL_MASK NO_OS_GENMASK(7, 6)
202
203#define ADE7816_ANGLESEL_MASK NO_OS_GENMASK(10, 9)
204
205#define ADE7816_SIGN_MASK(x) (((x) > 3) ? ((x) - 4) : (x))
206
207#define ADE7816_INT_MASK(x) NO_OS_BIT(x)
208
209#define ADE7816_INIT_DELAY 40
210#define ADE7816_HWRST_DELAY 10
211
212#define ADE7816_LINECYC_VAL(enable) ((enable) ? 0x11 : 0x00)
213
214#define ADE7816_CHECKSUM_VAL 0x33666787
215
220
230
236
242
247
278
285
290
291struct ade7816_desc;
292
293typedef int (*ade7816_reg_read)(struct ade7816_desc *desc, uint16_t reg,
294 uint32_t *val);
295typedef int (*ade7816_reg_write)(struct ade7816_desc *desc, uint16_t reg,
296 uint32_t val);
297
305
307
310
313
316
317 /* External callback used to handle interrupt routine for GPIO
318 * IRQ0/IRQ1.
319 *
320 * Setting one of it to NULL means driver defined callback is used for
321 * it.
322 */
323 void (*irq0_callback)(void *context);
324 void (*irq1_callback)(void *context);
325};
326
351
353int ade7816_spi_reg_read(struct ade7816_desc *desc, uint16_t reg,
354 uint32_t *val);
355
357int ade7816_spi_reg_write(struct ade7816_desc *desc, uint16_t reg,
358 uint32_t val);
359
361int ade7816_i2c_reg_read(struct ade7816_desc *desc, uint16_t reg,
362 uint32_t *val);
363
365int ade7816_i2c_reg_write(struct ade7816_desc *desc, uint16_t reg,
366 uint32_t val);
367
369int ade7816_read_reg(struct ade7816_desc *desc, uint16_t reg, uint32_t *val);
370
372int ade7816_write_reg(struct ade7816_desc *desc, uint16_t reg, uint32_t val);
373
375int ade7816_reg_update(struct ade7816_desc *desc, uint16_t reg, uint32_t mask,
376 uint32_t val);
377
379int ade7816_sw_reset(struct ade7816_desc *desc);
380
382int ade7816_hw_reset(struct ade7816_desc *desc);
383
385int ade7816_set_comm(struct ade7816_desc *desc, enum ade7816_comm_type type);
386
389 enum ade7816_channel chan, int32_t *val);
390
392int ade7816_set_active_thr(struct ade7816_desc *desc, uint16_t freq);
393
395int ade7816_get_active_thr(struct ade7816_desc *desc, uint16_t *freq);
396
399 enum ade7816_channel chan, int32_t *val);
400
402int ade7816_set_reactive_thr(struct ade7816_desc *desc, uint16_t freq);
403
405int ade7816_get_reactive_thr(struct ade7816_desc *desc, uint16_t *freq);
406
408int ade7816_set_lcycle_mode(struct ade7816_desc *desc, bool enable,
409 uint16_t cycles, bool lenergy);
410
412int ade7816_read_rms(struct ade7816_desc *desc, enum ade7816_channel chan,
413 uint32_t *rms);
414
416int ade7816_set_no_load(struct ade7816_desc *desc, uint16_t voltage,
417 uint16_t current, bool enable);
418
420int ade7816_set_gain(struct ade7816_desc *desc, enum ade7816_channel chan,
421 int16_t scale, enum ade7816_gain_type gain);
422
424int ade7816_get_gain(struct ade7816_desc *desc, enum ade7816_channel chan,
425 int16_t *scale, enum ade7816_gain_type gain);
426
428int ade7816_set_offset(struct ade7816_desc *desc, enum ade7816_channel chan,
429 int16_t scale, enum ade7816_gain_type gain);
430
432int ade7816_get_offset(struct ade7816_desc *desc, enum ade7816_channel chan,
433 int16_t *scale, enum ade7816_gain_type gain);
434
436int ade7816_set_phase(struct ade7816_desc *desc, enum ade7816_channel chan,
437 enum ade7816_pcf_coeff pcf_coeff);
438
440int ade7816_calib_rms(struct ade7816_desc *desc, enum ade7816_channel chan,
441 int32_t rms);
442
444int ade7816_group_sel(struct ade7816_desc *desc, enum ade7816_channel chan);
445
447int ade7816_zx_detect(struct ade7816_desc *desc, enum ade7816_channel chan);
448
450int ade7816_zx_timeout(struct ade7816_desc *desc, uint32_t timeout_us);
451
453int ade7816_peak_detect(struct ade7816_desc *desc, enum ade7816_channel chan,
454 enum ade7816_mmode_sel mmode, uint8_t no_of_cycles);
455
457int ade7816_power_dir(struct ade7816_desc *desc, enum ade7816_channel chan);
458
460int ade7816_read_dir(struct ade7816_desc *desc, enum ade7816_channel chan,
461 bool *sign);
462
464int ade7816_angle_meas(struct ade7816_desc *desc, enum ade7816_channel chan,
465 enum ade7816_angle_sel sel);
466
468int ade7816_read_period(struct ade7816_desc *desc, uint32_t *period_us);
469
471int ade7816_set_interrupt(struct ade7816_desc *desc,
472 enum ade7816_status_int status_int, bool enable);
473
475int ade7816_get_interrupt(struct ade7816_desc *desc,
476 enum ade7816_status_int status_int, bool *enable);
477
481int ade7816_rms_to_micro(struct ade7816_desc *desc, enum ade7816_channel chan,
482 uint32_t rms, uint32_t *micro);
483
485int ade7816_init(struct ade7816_desc **desc,
487
489int ade7816_remove(struct ade7816_desc *desc);
490
491#endif /* __ADE7816_H__ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int ade7816_read_reg(struct ade7816_desc *desc, uint16_t reg, uint32_t *val)
Register read wrapper function.
Definition ade7816.c:45
int ade7816_power_dir(struct ade7816_desc *desc, enum ade7816_channel chan)
ADE7816 set power direction for channel function.
Definition ade7816.c:1127
ade7816_status_int
Definition ade7816.h:248
@ ADE7816_REVRP2_INT
Definition ade7816.h:258
@ ADE7816_REVAP2_INT
Definition ade7816.h:255
@ ADE7816_PKV_INT
Definition ade7816.h:276
@ ADE7816_REVAP3_INT
Definition ade7816.h:256
@ ADE7816_OV_INT
Definition ade7816.h:274
@ ADE7816_OI_INT
Definition ade7816.h:273
@ ADE7816_ZXTOI2_INT
Definition ade7816.h:265
@ ADE7816_REVAP1_INT
Definition ade7816.h:254
@ ADE7816_ZXI3_INT
Definition ade7816.h:270
@ ADE7816_ZXTOV_INT
Definition ade7816.h:263
@ ADE7816_REVRP3_INT
Definition ade7816.h:259
@ ADE7816_LENERGY_INT
Definition ade7816.h:253
@ ADE7816_ZXTOI3_INT
Definition ade7816.h:266
@ ADE7816_ZXI1_INT
Definition ade7816.h:268
@ ADE7816_DREADY_INT
Definition ade7816.h:260
@ ADE7816_REVRP1_INT
Definition ade7816.h:257
@ ADE7816_NLOAD2_INT
Definition ade7816.h:262
@ ADE7816_AEHF1_INT
Definition ade7816.h:249
@ ADE7816_NLOAD1_INT
Definition ade7816.h:261
@ ADE7816_SAG_INT
Definition ade7816.h:272
@ ADE7816_REHF1_INT
Definition ade7816.h:251
@ ADE7816_PKI_INT
Definition ade7816.h:275
@ ADE7816_ZXI2_INT
Definition ade7816.h:269
@ ADE7816_ZXTOI1_INT
Definition ade7816.h:264
@ ADE7816_AEHF2_INT
Definition ade7816.h:250
@ ADE7816_ZXV_INT
Definition ade7816.h:267
@ ADE7816_RSTDONE_INT
Definition ade7816.h:271
@ ADE7816_REHF2_INT
Definition ade7816.h:252
int ade7816_angle_meas(struct ade7816_desc *desc, enum ade7816_channel chan, enum ade7816_angle_sel sel)
ADE7816 angle measurement function.
Definition ade7816.c:1183
int ade7816_reg_update(struct ade7816_desc *desc, uint16_t reg, uint32_t mask, uint32_t val)
Register update function.
Definition ade7816.c:71
int ade7816_set_no_load(struct ade7816_desc *desc, uint16_t voltage, uint16_t current, bool enable)
ADE7816 set no load condition function.
Definition ade7816.c:484
ade7816_channel
Definition ade7816.h:221
@ ADE7816_CHANNEL_E
Definition ade7816.h:227
@ ADE7816_CHANNEL_B
Definition ade7816.h:224
@ ADE7816_CHANNEL_C
Definition ade7816.h:225
@ ADE7816_CHANNEL_A
Definition ade7816.h:223
@ ADE7816_CHANNEL_F
Definition ade7816.h:228
@ ADE7816_CHANNEL_D
Definition ade7816.h:226
@ ADE7816_CHANNEL_VOLTAGE
Definition ade7816.h:222
int ade7816_sw_reset(struct ade7816_desc *desc)
ADE7816 software reset function.
Definition ade7816.c:92
int ade7816_set_reactive_thr(struct ade7816_desc *desc, uint16_t freq)
ADE7816 set reactive energy threshold value function.
Definition ade7816.c:358
int ade7816_peak_detect(struct ade7816_desc *desc, enum ade7816_channel chan, enum ade7816_mmode_sel mmode, uint8_t no_of_cycles)
ADE7816 set peak detection for channel function.
Definition ade7816.c:1104
int(* ade7816_reg_read)(struct ade7816_desc *desc, uint16_t reg, uint32_t *val)
Definition ade7816.h:293
int ade7816_set_lcycle_mode(struct ade7816_desc *desc, bool enable, uint16_t cycles, bool lenergy)
ADE7816 set line cycle mode function.
Definition ade7816.c:414
int ade7816_hw_reset(struct ade7816_desc *desc)
ADE7816 hardware reset function.
Definition ade7816.c:111
int ade7816_set_phase(struct ade7816_desc *desc, enum ade7816_channel chan, enum ade7816_pcf_coeff pcf_coeff)
ADE7816 set phase calibration coefficient function.
Definition ade7816.c:960
ade7816_angle_sel
Definition ade7816.h:243
@ ADE7816_VOLTAGE_CURRENT
Definition ade7816.h:244
@ ADE7816_CURRENT_CURRENT
Definition ade7816.h:245
int ade7816_read_dir(struct ade7816_desc *desc, enum ade7816_channel chan, bool *sign)
ADE7816 get power direction for channel function.
Definition ade7816.c:1158
int ade7816_spi_reg_read(struct ade7816_desc *desc, uint16_t reg, uint32_t *val)
ADE7816 SPI Read Register function.
Definition ade7816_spi.c:48
int ade7816_zx_timeout(struct ade7816_desc *desc, uint32_t timeout_us)
ADE7816 zero-crossing detection timeout value function.
Definition ade7816.c:1089
int ade7816_read_reactive_energy(struct ade7816_desc *desc, enum ade7816_channel chan, int32_t *val)
ADE7816 read reactive energy value function.
Definition ade7816.c:292
int(* ade7816_reg_write)(struct ade7816_desc *desc, uint16_t reg, uint32_t val)
Definition ade7816.h:295
ade7816_comm_type
Definition ade7816.h:216
@ ADE7816_I2C
Definition ade7816.h:217
@ ADE7816_SPI
Definition ade7816.h:218
int ade7816_set_interrupt(struct ade7816_desc *desc, enum ade7816_status_int status_int, bool enable)
ADE7816 set interrupts function.
Definition ade7816.c:1229
int ade7816_zx_detect(struct ade7816_desc *desc, enum ade7816_channel chan)
ADE7816 zero-crossing detection for channel function.
Definition ade7816.c:1067
ade7816_mmode_sel
Definition ade7816.h:237
@ ADE7816_PEAKSEL_0_AD
Definition ade7816.h:238
@ ADE7816_PEAKSEL_2_CF
Definition ade7816.h:240
@ ADE7816_PEAKSEL_1_BE
Definition ade7816.h:239
int ade7816_read_active_energy(struct ade7816_desc *desc, enum ade7816_channel chan, int32_t *val)
ADE7816 read active energy function.
Definition ade7816.c:172
ade7816_pcf_coeff
Definition ade7816.h:286
@ ADE7816_PCF_50HZ
Definition ade7816.h:287
@ ADE7816_PCF_60HZ
Definition ade7816.h:288
int ade7816_i2c_reg_read(struct ade7816_desc *desc, uint16_t reg, uint32_t *val)
ADE7816 I2C Read Register function.
Definition ade7816_i2c.c:48
int ade7816_get_gain(struct ade7816_desc *desc, enum ade7816_channel chan, int16_t *scale, enum ade7816_gain_type gain)
ADE7816 get gain value for channel function.
Definition ade7816.c:633
int ade7816_get_offset(struct ade7816_desc *desc, enum ade7816_channel chan, int16_t *scale, enum ade7816_gain_type gain)
ADE7816 get offset value for channel function.
Definition ade7816.c:857
int ade7816_remove(struct ade7816_desc *desc)
Free the resources allocated during init.
Definition ade7816.c:1657
int ade7816_calib_rms(struct ade7816_desc *desc, enum ade7816_channel chan, int32_t rms)
ADE7816 root mean square measurement calibration function.
Definition ade7816.c:988
int ade7816_i2c_reg_write(struct ade7816_desc *desc, uint16_t reg, uint32_t val)
ADE7816 I2C Write Register function.
Definition ade7816_i2c.c:98
int ade7816_set_active_thr(struct ade7816_desc *desc, uint16_t freq)
ADE7816 set active energy threshold value function.
Definition ade7816.c:238
int ade7816_set_offset(struct ade7816_desc *desc, enum ade7816_channel chan, int16_t scale, enum ade7816_gain_type gain)
ADE7816 set offset value for channel function.
Definition ade7816.c:758
int ade7816_spi_reg_write(struct ade7816_desc *desc, uint16_t reg, uint32_t val)
ADE7816 SPI Write Register function.
Definition ade7816_spi.c:109
ade7816_active_irq
Definition ade7816.h:279
@ ADE7816_IRQ1
Definition ade7816.h:282
@ ADE7816_IRQ0
Definition ade7816.h:281
@ ADE7816_NO_IRQ
Definition ade7816.h:280
@ ADE7816_IRQ0_IRQ1
Definition ade7816.h:283
int ade7816_get_active_thr(struct ade7816_desc *desc, uint16_t *freq)
ADE7816 get active energy threshold value function.
Definition ade7816.c:264
int ade7816_read_rms(struct ade7816_desc *desc, enum ade7816_channel chan, uint32_t *rms)
ADE7816 read root mean square measurement value function.
Definition ade7816.c:452
int ade7816_write_reg(struct ade7816_desc *desc, uint16_t reg, uint32_t val)
Register write wrapper function.
Definition ade7816.c:57
int ade7816_init(struct ade7816_desc **desc, struct ade7816_init_param *init_param)
Initialize and configure the ADE7816 device.
Definition ade7816.c:1417
int ade7816_get_interrupt(struct ade7816_desc *desc, enum ade7816_status_int status_int, bool *enable)
ADE7816 get interrupts function.
Definition ade7816.c:1251
int ade7816_group_sel(struct ade7816_desc *desc, enum ade7816_channel chan)
ADE7816 group selection for channels function.
Definition ade7816.c:1039
int ade7816_rms_to_micro(struct ade7816_desc *desc, enum ade7816_channel chan, uint32_t rms, uint32_t *micro)
ADE7816 root mean square measurement value conversion to microunits function.
Definition ade7816.c:1279
int ade7816_set_comm(struct ade7816_desc *desc, enum ade7816_comm_type type)
ADE7816 set communication function.
Definition ade7816.c:136
ade7816_gain_type
Definition ade7816.h:231
@ ADE7816_ACTIVE_POWER_GAIN
Definition ade7816.h:233
@ ADE7816_CURRENT_GAIN
Definition ade7816.h:232
@ ADE7816_REACTIVE_POWER_GAIN
Definition ade7816.h:234
int ade7816_read_period(struct ade7816_desc *desc, uint32_t *period_us)
ADE7816 read period value function.
Definition ade7816.c:1203
int ade7816_get_reactive_thr(struct ade7816_desc *desc, uint16_t *freq)
ADE7816 get reactive energy threshold value function.
Definition ade7816.c:384
int ade7816_set_gain(struct ade7816_desc *desc, enum ade7816_channel chan, int16_t scale, enum ade7816_gain_type gain)
ADE7816 set gain value for channel function.
Definition ade7816.c:513
Error codes definition.
Header file of GPIO Interface.
Header file of I2C Interface.
Header file of IRQ interface.
Header file of SPI Interface.
Header file of utility functions.
Definition ade7816.h:327
ade7816_reg_write reg_write
Definition ade7816.h:340
bool lcycle_mode
Definition ade7816.h:349
struct no_os_i2c_desc * i2c_desc
Definition ade7816.h:329
struct no_os_callback_desc irq1_cb
Definition ade7816.h:337
enum ade7816_active_irq active_irq
Definition ade7816.h:342
struct no_os_gpio_desc * gpio_irq1_desc
Definition ade7816.h:334
enum ade7816_comm_type comm_type
Definition ade7816.h:343
struct no_os_gpio_desc * ss_desc
Definition ade7816.h:332
enum ade7816_channel chan
Definition ade7816.h:344
struct no_os_spi_desc * spi_desc
Definition ade7816.h:328
uint32_t status0
Definition ade7816.h:346
ade7816_reg_read reg_read
Definition ade7816.h:339
uint32_t status1
Definition ade7816.h:347
struct no_os_gpio_desc * gpio_irq0_desc
Definition ade7816.h:333
struct no_os_gpio_desc * reset_desc
Definition ade7816.h:331
struct no_os_irq_ctrl_desc * irq_ctrl
Definition ade7816.h:335
struct no_os_callback_desc irq0_cb
Definition ade7816.h:336
Definition ade7816.h:298
void(* irq0_callback)(void *context)
Definition ade7816.h:323
struct no_os_gpio_init_param * reset_param
Definition ade7816.h:301
struct no_os_gpio_init_param * gpio_irq0_param
Definition ade7816.h:303
struct no_os_spi_init_param * spi_param
Definition ade7816.h:299
void * handle_irq0
Definition ade7816.h:314
void(* irq1_callback)(void *context)
Definition ade7816.h:324
uint32_t irq1_priority
Definition ade7816.h:312
enum ade7816_active_irq active_irq
Definition ade7816.h:308
void * handle_irq1
Definition ade7816.h:315
struct no_os_i2c_init_param * i2c_param
Definition ade7816.h:300
struct no_os_irq_ctrl_desc * irq_ctrl
Definition ade7816.h:306
uint32_t irq0_priority
Definition ade7816.h:311
enum ade7816_comm_type comm_type
Definition ade7816.h:309
struct no_os_gpio_init_param * gpio_irq1_param
Definition ade7816.h:304
struct no_os_gpio_init_param * ss_param
Definition ade7816.h:302
Structure describing a callback to be registered.
Definition no_os_irq.h:136
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52
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