no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ade9153a.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef __ADE9153A_H__
34#define __ADE9153A_H__
35
36#include <stdbool.h>
37#include <stdint.h>
38#include <string.h>
39#include "no_os_util.h"
40#include "no_os_spi.h"
41#include "no_os_gpio.h"
42#include "no_os_irq.h"
43#include "no_os_delay.h"
44#include "no_os_units.h"
45#include "no_os_alloc.h"
46#include "no_os_crc16.h"
47#include "no_os_print_log.h"
48#include <stdlib.h>
49#include <errno.h>
50#include <math.h>
51
52/* SPI commands */
53#define ADE9153A_SPI_READ NO_OS_BIT(3)
54
55/* Lock write key */
56#define ADE9153A_LOCK_KEY 0x3C64
57
58/* Unlock write key */
59#define ADE9153A_UNLOCK_KEY 0x4AD1
60
61/* COMPMODE val */
62#define ADE9153A_COMPMODEVAL 0x0005
63
64/* RUN */
65#define ADE9153A_RUN 0x0001
66#define ADE9153A_STOP 0x0000
67
68/* Version product */
69#define ADE9153A_VERSION 0x9153a
70
71/* Reset Delay */
72#define ADE9153A_RESET_DEL 0x1F4
73
74/* Address range of 16 bit registers */
75#define ADE9153A_START_16ADDR 0x473
76#define ADE9153A_END_16ADDR 0x600
77
78/* ADE9153A CRC constants */
79#define ADE9153A_CRC16_POLY 0x1021
80#define ADE9153A_CRC16_INIT_VAL 0xFFFF
81
82#define ADE9153A_NO_BYTES_W_16 0x0004
83#define ADE9153A_NO_BYTES_W_32 0x0006
84#define ADE9153A_NO_BYTES_R_16 0x0006
85#define ADE9153A_NO_BYTES_R_32 0x0008
86
87
88/* ENABLE and DISABLE */
89#define ENABLE 1u
90#define DISABLE 0u
91
92/* ADE9153A Register Map */
93#define ADE9153A_REG_AIGAIN 0x000
94#define ADE9153A_REG_APHASECAL 0x001
95#define ADE9153A_REG_AVGAIN 0x002
96#define ADE9153A_REG_AIRMS_OS 0x003
97#define ADE9153A_REG_AVRMS_OS 0x004
98#define ADE9153A_REG_APGAIN 0x005
99#define ADE9153A_REG_AWATT_OS 0x006
100#define ADE9153A_REG_AFVAR_OS 0x007
101#define ADE9153A_REG_AVRMS_OC_OS 0x008
102#define ADE9153A_REG_AIRMS_OC_OS 0x009
103#define ADE9153A_REG_BIGAIN 0x010
104#define ADE9153A_REG_BPHASECAL 0x011
105#define ADE9153A_REG_BIRMS_OS 0x013
106#define ADE9153A_REG_BIRMS_OC_OS 0x019
107#define ADE9153A_REG_CONFIG0 0x020
108#define ADE9153A_REG_VNOM 0x021
109#define ADE9153A_REG_DICOEFF 0x022
110#define ADE9153A_REG_BI_PGAGAIN 0x023
111#define ADE9153A_REG_MS_ACAL_CFG 0x030
112#define ADE9153A_REG_MS_AICC_USER 0x045
113#define ADE9153A_REG_MS_BICC_USER 0x046
114#define ADE9153A_REG_MS_AVCC_USER 0x047
115#define ADE9153A_REG_CT_PHASE_DELAY 0x049
116#define ADE9153A_REG_CT_CORNER 0x04A
117#define ADE9153A_REG_VDIV_RSMALL 0x04C
118#define ADE9153A_REG_AI_WAV 0x200
119#define ADE9153A_REG_AV_WAV 0x201
120#define ADE9153A_REG_AIRMS 0x202
121#define ADE9153A_REG_AVRMS 0x203
122#define ADE9153A_REG_AWATT 0x204
123#define ADE9153A_REG_AVA 0x206
124#define ADE9153A_REG_AFVAR 0x207
125#define ADE9153A_REG_APF 0x208
126#define ADE9153A_REG_AIRMS_OC 0x209
127#define ADE9153A_REG_AVRMS_OC 0x20A
128#define ADE9153A_REG_BI_WAV 0x210
129#define ADE9153A_REG_BIRMS 0x212
130#define ADE9153A_REG_BIRMS_OC 0x219
131#define ADE9153A_REG_MS_ACAL_AICC 0x220
132#define ADE9153A_REG_MS_ACAL_AICERT 0x221
133#define ADE9153A_REG_MS_ACAL_BICC 0x222
134#define ADE9153A_REG_MS_ACAL_BICERT 0x223
135#define ADE9153A_REG_MS_ACAL_AVCC 0x224
136#define ADE9153A_REG_MS_ACAL_AVCERT 0x225
137#define ADE9153A_REG_MS_STATUS_CURRENT 0x240
138#define ADE9153A_REG_VERSION_DSP 0x241
139#define ADE9153A_REG_VERSION_PRODUCT 0x242
140#define ADE9153A_REG_AWATT_ACC 0x39D
141#define ADE9153A_REG_AWATTHR_LO 0x39E
142#define ADE9153A_REG_AWATTHR_HI 0x39F
143#define ADE9153A_REG_AVA_ACC 0x3B1
144#define ADE9153A_REG_AVAHR_LO 0x3B2
145#define ADE9153A_REG_AVAHR_HI 0x3B3
146#define ADE9153A_REG_AFVAR_ACC 0x3BB
147#define ADE9153A_REG_AFVARHR_LO 0x3BC
148#define ADE9153A_REG_AFVARHR_HI 0x3BD
149#define ADE9153A_REG_PWATT_ACC 0x3EB
150#define ADE9153A_REG_NWATT_ACC 0x3EF
151#define ADE9153A_REG_PFVAR_ACC 0x3F3
152#define ADE9153A_REG_NFVAR_ACC 0x3F7
153#define ADE9153A_REG_IPEAK 0x400
154#define ADE9153A_REG_VPEAK 0x401
155#define ADE9153A_REG_STATUS 0x402
156#define ADE9153A_REG_MASK 0x405
157#define ADE9153A_REG_OI_LVL 0x409
158#define ADE9153A_REG_OIA 0x40A
159#define ADE9153A_REG_OIB 0x40B
160#define ADE9153A_REG_USER_PERIOD 0x40E
161#define ADE9153A_REG_VLEVEL 0x40F
162#define ADE9153A_REG_DIP_LVL 0x410
163#define ADE9153A_REG_DIPA 0x411
164#define ADE9153A_REG_SWELL_LVL 0x414
165#define ADE9153A_REG_SWELLA 0x415
166#define ADE9153A_REG_APERIOD 0x418
167#define ADE9153A_REG_ACT_NL_LVL 0x41C
168#define ADE9153A_REG_REACT_NL_LVL 0x41D
169#define ADE9153A_REG_APP_NL_LVL 0x41E
170#define ADE9153A_REG_PHNOLOAD 0x41F
171#define ADE9153A_REG_WTHR 0x420
172#define ADE9153A_REG_VARTHR 0x421
173#define ADE9153A_REG_VATHR 0x422
174#define ADE9153A_REG_LAST_DATA_32 0x423
175#define ADE9153A_REG_CT_PHASE_MEAS 0x424
176#define ADE9153A_REG_CF_LCFG 0x425
177#define ADE9153A_REG_TEMP_TRIM 0x471
178#define ADE9153A_REG_CHIP_ID_HI 0x472
179#define ADE9153A_REG_CHIP_ID_LO 0x473
180#define ADE9153A_REG_RUN 0x480
181#define ADE9153A_REG_CONFIG1 0x481
182#define ADE9153A_REG_ANGL_AV_AI 0x485
183#define ADE9153A_REG_ANGL_AI_BI 0x488
184#define ADE9153A_REG_DIP_CYC 0x48B
185#define ADE9153A_REG_SWELL_CYC 0x48C
186#define ADE9153A_REG_CFMODE 0x490
187#define ADE9153A_REG_COMPMODE 0x491
188#define ADE9153A_REG_ACCMODE 0x492
189#define ADE9153A_REG_CONFIG3 0x493
190#define ADE9153A_REG_CF1DEN 0x494
191#define ADE9153A_REG_CF2DEN 0x495
192#define ADE9153A_REG_ZXTOUT 0x498
193#define ADE9153A_REG_ZXTHRSH 0x499
194#define ADE9153A_REG_ZX_CFG 0x49A
195#define ADE9153A_REG_PHSIGN 0x49D
196#define ADE9153A_REG_CRC_RSLT 0x4A8
197#define ADE9153A_REG_CRC_SPI 0x4A9
198#define ADE9153A_REG_LAST_DATA_16 0x4AC
199#define ADE9153A_REG_LAST_CMD 0x4AE
200#define ADE9153A_REG_CONFIG2 0x4AF
201#define ADE9153A_REG_EP_CFG 0x4B0
202#define ADE9153A_REG_PWR_TIME 0x4B1
203#define ADE9153A_REG_EGY_TIME 0x4B2
204#define ADE9153A_REG_CRC_FORCE 0x4B4
205#define ADE9153A_REG_TEMP_CFG 0x4B6
206#define ADE9153A_REG_TEMP_RSLT 0x4B7
207#define ADE9153A_REG_AI_PGAGAIN 0x4B9
208#define ADE9153A_REG_WR_LOCK 0x4BF
209#define ADE9153A_REG_MS_STATUS_IRQ 0x4C0
210#define ADE9153A_REG_EVENT_STATUS 0x4C1
211#define ADE9153A_REG_CHIP_STATUS 0x4C2
212#define ADE9153A_REG_UART_BAUD_SWITCH 0x4DC
213#define ADE9153A_REG_VERSION 0x4FE
214#define ADE9153A_REG_AI_WAV_1 0x600
215#define ADE9153A_REG_AV_WAV_1 0x601
216#define ADE9153A_REG_BI_WAV_1 0x602
217#define ADE9153A_REG_AIRMS_1 0x604
218#define ADE9153A_REG_BIRMS_1 0x605
219#define ADE9153A_REG_AVRMS_1 0x606
220#define ADE9153A_REG_AWATT_1 0x608
221#define ADE9153A_REG_AFVAR_1 0x60A
222#define ADE9153A_REG_AVA_1 0x60C
223#define ADE9153A_REG_APF_1 0x60E
224#define ADE9153A_REG_ AI_WAV_2 0x610
225#define ADE9153A_REG_AV_WAV_2 0x611
226#define ADE9153A_REG_AIRMS_2 0x612
227#define ADE9153A_REG_AVRMS_2 0x613
228#define ADE9153A_REG_AWATT_2 0x614
229#define ADE9153A_REG_AVA_2 0x615
230#define ADE9153A_REG_AFVAR_2 0x616
231#define ADE9153A_REG_APF_2 0x617
232#define ADE9153A_REG_BI_WAV_2 0x618
233#define ADE9153A_REG_BIRMS_2 0x61A
234
235/* ADE9153A_REG_CONFIG0 Bit Definition */
236#define ADE9153A_DISRPLPF_MSK NO_OS_BIT(8)
237#define ADE9153A_DISAPLPF_MSK NO_OS_BIT(7)
238#define ADE9153A_VNOMA_EN_MSK NO_OS_BIT(5)
239#define ADE9153A_RMS_OC_SRC_MSK NO_OS_BIT(4)
240#define ADE9153A_ZX_SRC_SEL_MSK NO_OS_BIT(3)
241#define ADE9153A_INTEN_BI_MSK NO_OS_BIT(2)
242#define ADE9153A_HPFDIS_MSK NO_OS_BIT(0)
243
244/* ADE9153A_REG_BI_PGAGAIN Bit Definition */
245#define ADE9153A_BI_PGAGAIN_MSK NO_OS_GENMASK(31, 0)
246
247/* ADE9153A_REG_MS_ACAL_CFG Bit Definition */
248#define ADE9153A_AUTOCAL_AV_MSK NO_OS_BIT(6)
249#define ADE9153A_AUTOCAL_BI_MSK NO_OS_BIT(5)
250#define ADE9153A_AUTOCAL_AI_MSK NO_OS_BIT(4)
251#define ADE9153A_ACALMODE_BI_MSK NO_OS_BIT(3)
252#define ADE9153A_ACALMODE_AI_MSK NO_OS_BIT(2)
253#define ADE9153A_ACAL_RUN_MSK NO_OS_BIT(1)
254#define ADE9153A_ACAL_MODE_MSK NO_OS_BIT(0)
255
256/* ADE9153A_REG_MS_STATUS_CURRENT Bit Definition */
257#define ADE9153A_MS_SYSRDYP_MSK NO_OS_BIT(0)
258
259/* ADE9153A_REG_IPEAK Bit Definition */
260#define ADE9153A_IPPHASE_MSK NO_OS_GENMASK(26, 24)
261#define ADE9153A_IPEAKVAL_MSK NO_OS_GENMASK(23, 0)
262
263/* ADE9153A_REG_VPEAK Bit Definition */
264#define ADE9153A_VPEAKVAL_MSK NO_OS_GENMASK(23, 0)
265
266/* ADE9153A_REG_STATUS / ADE9153A_REG_MASK Bit Definition */
267#define ADE9153A_CHIP_STAT_MSK NO_OS_BIT(31)
268#define ADE9153A_EVENT_STAT_MSK NO_OS_BIT(30)
269#define ADE9153A_MS_STAT_MSK NO_OS_BIT(29)
270#define ADE9153A_PF_RDY_MSK NO_OS_BIT(25)
271#define ADE9153A_CRC_CHG_MSK NO_OS_BIT(24)
272#define ADE9153A_CRC_DONE_MSK NO_OS_BIT(23)
273#define ADE9153A_ZXTOAV_MSK NO_OS_BIT(21)
274#define ADE9153A_ZXBI_MSK NO_OS_BIT(20)
275#define ADE9153A_ZXAI_MSK NO_OS_BIT(19)
276#define ADE9153A_ZXAV_MSK NO_OS_BIT(17)
277#define ADE9153A_RSTDONE_MSK NO_OS_BIT(16)
278#define ADE9153A_FVARNL_MSK NO_OS_BIT(15)
279#define ADE9153A_VANL_MSK NO_OS_BIT(14)
280#define ADE9153A_WATTNL_MSK NO_OS_BIT(13)
281#define ADE9153A_TEMP_RDY_MSK NO_OS_BIT(12)
282#define ADE9153A_RMS_OC_RDY_MSK NO_OS_BIT(11)
283#define ADE9153A_PWRRDY_MSK NO_OS_BIT(10)
284#define ADE9153A_DREADY_MSK NO_OS_BIT(9)
285#define ADE9153A_EGYRDY_MSK NO_OS_BIT(8)
286#define ADE9153A_CF2_MSK NO_OS_BIT(7)
287#define ADE9153A_CF1_MSK NO_OS_BIT(6)
288#define ADE9153A_REVPCF2_MSK NO_OS_BIT(5)
289#define ADE9153A_REVPCF1_MSK NO_OS_BIT(4)
290#define ADE9153A_REVRPA_MSK NO_OS_BIT(2)
291#define ADE9153A_REVAPA_MSK NO_OS_BIT(0)
292
293/* ADE9153A_REG_OI_LVL Bit Definition */
294#define ADE9153A_OILVL_VAL_MSK NO_OS_GENMASK(23, 0)
295
296/* ADE9153A_REG_OIA Bit Definition */
297#define ADE9153A_OIA_VAL_MSK NO_OS_GENMASK(23, 0)
298
299/* ADE9153A_REG_OIB Bit Definition */
300#define ADE9153A_OIB_VAL_MSK NO_OS_GENMASK(23, 0)
301
302/* ADE9153A_REG_VLEVEL Bit Definition */
303#define ADE9153A_VLEVEL_VAL_MSK NO_OS_GENMASK(23, 0)
304
305/* ADE9153A_REG_DIPA Bit Definition */
306#define ADE9153A_DIPA_VAL_MSK NO_OS_GENMASK(23, 0)
307
308/* ADE9153A_REG_SWELLA Bit Definition */
309#define ADE9153A_SWELLA_VAL_MSK NO_OS_GENMASK(23, 0)
310
311/* ADE9153A_REG_PHNOLOAD Bit Definition */
312#define ADE9153A_AFVARNL_MSK NO_OS_BIT(2)
313#define ADE9153A_AVANL_MSK NO_OS_BIT(1)
314#define ADE9153A_AWATTNL_MSK NO_OS_BIT(0)
315
316/* ADE9153A_REG_CF_LCFG Bit Definition */
317#define ADE9153A_CF2_LT_MSK NO_OS_BIT(20)
318#define ADE9153A_CF1_LT_MSK NO_OS_BIT(19)
319#define ADE9153A_CF_LTMR_MSK NO_OS_GENMASK(18, 0)
320
321/* ADE9153A_REG_TEMP_TRIM Bit Definition */
322#define ADE9153A_TEMP_OFFSET_MSK NO_OS_GENMASK(31, 16)
323#define ADE9153A_TEMP_GAIN_MSK NO_OS_GENMASK(15, 0)
324
325/* ADE9153A_REG_CONFIG1 Bit Definition */
326#define ADE9153A_EXT_REF_MSK NO_OS_BIT(15)
327#define ADE9153A_DIP_SWELL_IRQ_MODE_MSK NO_OS_BIT(14)
328#define ADE9153A_BURST_EN_MSK NO_OS_BIT(11)
329#define ADE9153A_PWR_SETTLE_MSK NO_OS_GENMASK(9, 8)
330#define ADE9153A_CF_ACC_CLR_MSK NO_OS_BIT(5)
331#define ADE9153A_ZX_OUT_OE_MSK NO_OS_BIT(2)
332#define ADE9153A_DREADY_OE_MSK NO_OS_BIT(1)
333#define ADE9153A_SWRST_MSK NO_OS_BIT(0)
334
335/* ADE9153A_REG_CFMODE Bit Definition */
336#define ADE9153A_CF2DIS_MSK NO_OS_BIT(7)
337#define ADE9153A_CF1DIS_MSK NO_OS_BIT(6)
338#define ADE9153A_CF2SEL_MSK NO_OS_GENMASK(5, 3)
339#define ADE9153A_CF1SEL_MSK NO_OS_GENMASK(2, 0)
340
341/* ADE9153A_REG_ACCMODE Bit Definition */
342#define ADE9153A_SELFREQ_MSK NO_OS_BIT(4)
343#define ADE9153A_VARACC_MSK NO_OS_GENMASK(3, 2)
344#define ADE9153A_WATTACC_MSK NO_OS_GENMASK(1, 0)
345
346/* ADE9153A_REG_CONFIG3 Bit Definition */
347#define ADE9153A_PEAK_SEL_MSK NO_OS_GENMASK(3, 2)
348#define ADE9153A_OIB_EN_MSK NO_OS_BIT(1)
349#define ADE9153A_OIA_EN_MSK NO_OS_BIT(0)
350
351/* ADE9153A_REG_ZX_CFG Bit Definition */
352#define ADE9153A_DISZXLPF_MSK NO_OS_BIT(0)
353
354/* ADE9153A_REG_PHSIGN Bit Definition */
355#define ADE9153A_CF2SIGN_MSK NO_OS_BIT(7)
356#define ADE9153A_CF1SIGN_MSK NO_OS_BIT(6)
357#define ADE9153A_AVARSIGN_MSK NO_OS_BIT(1)
358#define ADE9153A_AWSIGN_MSK NO_OS_BIT(0)
359
360/* ADE9153A_REG_CONFIG2 Bit Definition */
361#define ADE9153A_UPERIOD_SEL_MSK NO_OS_BIT(12)
362#define ADE9153A_HPF_CRN_MSK NO_OS_GENMASK(11, 9)
363
364/* ADE9153A_REG_EP_CFG Bit Definition */
365#define ADE9153A_NOLOAD_TMR_MSK NO_OS_GENMASK(7, 5)
366#define ADE9153A_RD_RST_EN_MSK NO_OS_BIT(3)
367#define ADE9153A_EGY_LD_ACCUM_MSK NO_OS_BIT(2)
368#define ADE9153A_EGY_TMR_MODE_MSK NO_OS_BIT(1)
369#define ADE9153A_EGY_PWR_EN_MSK NO_OS_BIT(0)
370
371/* ADE9153A_REG_CRC_FORCE Bit Definition */
372#define ADE9153A_FORCE_CRC_UPDATE_MSK NO_OS_BIT(0)
373
374/* ADE9153A_REG_TEMP_CFG Bit Definition */
375#define ADE9153A_TEMP_START_MSK NO_OS_BIT(3)
376#define ADE9153A_TEMP_EN_MSK NO_OS_BIT(2)
377#define ADE9153A_TEMP_TIME_MSK NO_OS_GENMASK(1, 0)
378
379/* ADE9153A_REG_TEMP_RSLT Bit Definition */
380#define ADE9153A_TEMP_RESULT_MSK NO_OS_GENMASK(11, 0)
381
382/* ADE9153A_REG_AI_PGAGAIN Bit Definition */
383#define ADE9153A_AI_SWAP_MSK NO_OS_BIT(4)
384#define ADE9153A_AI_GAIN_MSK NO_OS_GENMASK(2, 0)
385
386/* ADE9153A_REG_MS_STATUS_IRQ Bit Definition */
387#define ADE9153A_MS_SYSRDY_MSK NO_OS_BIT(14)
388#define ADE9153A_MS_CONFERR_MSK NO_OS_BIT(13)
389#define ADE9153A_MS_ABSENT_MSK NO_OS_BIT(12)
390#define ADE9153A_MS_TIMEOUT_MSK NO_OS_BIT(3)
391#define ADE9153A_MS_READY_MSK NO_OS_BIT(1)
392#define ADE9153A_MS_SHIFT_MSK NO_OS_BIT(0)
393
394/* ADE9153A_REG_EVENT_STATUS Bit Definition */
395#define ADE9153A_OIB_MSK NO_OS_BIT(5)
396#define ADE9153A_OIA_MSK NO_OS_BIT(4)
397#define ADE9153A_SWELLA_MSK NO_OS_BIT(2)
398#define ADE9153A_DIPA_MSK NO_OS_BIT(0)
399
400/* ADE9153A_REG_CHIP_STATUS Bit Definition */
401#define ADE9153A_UART_RESET_MSK NO_OS_BIT(7)
402#define ADE9153A_UART_ERROR2_MSK NO_OS_BIT(6)
403#define ADE9153A_UART_ERROR1_MSK NO_OS_BIT(5)
404#define ADE9153A_UART_ERROR0_MSK NO_OS_BIT(4)
405#define ADE9153A_ERROR3_MSK NO_OS_BIT(3)
406#define ADE9153A_ERROR2_MSK NO_OS_BIT(2)
407#define ADE9153A_ERROR1_MSK NO_OS_BIT(1)
408#define ADE9153A_ERROR0_MSK NO_OS_BIT(0)
409
415 /* PGA gain for Current Channel B */
416 /* Gain 1 */
418 /* Gain 2 */
420 /* Gain 4 */
422};
423
429 /* Enable autocalibration on the voltage channel. */
431 /* Enable autocalibration on Current Channel B. */
433 /* Enable autocalibration on Current Channel A. */
435};
436
442 /* Normal mode. */
444 /* Turbo mode */
446};
447
453 /* 50 Hz */
455 /* 60 Hz */
457};
458
464 /* Configure the time for the power and filter-based */
465 /* rms measurements to settle before starting the */
466 /* power, energy, and CF accumulations */
467 /* 64 ms settle */
469 /* 128 ms settle */
471 /* 256 ms settle */
473 /* 0 ms settle */
475};
476
482 /* Configure the time for the power and filter-based */
483 /* rms measurements to settle before starting the */
484 /* power, energy, and CF accumulations */
485 /* Total active power */
487 /* Total apparent power */
489 /* Fundamental reactive power */
491};
492
498 /* Fundamental reactive power / total active power accumulation mode */
499 /* for energy registers and CFx pulses */
500 /* Signed accumulation mode */
502 /* Absolute value accumulation mode */
504 /* Positive accumulation mode */
506 /* Negative accumulation mode */
508};
509
515 /* Peak detection phase selection */
516 /* Phase A and Phase B disabled from voltage and current peak detection */
518 /* Phase A Voltage and current peak detection enabled, */
519 /* Phase B current peak detection disabled. */
521 /* Phase A Voltage and current peak detection disabled */
522 /* Phase B current peak detection enabled. */
524 /* Phase A & Phase B peak detection enabled. */
526};
527
533 /* Enabled when the HPFDIS bit in the CONFIG0 register is equal to zero */
534 /* 38.695 Hz */
536 /* 19.6375 Hz */
538 /* 9.895 Hz */
540 /* 4.9675 Hz */
542 /* 2.49 Hz */
544 /* 1.2475 Hz */
546 /* 0.625 Hz */
548 /* 0.3125 Hz */
550};
551
557 /* Configures how many 4 kSPS samples over which to evaluate */
558 /* the no load condition */
559 /* 64 samples */
561 /* 128 samples */
563 /* 256 samples */
565 /* 512 samples */
567 /* 1024 samples */
569 /* 2048 samples */
571 /* 4096 samples */
573 /* Disable no load threshold */
575};
576
582 /* Select the number of temperature readings to average*/
583 /* New temperature measurement every 1ms */
585 /* New temperature measurement every 256 ms */
587 /* New temperature measurement every 512 ms */
589 /* New temperature measurement every 1 sec */
591};
592
598 /* PGA gain*/
599 /* Gain = 16 */
601 /* Gain = 24 */
603 /* Gain = 32 */
605 /* Gain = 38.4 */
607};
608
614 /* Error 0 - SW/HW reset to clear */
616 /* Error 1 - SW/HW reset to clear */
618 /* Error 2 - SW/HW reset to clear */
620 /* Error 3 - SW/HW reset to clear */
622 /* UART Error 0 - UART reset to clear */
624 /* UART Error 1 - UART reset to clear */
626 /* UART Error 2 - UART reset to clear */
628 /* UART interface reset detected */
630};
631
637 /* No load */
638 /* Phase A fundamental reactive energy is in no load. */
640 /* Phase A total apparent energy is in no load */
642 /* Phase A total active energy is in no load */
644};
645
651 /* continuous */
653 /* One interrupt when entering cond. another when exiting cond. */
655};
656
696
719
732
745
757
768
781
794
809
810// Select comms interface SPI.
812
813// Select comms interface Serial.
815
816// GPIO interrupt handler for data ready.
817static void ade9153a_irq_handler(void *dev);
818
819// Initialize the device.
822
823// ADE9153A setup.
824int ade9153a_setup(void *dev, struct ade9153a_init_param init_param);
825
826// Read device register.
827int ade9153a_read(struct ade9153a_dev *dev, uint16_t reg_addr,
828 uint32_t *reg_data);
829
830// Write device register.
831int ade9153a_write(struct ade9153a_dev *dev, uint16_t reg_addr,
832 uint32_t reg_data);
833
834// Update specific register bits.
835static int ade9153a_update_bits(struct ade9153a_dev *dev, uint16_t reg_addr,
836 uint32_t mask, uint32_t reg_data);
837
838// Remove the device and release resources.
839int ade9153a_remove(struct ade9153a_dev *dev);
840
841// Reset the device using SW reset.
842int ade9153a_sw_reset(struct ade9153a_dev *dev);
843
844// Reset the device using HW reset.
845int ade9153a_hw_reset(struct ade9153a_dev *dev);
846
847// Lock device.
848int ade9153a_wr_lock(struct ade9153a_dev *dev);
849
850// Unlock device.
851int ade9153a_wr_unlock(struct ade9153a_dev *dev);
852
853// Version product
854int ade9153a_version_product(struct ade9153a_dev *dev, uint32_t *data_read);
855
856// Disable the low pass filter in the fundamental reactive power datapath.
858
859// Disable the low-pass filter in the total active power datapath.
861
862// Use the nominal phase voltage rms, VNOM, in the computation
863// of the Phase A total apparent power.
864int ade9153a_vnoma_enable(struct ade9153a_dev *dev);
865
866// Use x_WAV waveforms after the high-pass filter and phase
867//compensation for the RMS_OC calculation.
869
870// Use ADC samples, before the high-pass filter for
871// the RMS_OC calculation.
873
874// ZX data source after hpf and phase compensation
876
877// ZX data source before hpf and phase compensation
879
880// Current channel B integrator enable
882
883// Disable hpf for all channels
884int ade9153a_hpf_disable(struct ade9153a_dev *dev);
885
886// Set PGA gain for current channel B
888 enum ade9153a_bi_gain_e gain);
889
890// Auto calibration config
892 enum ade9153a_acal_ch_e ch, enum ade9153a_acalmode_e mode);
893
894// Auto calibration run
896
897// Auto calibration stop
899
900// mSure status
901int ade9153a_msure_status(struct ade9153a_dev *dev, uint8_t *status);
902
903// Ipeak channel phase
904int ade9153a_ip_phase(struct ade9153a_dev *dev, uint8_t *ch);
905
906// Ipeak val
907int ade9153a_ipk_val(struct ade9153a_dev *dev, uint32_t *val);
908
909// Vpeak val
910int ade9153a_vpk_val(struct ade9153a_dev *dev, uint32_t *val);
911
912// Get interrupt indicator from STATUS register.
913int ade9153a_get_int_status(struct ade9153a_dev *dev, uint32_t msk,
914 uint8_t *status);
915
916// Get PF ready indicator.
917int ade9153a_get_pf_rdy(struct ade9153a_dev *dev, uint8_t *status);
918
919// Get CRC change indicator.
920int ade9153a_get_crc_chg(struct ade9153a_dev *dev, uint8_t *status);
921
922// Get CRC done indicator.
923int ade9153a_get_crc_done(struct ade9153a_dev *dev, uint8_t *status);
924
925// Get zero crossing timout on V ch indicator.
926int ade9153a_get_zxtoav(struct ade9153a_dev *dev, uint8_t *status);
927
928// Get zero crossing detect on I ch B indicator.
929int ade9153a_get_zxbi(struct ade9153a_dev *dev, uint8_t *status);
930
931// Get zero crossing detect on I ch A indicator.
932int ade9153a_get_zxai(struct ade9153a_dev *dev, uint8_t *status);
933
934// Get zero crossing detect on V ch indicator.
935ade9153a_get_zxav(struct ade9153a_dev *dev, uint8_t *status);
936
937// Get reset done indicator.
938int ade9153a_get_rstdone(struct ade9153a_dev *dev, uint8_t *status);
939
940// Get fundamental reactive energy no load condition indicator.
941int ade9153a_get_fvarnl(struct ade9153a_dev *dev, uint8_t *status);
942
943// Get total apparent energy no load condition indicator.
944int ade9153a_get_vanl(struct ade9153a_dev *dev, uint8_t *status);
945
946// Get total active energy no load condition indicator.
947int ade9153a_get_wattnl(struct ade9153a_dev *dev, uint8_t *status);
948
949// Get new temperature reading ready indicator.
950int ade9153a_get_temp_rdy(struct ade9153a_dev *dev, uint8_t *status);
951
952// Get RMS_OC values update indicator.
953int ade9153a_get_rms_oc_rdy(struct ade9153a_dev *dev, uint8_t *status);
954
955// Get power values registers update indicator.
956int ade9153a_get_pwrrdy(struct ade9153a_dev *dev, uint8_t *status);
957
958// Get new waveform samples ready indicator.
959int ade9153a_get_dready(struct ade9153a_dev *dev, uint8_t *status);
960
961// Get power values egy ready indicator.
962int ade9153a_get_egyrdy(struct ade9153a_dev *dev, uint8_t *status);
963
964// Get CF2 pulse issued indicator.
965int ade9153a_get_cf2(struct ade9153a_dev *dev, uint8_t *status);
966
967// Get CF1 pulse issued indicator.
968int ade9153a_get_cf1(struct ade9153a_dev *dev, uint8_t *status);
969
970// Get CF2 polarity change indicator.
971int ade9153a_get_cf2_chg(struct ade9153a_dev *dev, uint8_t *status);
972
973// Get CF1 polarity change indicator.
974int ade9153a_get_cf1_chg(struct ade9153a_dev *dev, uint8_t *status);
975
976// Get RPA (reactive power) sign change indicator.
977int ade9153a_get_rpa_chg_sgn(struct ade9153a_dev *dev, uint8_t *status);
978
979// Get APA (active power) sign change indicator.
980int ade9153a_get_apa_chg_sgn(struct ade9153a_dev *dev, uint8_t *status);
981
982// Clear PF ready int mask.
983int ade9153a_clear_pf_rdy(struct ade9153a_dev *dev);
984
985// Clear CRC change int mask.
986int ade9153a_clear_crc_chg(struct ade9153a_dev *dev);
987
988// Clear CRC done int mask.
990
991// Clear zero crossing timout on V ch int mask.
992int ade9153a_clear_zxtoav(struct ade9153a_dev *dev);
993
994// Clear zero crossing detect on I ch B int mask.
995int ade9153a_clear_zxbi(struct ade9153a_dev *dev);
996
997// Clear zero crossing detect on I ch A int mask.
998int ade9153a_clear_zxai(struct ade9153a_dev *dev);
999
1000// Clear zero crossing detect on V ch int mask.
1001int ade9153a_clear_zxav(struct ade9153a_dev *dev);
1002
1003// Clear reset done int mask.
1004int ade9153a_clear_rstdone(struct ade9153a_dev *dev);
1005
1006// Clear fundamental reactive energy no load condition int mask.
1007int ade9153a_clear_fvarnl(struct ade9153a_dev *dev);
1008
1009// Clear total apparent energy no load condition int mask.
1010int ade9153a_clear_vanl(struct ade9153a_dev *dev);
1011
1012// Clear total active energy no load condition int mask.
1013int ade9153a_clear_wattnl(struct ade9153a_dev *dev);
1014
1015// Clear new temperature reading ready int mask.
1016int ade9153a_clear_temp_rdy(struct ade9153a_dev *dev);
1017
1018// Clear RMS_OC values update int mask.
1020
1021// Clear power values registers update int mask.
1022int ade9153a_clear_pwrrdy(struct ade9153a_dev *dev);
1023
1024// Clear new waveform samples ready int mask.
1025int ade9153a_clear_dready(struct ade9153a_dev *dev);
1026
1027// Clear power values egy ready int mask.
1028int ade9153a_clear_egyrdy(struct ade9153a_dev *dev);
1029
1030// Clear CF2 pulse issued int mask.
1031int ade9153a_clear_cf2(struct ade9153a_dev *dev);
1032
1033// Clear CF1 pulse issued int mask.
1034ade9153a_clear_cf1(struct ade9153a_dev *dev);
1035
1036// Clear CF2 polarity change int mask.
1037int ade9153a_clear_cf2_chg(struct ade9153a_dev *dev);
1038
1039// Clear CF1 polarity change int mask.
1040int ade9153a_clear_cf1_chg(struct ade9153a_dev *dev);
1041
1042// Clear RPA (reactive power) sign change int mask.
1044
1045// Clear APA (active power) sign change int mask.
1047
1048// Get chip status indicator.
1049int ade9153a_get_chip_stat(struct ade9153a_dev *dev, uint8_t *status);
1050
1051// Clear chip status int.
1052int ade9153a_clear_chip_stat(struct ade9153a_dev *dev, uint32_t *reg_val);
1053
1054// Get event status indicator.
1055int ade9153a_get_event_stat(struct ade9153a_dev *dev, uint8_t *status);
1056
1057// Clear event status int.
1058int ade9153a_clear_event_stat(struct ade9153a_dev *dev, uint32_t *reg_val);
1059
1060// Get MS status indicator.
1061int ade9153a_get_ms_stat(struct ade9153a_dev *dev, uint8_t *status);
1062
1063// Clear MS status int.
1064int ade9153a_clear_ms_stat(struct ade9153a_dev *dev, uint32_t *reg_val);
1065
1066// Enable/disable interrupt.
1067int ade9153a_control_interrupt(struct ade9153a_dev *dev, uint16_t reg_addr,
1068 uint32_t int_msk, uint8_t en);
1069
1070// Enable an interrupt when any bit in CHIP_STATUS reg is set
1072
1073// Disable CHIP_STAT interrupt.
1075
1076// Enable an interrupt when any bit in EVENT_STATUS reg is set
1078
1079// Disable EVENT_STAT interrupt.
1081
1082// Enable an interrupt when any bit in MS_STATUS_IRQ reg is set
1084
1085// Disable MS_STAT interrupt.
1087
1088// Enable pf ready interrupt
1090
1091// Disable pf ready interrupt.
1093
1094// Enable crc change interrupt
1096
1097// Disable crc change interrupt.
1099
1100// Enable crc done interrupt
1102
1103// Disable crc done interrupt.
1105
1106// Enable zero corssing timeout on voltage ch interrupt
1108
1109// Disable zero corssing timeout on voltage ch interrupt.
1111
1112// Enable zero corssing detected on I ch B interrupt
1113int ade9153a_enable_zxbi_int(struct ade9153a_dev *dev);
1114
1115// Disable zero corssing detected on I ch B interrupt.
1117
1118// Enable zero corssing detected on I ch A interrupt
1119int ade9153a_enable_zxai_int(struct ade9153a_dev *dev);
1120
1121// Disable zero corssing detected on I ch A interrupt.
1123
1124// Enable zero corssing detected on V ch interrupt
1125int ade9153a_enable_zxav_int(struct ade9153a_dev *dev);
1126
1127// Disable zero corssing detected on V ch interrupt.
1129
1130// Enable fundamental reactive energy no load condition interrupt.
1132
1133// Disable fundamental reactive energy no load condition interrupt.
1135
1136// Enable total apparent energy no load condition interrupt.
1137int ade9153a_enable_vanl_int(struct ade9153a_dev *dev);
1138
1139// Disable total apparent energy no load condition interrupt.
1141
1142// Enable total active energy no load condition interrupt.
1144
1145// Disable total active energy no load condition interrupt.
1147
1148// Enable new temperature reading interrupt.
1150
1151// Disable new temperature reading interrupt.
1153
1154// Enable RMS_OC values update interrupt.
1156
1157// Disable RMS_OC values update interrupt.
1159
1160// Enable PWRRDY interrupt.
1162
1163// Disable PWRRDY interrupt.
1165
1166// Enable data ready interrupt.
1168
1169// Disable data ready interrupt.
1171
1172// Enable EGYRDY interrupt.
1174
1175// Disable EGYRDY interrupt.
1177
1178// Enable CF2 interrupt.
1179int ade9153a_enable_cf2_int(struct ade9153a_dev *dev);
1180
1181// Disable CF2 interrupt.
1182int ade9153a_disable_cf2_int(struct ade9153a_dev *dev);
1183
1184// Enable CF1 interrupt.
1185int ade9153a_enable_cf1_int(struct ade9153a_dev *dev);
1186
1187// Disable CF1 interrupt.
1188int ade9153a_disable_cf1_int(struct ade9153a_dev *dev);
1189
1190// Enable CF2 polarity change sign interrupt.
1192
1193// Disable CF2 polarity change sign interrupt.
1195
1196// Enable CF1 polarity change sign interrupt.
1198
1199// Disable CF1 polarity change sign interrupt.
1201
1202// Enable Phase A fundamental reactive power changed sign interrupt.
1204
1205// Disable Phase A fundamental reactive power changed sign interrupt.
1207
1208// Enable Phase A total active power changed sign interrupt.
1210
1211// Disable Phase A total active power changed sign interrupt.
1213
1214// Overcurrent detection threshold level val
1215int ade9153a_oi_lvl_val(struct ade9153a_dev *dev, uint32_t *val);
1216
1217// Ch A overcurrent val
1218int ade9153a_oia_val(struct ade9153a_dev *dev, uint32_t *val);
1219
1220// Ch B overcurrent val
1221int ade9153a_oib_val(struct ade9153a_dev *dev, uint32_t *val);
1222
1223// Vlevel val
1224int ade9153a_vlevel_val(struct ade9153a_dev *dev, uint32_t *val);
1225
1226// Voltage value during dip condition
1227int ade9153a_dipa_val(struct ade9153a_dev *dev, uint32_t *val);
1228
1229// Voltage value during swell condition
1230int ade9153a_swella_val(struct ade9153a_dev *dev, uint32_t *val);
1231
1232// Get phnoload status.
1233int ade9153a_get_phnoload_status(struct ade9153a_dev *dev, uint8_t *status);
1234
1235// CF2_LT status
1236int ade9153a_cf2_lt_status(struct ade9153a_dev *dev, uint8_t *status);
1237
1238// CF1_LT status
1239int ade9153a_cf1_lt_status(struct ade9153a_dev *dev, uint8_t *status);
1240
1241// cf_ltmr write value.
1242int ade9153a_cf_ltmr_write(struct ade9153a_dev *dev, uint32_t reg_data);
1243
1244// cf_ltmr read value.
1245int ade9153a_cf_ltmr_val(struct ade9153a_dev *dev, uint32_t *val);
1246
1247// temperature sensor offset.
1248int ade9153a_temp_offset_val(struct ade9153a_dev *dev, uint32_t *val);
1249
1250// temperature sensor gain.
1251int ade9153a_temp_gain_val(struct ade9153a_dev *dev, uint32_t *val);
1252
1253// External voltage reference enable/disable.
1254int ade9153a_ext_ref(struct ade9153a_dev *dev, uint8_t en);
1255
1256// External_reference status
1257int ade9153a_ext_ref_status(struct ade9153a_dev *dev, uint8_t *status);
1258
1259// Dip swell interrupt mode.
1261 enum dip_swell_irq_mode_en mode);
1262
1263// Burst read enable/disable.
1264int ade9153a_burst_en(struct ade9153a_dev *dev);
1265
1266// Set PWR_SETTLE
1268 enum ade9153a_pwr_settle_e time);
1269
1270// Clear accumulation in the digital freq conv.
1271int ade9153a_cf_acc_clr(struct ade9153a_dev *dev);
1272
1273// ZX driven to CF2 pin.
1274int ade9153a_zx_out_oe(struct ade9153a_dev *dev);
1275
1276// DREADY driven to CF2 pin.
1277int ade9153a_dready_oe(struct ade9153a_dev *dev);
1278
1279// CF2 output disable.
1280int ade9153a_cf2dis(struct ade9153a_dev *dev);
1281
1282// CF1 output disable.
1283int ade9153a_cf1dis(struct ade9153a_dev *dev);
1284
1285// Set type of energy output on CF2 pin
1286int ade9153a_cf2sel(struct ade9153a_dev *dev,
1287 enum ade9153a_cf2sel_e energy_type);
1288
1289// Set type of energy output on CF1 pin
1290int ade9153a_cf1sel(struct ade9153a_dev *dev,
1291 enum ade9153a_cf2sel_e energy_type);
1292
1293// Frequency select.
1294int ade9153a_selfreq(struct ade9153a_dev *dev, enum ade9153a_selfreq_e freq);
1295
1296// Frequency setting
1297int ade9153a_freq_s_status(struct ade9153a_dev *dev, uint8_t *status);
1298
1299// Select fundamental reactive power accumulation mode
1300int ade9153a_varacc(struct ade9153a_dev *dev,
1301 enum ade9153a_accmode_e varacc_type);
1302
1303// Select total active power accumulation mode
1304int ade9153a_wattacc(struct ade9153a_dev *dev,
1305 enum ade9153a_accmode_e wattacc_type);
1306
1307// Select peak detection channels
1308int ade9153a_peak_sel(struct ade9153a_dev *dev,
1309 enum ade9153a_peak_sel_e peak_sel);
1310
1311// Ch B overcurretn detection enable.
1312int ade9153a_oib_en(struct ade9153a_dev *dev);
1313
1314// Ch A overcurretn detection enable.
1315int ade9153a_oia_en(struct ade9153a_dev *dev);
1316
1317// Zero crossing lpf disable.
1318int ade9153a_diszxlpf(struct ade9153a_dev *dev);
1319
1320// Sign of CF2 power
1321int ade9153a_cf2sign_status(struct ade9153a_dev *dev, uint8_t *status);
1322
1323// Sign of CF1 power
1324int ade9153a_cf1sign_status(struct ade9153a_dev *dev, uint8_t *status);
1325
1326// Sign of reactive power
1327int ade9153a_avarsign_status(struct ade9153a_dev *dev, uint8_t *status);
1328
1329// Sign of active power
1330int ade9153a_awsign_status(struct ade9153a_dev *dev, uint8_t *status);
1331
1332// User period select.
1333int ade9153a_uperiod_sel(struct ade9153a_dev *dev, uint8_t en);
1334
1335// Hpf corner freq
1336int ade9153a_hpf_crn(struct ade9153a_dev *dev,
1337 enum ade9153a_hpf_crn_e hpf_corner_freq);
1338
1339// Set no. of samples for no load condition
1340int ade9153a_noload_tmr(struct ade9153a_dev *dev,
1341 enum ade9153a_noload_tmr_e noload_samples);
1342
1343// Energy register read with value reset.
1344int ade9153a_rd_rst_en(struct ade9153a_dev *dev);
1345
1346// Internal energy register accum.
1347int ade9153a_egy_ld_accum(struct ade9153a_dev *dev, uint8_t en);
1348
1349// Energy accumulated based on the number of
1350// 4 kSPS samples or zero-crossing events
1351int ade9153a_egy_tmr_mode(struct ade9153a_dev *dev, uint8_t en);
1352
1353// Enable the energy and power accumulator when
1354// the run bit is also set.
1355int ade9153a_egy_pwr_en(struct ade9153a_dev *dev);
1356
1357// Force CRC calculation to start (update).
1359
1360// Manually request a new temperature sensor reading.
1361int ade9153a_temp_start(struct ade9153a_dev *dev);
1362
1363// Enable the temperature sensor.
1364int ade9153a_temp_en(struct ade9153a_dev *dev);
1365
1366// Select the number of temperature readings to average.
1367int ade9153a_temp_time(struct ade9153a_dev *dev,
1368 enum ade9153a_temp_time_e temp_no_samples);
1369
1370// Temperature result
1371int ade9153a_temp_result(struct ade9153a_dev *dev, uint16_t *val);
1372
1373// COMPMODE
1374int ade9153a_compmode(struct ade9153a_dev *dev);
1375
1376// Start measurements.
1377int ade9153a_run(struct ade9153a_dev *dev);
1378
1379// Stop measurements.
1380int ade9153a_stop(struct ade9153a_dev *dev);
1381
1382// Set the signal side of the PGA.
1383int ade9153a_ai_swap(struct ade9153a_dev *dev, uint8_t set);
1384
1385// Set the PGA gain for I chA.
1386int ade9153a_ai_gain(struct ade9153a_dev *dev, enum ade9153a_ai_gain_e gain);
1387
1388// New run of mSure ready
1389int ade9153a_ms_sysrdy(struct ade9153a_dev *dev, uint8_t *status);
1390
1391// Invalid config of mSure status
1392int ade9153a_ms_conferr(struct ade9153a_dev *dev, uint8_t *status);
1393
1394// mSure not detected on the last enabled ch
1395int ade9153a_ms_absent(struct ade9153a_dev *dev, uint8_t *status);
1396
1397// mSure timed out (600s)
1398int ade9153a_ms_timeout(struct ade9153a_dev *dev, uint8_t *status);
1399
1400// mSure ready
1401int ade9153a_ms_ready(struct ade9153a_dev *dev, uint8_t *status);
1402
1403// mSure shift detected in CC val
1404int ade9153a_ms_shift(struct ade9153a_dev *dev, uint8_t *status);
1405
1406// Chip status
1407int ade9153a_chip_status(struct ade9153a_dev *dev, uint8_t *status);
1408
1409// Temperature value in deg C
1410int ade9153a_temp_val(struct ade9153a_dev *dev,
1411 struct ade9153a_temperature_value *data);
1412
1413// Read energy values
1414int ade9153a_energy_vals(struct ade9153a_dev *dev,
1415 struct ade9153a_energy_values *data);
1416
1417// Read power values
1418int ade9153a_power_vals(struct ade9153a_dev *dev,
1419 struct ade9153a_power_values *data);
1420
1421// Read rms values
1422int ade9153a_rms_vals(struct ade9153a_dev *dev,
1423 struct ade9153a_rms_values *data);
1424
1425// Read half rms values
1426int ade9153a_half_rms_vals(struct ade9153a_dev *dev,
1427 struct ade9153a_half_rms_values *data);
1428
1429// Read power quaility values
1431 struct ade9153a_pq_values *data);
1432
1433// Start autocalibration AI channel
1435 enum ade9153a_acalmode_e mode);
1436
1437// Start autocalibration BI channel
1439 enum ade9153a_acalmode_e mode);
1440
1441// Start autocalibration AV channel
1443 enum ade9153a_acalmode_e mode);
1444
1445// Read autocalibration values
1447 struct ade9153a_autocal_vals *data);
1448
1449#endif // __ADE9153A_H__
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int ade9153a_clear_vanl(struct ade9153a_dev *dev)
Clear total apparent energy no load condition int mask.
Definition ade9153a.c:1562
int ade9153a_egy_tmr_mode(struct ade9153a_dev *dev, uint8_t en)
Energy accumulated based on the number of 4 kSPS samples or zero-crossing events.
Definition ade9153a.c:3579
int ade9153a_get_fvarnl(struct ade9153a_dev *dev, uint8_t *status)
Get fundamental reactive energy no load condition indicator.
Definition ade9153a.c:1204
int ade9153a_version_product(struct ade9153a_dev *dev, uint32_t *data_read)
Version product.
Definition ade9153a.c:634
ade9153a_ai_gain_e
ADE9153A PGA gain for current CH A.
Definition ade9153a.h:597
@ ADE9153A_AI_GAIN_24
Definition ade9153a.h:602
@ ADE9153A_AI_GAIN_32
Definition ade9153a.h:604
@ ADE9153A_AI_GAIN_38_4
Definition ade9153a.h:606
@ ADE9153A_AI_GAIN_16
Definition ade9153a.h:600
int ade9153a_force_crc_update(struct ade9153a_dev *dev)
Force CRC calculation to start (update).
Definition ade9153a.c:3607
int ade9153a_disable_dready_int(struct ade9153a_dev *dev)
Disable data ready interrupt.
Definition ade9153a.c:2317
int ade9153a_enable_dready_int(struct ade9153a_dev *dev)
Enable data ready interrupt.
Definition ade9153a.c:2303
int ade9153a_auto_calibration_stop(struct ade9153a_dev *dev)
Auto calibration stop.
Definition ade9153a.c:919
int ade9153a_get_zxbi(struct ade9153a_dev *dev, uint8_t *status)
Get zero crossing detect on I ch B indicator.
Definition ade9153a.c:1140
int ade9153a_enable_pf_rdy_int(struct ade9153a_dev *dev)
Enable pf ready interrupt.
Definition ade9153a.c:1939
int ade9153a_clear_temp_rdy(struct ade9153a_dev *dev)
Clear new temperature reading ready int mask.
Definition ade9153a.c:1592
int ade9153a_clear_pf_rdy(struct ade9153a_dev *dev)
Clear PF ready int mask.
Definition ade9153a.c:1427
int ade9153a_disable_cf1_int(struct ade9153a_dev *dev)
Disable CF1 interrupt.
Definition ade9153a.c:2401
int ade9153a_get_event_stat(struct ade9153a_dev *dev, uint8_t *status)
Get event status indicator.
Definition ade9153a.c:1782
ade9153a_accmode_e
ADE9153A varacc/watacc acc mode.
Definition ade9153a.h:497
@ ADE9153A_NEGATIVE_ACC_MODE
Definition ade9153a.h:507
@ ADE9153A_SIGNED_ACC_MODE
Definition ade9153a.h:501
@ ADE9153A_POSITIVE_ACC_MODE
Definition ade9153a.h:505
@ ADE9153A_ABSOLUTE_VAL_ACC_MODE
Definition ade9153a.h:503
int ade9153a_disable_revapa_int(struct ade9153a_dev *dev)
Disable Phase A total active power changed sign interrupt.
Definition ade9153a.c:2513
int ade9153a_start_autocal_av(struct ade9153a_dev *dev, enum ade9153a_acalmode_e mode)
Start autocalibration AV channel.
Definition ade9153a.c:4338
int ade9153a_clear_apa_chg_sgn(struct ade9153a_dev *dev)
Clear APA (active power) sign change int mask.
Definition ade9153a.c:1739
int ade9153a_disable_crc_done_int(struct ade9153a_dev *dev)
Disable crc done interrupt.
Definition ade9153a.c:2009
int ade9153a_clear_event_stat(struct ade9153a_dev *dev, uint32_t *reg_val)
Clear event status int.
Definition ade9153a.c:1796
int ade9153a_setup(void *dev, struct ade9153a_init_param init_param)
ADE9153A setup.
Definition ade9153a.c:288
int ade9153a_zx_out_oe(struct ade9153a_dev *dev)
ZX driven to CF2 pin.
Definition ade9153a.c:2992
int ade9153a_remove(struct ade9153a_dev *dev)
Remove the device and release resources.
Definition ade9153a.c:506
int ade9153a_get_crc_done(struct ade9153a_dev *dev, uint8_t *status)
Get CRC done indicator.
Definition ade9153a.c:1108
int ade9153a_enable_crc_done_int(struct ade9153a_dev *dev)
Enable crc done interrupt.
Definition ade9153a.c:1995
ade9153a_noload_tmr_e
ADE9153A Hpf no load tmr.
Definition ade9153a.h:556
@ ADE9153A_NOLOAD_TMR_SAMPLES_128
Definition ade9153a.h:562
@ ADE9153A_NOLOAD_TMR_SAMPLES_1024
Definition ade9153a.h:568
@ ADE9153A_NOLOAD_TMR_SAMPLES_64
Definition ade9153a.h:560
@ ADE9153A_NOLOAD_TMR_SAMPLES_256
Definition ade9153a.h:564
@ ADE9153A_NOLOAD_TMR_SAMPLES_4096
Definition ade9153a.h:572
@ ADE9153A_NOLOAD_TMR_SAMPLES_512
Definition ade9153a.h:566
@ ADE9153A_NOLOAD_TMR_SAMPLES_2048
Definition ade9153a.h:570
@ ADE9153A_NOLOAD_TMR_DISABLE
Definition ade9153a.h:574
int ade9153a_start_autocal_ai(struct ade9153a_dev *dev, enum ade9153a_acalmode_e mode)
Start autocalibration AI channel.
Definition ade9153a.c:4274
ade9153a_cf2sel_e
ADE9153A CF2SEL type of energy output at CF2 Pin.
Definition ade9153a.h:481
@ ADE9153A_TOTAL_ACTIVE_POWER
Definition ade9153a.h:486
@ ADE9153A_TOTAL_APPARENT_POWER
Definition ade9153a.h:488
@ ADE9153A_TOTAL_FUNDAMENTAL_REACTIVE_POWER
Definition ade9153a.h:490
int ade9153a_sw_reset(struct ade9153a_dev *dev)
Reset the device using SW reset.
Definition ade9153a.c:548
int ade9153a_disable_wattnl_int(struct ade9153a_dev *dev)
Disable total active energy no load condition interrupt.
Definition ade9153a.c:2205
int ade9153a_ms_conferr(struct ade9153a_dev *dev, uint8_t *status)
Invalid config of mSure status.
Definition ade9153a.c:3834
int ade9153a_disable_temp_rdy_int(struct ade9153a_dev *dev)
Disable new temperature reading interrupt.
Definition ade9153a.c:2233
int ade9153a_disable_pwrrdy_int(struct ade9153a_dev *dev)
Disable PWRRDY interrupt.
Definition ade9153a.c:2289
int ade9153a_ext_ref_status(struct ade9153a_dev *dev, uint8_t *status)
External_reference status.
Definition ade9153a.c:2869
int ade9153a_oib_val(struct ade9153a_dev *dev, uint32_t *val)
Ch B overcurrent val.
Definition ade9153a.c:2578
int ade9153a_get_vanl(struct ade9153a_dev *dev, uint8_t *status)
Get total apparent energy no load condition indicator.
Definition ade9153a.c:1220
int ade9153a_enable_ms_stat_int(struct ade9153a_dev *dev)
Enable an interrupt when any bit in MS_STATUS_IRQ reg is set.
Definition ade9153a.c:1911
int ade9153a_burst_en(struct ade9153a_dev *dev)
Burst read enable/disable.
Definition ade9153a.c:2925
int ade9153a_clear_chip_stat(struct ade9153a_dev *dev, uint32_t *reg_val)
Clear chip status int.
Definition ade9153a.c:1768
int ade9153a_enable_zxai_int(struct ade9153a_dev *dev)
Enable zero corssing detected on I ch A interrupt.
Definition ade9153a.c:2079
int ade9153a_egy_pwr_en(struct ade9153a_dev *dev)
Enable the energy and power accumulator when the run bit is also set.
Definition ade9153a.c:3593
int ade9153a_auto_calibration_run(struct ade9153a_dev *dev)
Auto calibration run.
Definition ade9153a.c:894
int ade9153a_rms_vals(struct ade9153a_dev *dev, struct ade9153a_rms_values *data)
Read rms values.
Definition ade9153a.c:4169
int ade9153a_ai_swap(struct ade9153a_dev *dev, uint8_t set)
Set the signal side of the PGA.
Definition ade9153a.c:3757
ade9153a_selfreq_e
select frequency
Definition ade9153a.h:452
@ F_50_HZ
Definition ade9153a.h:454
@ F_60_HZ
Definition ade9153a.h:456
int ade9153a_energy_vals(struct ade9153a_dev *dev, struct ade9153a_energy_values *data)
Read energy values.
Definition ade9153a.c:4091
int ade9153a_set_interface_serial(struct ade9153a_dev *dev)
Select comms interface Serial.
Definition ade9153a.c:90
int ade9153a_chip_status(struct ade9153a_dev *dev, uint8_t *status)
Chip status.
Definition ade9153a.c:3969
int ade9153a_enable_zxtoav_int(struct ade9153a_dev *dev)
Enable zero corssing timeout on voltage ch interrupt.
Definition ade9153a.c:2023
int ade9153a_power_vals(struct ade9153a_dev *dev, struct ade9153a_power_values *data)
Read power values.
Definition ade9153a.c:4130
int ade9153a_read(struct ade9153a_dev *dev, uint16_t reg_addr, uint32_t *reg_data)
Read device register.
Definition ade9153a.c:358
int ade9153a_clear_fvarnl(struct ade9153a_dev *dev)
Clear fundamental reactive energy no load condition int mask.
Definition ade9153a.c:1547
ade9153a_temp_time_e
ADE9153A Temperature readings.
Definition ade9153a.h:581
@ ADE9153A_TEMP_TIME_SAMPLES_1
Definition ade9153a.h:584
@ ADE9153A_TEMP_TIME_SAMPLES_256
Definition ade9153a.h:586
@ ADE9153A_TEMP_TIME_SAMPLES_1024
Definition ade9153a.h:590
@ ADE9153A_TEMP_TIME_SAMPLES_512
Definition ade9153a.h:588
dip_swell_irq_mode_en
Dip swell irq mode.
Definition ade9153a.h:650
@ ONE_INT
Definition ade9153a.h:654
@ CONTINUOUSE
Definition ade9153a.h:652
int ade9153a_get_ms_stat(struct ade9153a_dev *dev, uint8_t *status)
Get MS status indicator.
Definition ade9153a.c:1810
int ade9153a_enable_vanl_int(struct ade9153a_dev *dev)
Enable total apparent energy no load condition interrupt.
Definition ade9153a.c:2163
int ade9153a_enable_temp_rdy_int(struct ade9153a_dev *dev)
Enable new temperature reading interrupt.
Definition ade9153a.c:2219
int ade9153a_temp_gain_val(struct ade9153a_dev *dev, uint32_t *val)
temperature sensor gain.
Definition ade9153a.c:2832
int ade9153a_power_quality_vals(struct ade9153a_dev *dev, struct ade9153a_pq_values *data)
Read power quaility values.
Definition ade9153a.c:4235
int ade9153a_vpk_val(struct ade9153a_dev *dev, uint32_t *val)
Vpeak val.
Definition ade9153a.c:1023
int ade9153a_uperiod_sel(struct ade9153a_dev *dev, uint8_t en)
User period select.
Definition ade9153a.c:3429
int ade9153a_get_rpa_chg_sgn(struct ade9153a_dev *dev, uint8_t *status)
Get RPA (reactive power) sign change indicator.
Definition ade9153a.c:1396
int ade9153a_enable_event_stat_int(struct ade9153a_dev *dev)
Enable an interrupt when any bit in EVENT_STATUS reg is set.
Definition ade9153a.c:1883
int ade9153a_set_interface_spi(struct ade9153a_dev *dev)
Select comms interface SPI.
Definition ade9153a.c:58
int ade9153a_temp_start(struct ade9153a_dev *dev)
Manually request a new temperature sensor reading.
Definition ade9153a.c:3622
ade9153a_get_zxav(struct ade9153a_dev *dev, uint8_t *status)
Get zero crossing detect on V ch indicator.
Definition ade9153a.c:1172
int ade9153a_ms_absent(struct ade9153a_dev *dev, uint8_t *status)
mSure not detected on the last enabled ch
Definition ade9153a.c:3861
int ade9153a_clear_rpa_chg_sgn(struct ade9153a_dev *dev)
Clear RPA (reactive power) sign change int mask.
Definition ade9153a.c:1725
int ade9153a_hpf_crn(struct ade9153a_dev *dev, enum ade9153a_hpf_crn_e hpf_corner_freq)
Hpf corner freq.
Definition ade9153a.c:3444
ade9153a_peak_sel_e
ADE9153A Peak sel.
Definition ade9153a.h:514
@ ADE9153A_PEAK_DETECTION_DISABLE_PHA_PHB
Definition ade9153a.h:517
@ ADE9153A_PEAK_DETECTION_ENABLE_V_I_PHA_PHB
Definition ade9153a.h:525
@ ADE9153A_PEAK_DETECTION_ENABLE_I_PHB
Definition ade9153a.h:523
@ ADE9153A_PEAK_DETECTION_ENABLE_V_I_PHA
Definition ade9153a.h:520
int ade9153a_get_cf2(struct ade9153a_dev *dev, uint8_t *status)
Get CF2 pulse issued indicator.
Definition ade9153a.c:1332
int ade9153a_get_pf_rdy(struct ade9153a_dev *dev, uint8_t *status)
Get PF ready indicator.
Definition ade9153a.c:1076
ade9153a_phnoload_e
Type of energy that is in no load condition.
Definition ade9153a.h:636
@ AWATTNL
Definition ade9153a.h:643
@ AFVARNL
Definition ade9153a.h:639
@ AVANL
Definition ade9153a.h:641
int ade9153a_clear_rms_oc_rdy(struct ade9153a_dev *dev)
Clear RMS_OC values update int mask.
Definition ade9153a.c:1607
int ade9153a_avarsign_status(struct ade9153a_dev *dev, uint8_t *status)
Sign of reactive power.
Definition ade9153a.c:3375
int ade9153a_clear_cf1_chg(struct ade9153a_dev *dev)
Clear CF1 polarity change int mask.
Definition ade9153a.c:1711
int ade9153a_get_apa_chg_sgn(struct ade9153a_dev *dev, uint8_t *status)
Get APA (active power) sign change indicator.
Definition ade9153a.c:1412
int ade9153a_enable_zxav_int(struct ade9153a_dev *dev)
Enable zero corssing detected on V ch interrupt.
Definition ade9153a.c:2107
ade9153a_clear_cf1(struct ade9153a_dev *dev)
Clear CF1 pulse issued int mask.
Definition ade9153a.c:1682
int ade9153a_oib_en(struct ade9153a_dev *dev)
Ch B overcurretn detection enable.
Definition ade9153a.c:3278
int ade9153a_disable_egyrdy_int(struct ade9153a_dev *dev)
Disable EGYRDY interrupt.
Definition ade9153a.c:2345
int ade9153a_enable_revrpa_int(struct ade9153a_dev *dev)
Enable Phase A fundamental reactive power changed sign interrupt.
Definition ade9153a.c:2471
int ade9153a_disable_ms_stat_int(struct ade9153a_dev *dev)
Disable MS_STAT interrupt.
Definition ade9153a.c:1925
int ade9153a_cf2_lt_status(struct ade9153a_dev *dev, uint8_t *status)
CF2_LT status.
Definition ade9153a.c:2712
int ade9153a_selfreq(struct ade9153a_dev *dev, enum ade9153a_selfreq_e freq)
Frequency select.
Definition ade9153a.c:3115
int ade9153a_ipk_val(struct ade9153a_dev *dev, uint32_t *val)
Ipeak val.
Definition ade9153a.c:998
ade9153a_acal_ch_e
select channels for autocalibration
Definition ade9153a.h:428
@ AUTOCAL_AV
Definition ade9153a.h:430
@ AUTOCAL_BI
Definition ade9153a.h:432
@ AUTOCAL_AI
Definition ade9153a.h:434
int ade9153a_enable_revpcf2_int(struct ade9153a_dev *dev)
Enable CF2 polarity change sign interrupt.
Definition ade9153a.c:2415
int ade9153a_enable_zxbi_int(struct ade9153a_dev *dev)
Enable zero corssing detected on I ch B interrupt.
Definition ade9153a.c:2051
int ade9153a_wr_lock(struct ade9153a_dev *dev)
Lock device.
Definition ade9153a.c:601
int ade9153a_disable_rms_oc_rdy_int(struct ade9153a_dev *dev)
Disable RMS_OC values update interrupt.
Definition ade9153a.c:2261
int ade9153a_cf1sel(struct ade9153a_dev *dev, enum ade9153a_cf2sel_e energy_type)
Set type of energy output on CF1 pin.
Definition ade9153a.c:3082
int ade9153a_clear_crc_done(struct ade9153a_dev *dev)
Clear CRC done int mask.
Definition ade9153a.c:1457
int ade9153a_clear_cf2_chg(struct ade9153a_dev *dev)
Clear CF2 polarity change int mask.
Definition ade9153a.c:1697
int ade9153a_cf2dis(struct ade9153a_dev *dev)
CF2 output disable.
Definition ade9153a.c:3020
int ade9153a_disable_fvarnl_int(struct ade9153a_dev *dev)
Disable fundamental reactive energy no load condition interrupt.
Definition ade9153a.c:2149
int ade9153a_cf1_lt_status(struct ade9153a_dev *dev, uint8_t *status)
CF1_LT status.
Definition ade9153a.c:2739
int ade9153a_noload_tmr(struct ade9153a_dev *dev, enum ade9153a_noload_tmr_e noload_samples)
Set no. of samples for no load condition.
Definition ade9153a.c:3496
int ade9153a_rms_oc_src_adc_samples_enable(struct ade9153a_dev *dev)
Use ADC samples, before the high-pass filter for the RMS_OC calculation.
Definition ade9153a.c:730
int ade9153a_rms_oc_src_x_wav_enable(struct ade9153a_dev *dev)
Use x_WAV waveforms after the high-pass filter and phase compensation for the RMS_OC calculation.
Definition ade9153a.c:712
int ade9153a_disable_zxtoav_int(struct ade9153a_dev *dev)
Disable zero corssing timeout on voltage ch interrupt.
Definition ade9153a.c:2037
int ade9153a_enable_cf1_int(struct ade9153a_dev *dev)
Enable CF1 interrupt.
Definition ade9153a.c:2387
int ade9153a_stop(struct ade9153a_dev *dev)
Stop measurements.
Definition ade9153a.c:3741
int ade9153a_write(struct ade9153a_dev *dev, uint16_t reg_addr, uint32_t reg_data)
Write device register.
Definition ade9153a.c:438
int ade9153a_get_crc_chg(struct ade9153a_dev *dev, uint8_t *status)
Get CRC change indicator.
Definition ade9153a.c:1092
int ade9153a_clear_ms_stat(struct ade9153a_dev *dev, uint32_t *reg_val)
Clear MS status int.
Definition ade9153a.c:1824
int ade9153a_half_rms_vals(struct ade9153a_dev *dev, struct ade9153a_half_rms_values *data)
Read half rms values.
Definition ade9153a.c:4202
int ade9153a_disable_cf2_int(struct ade9153a_dev *dev)
Disable CF2 interrupt.
Definition ade9153a.c:2373
int ade9153a_dip_swell_irq_mode(struct ade9153a_dev *dev, enum dip_swell_irq_mode_en mode)
Dip swell interrupt mode.
Definition ade9153a.c:2896
int ade9153a_egy_ld_accum(struct ade9153a_dev *dev, uint8_t en)
Internal energy register accum.
Definition ade9153a.c:3563
int ade9153a_oi_lvl_val(struct ade9153a_dev *dev, uint32_t *val)
Overcurrent detection threshold level val.
Definition ade9153a.c:2528
int ade9153a_disable_crc_chg_int(struct ade9153a_dev *dev)
Disable crc change interrupt.
Definition ade9153a.c:1981
int ade9153a_wr_unlock(struct ade9153a_dev *dev)
Unlock device.
Definition ade9153a.c:617
int ade9153a_disable_pf_rdy_int(struct ade9153a_dev *dev)
Disable pf ready interrupt.
Definition ade9153a.c:1953
int ade9153a_clear_wattnl(struct ade9153a_dev *dev)
Clear total active energy no load condition int mask.
Definition ade9153a.c:1577
int ade9153a_peak_sel(struct ade9153a_dev *dev, enum ade9153a_peak_sel_e peak_sel)
Select peak detection channels.
Definition ade9153a.c:3240
int ade9153a_cf1dis(struct ade9153a_dev *dev)
CF1 output disable.
Definition ade9153a.c:3034
int ade9153a_cf2sign_status(struct ade9153a_dev *dev, uint8_t *status)
Sign of CF2 power.
Definition ade9153a.c:3321
int ade9153a_varacc(struct ade9153a_dev *dev, enum ade9153a_accmode_e varacc_type)
Select fundamental reactive power accumulation mode.
Definition ade9153a.c:3168
int ade9153a_enable_crc_chg_int(struct ade9153a_dev *dev)
Enable crc change interrupt.
Definition ade9153a.c:1967
int ade9153a_cf2sel(struct ade9153a_dev *dev, enum ade9153a_cf2sel_e energy_type)
Set type of energy output on CF2 pin.
Definition ade9153a.c:3049
int ade9153a_temp_time(struct ade9153a_dev *dev, enum ade9153a_temp_time_e temp_no_samples)
Select the number of temperature readings to average.
Definition ade9153a.c:3651
int ade9153a_dipa_val(struct ade9153a_dev *dev, uint32_t *val)
Voltage value during dip condition.
Definition ade9153a.c:2628
int ade9153a_start_autocal_bi(struct ade9153a_dev *dev, enum ade9153a_acalmode_e mode)
Start autocalibration BI channel.
Definition ade9153a.c:4306
int ade9153a_oia_val(struct ade9153a_dev *dev, uint32_t *val)
Ch A overcurrent val.
Definition ade9153a.c:2553
int ade9153a_clear_crc_chg(struct ade9153a_dev *dev)
Clear CRC change int mask.
Definition ade9153a.c:1442
int ade9153a_dready_oe(struct ade9153a_dev *dev)
DREADY driven to CF2 pin.
Definition ade9153a.c:3006
int ade9153a_temp_result(struct ade9153a_dev *dev, uint16_t *val)
Temperature result.
Definition ade9153a.c:3687
int ade9153a_temp_val(struct ade9153a_dev *dev, struct ade9153a_temperature_value *data)
Temperature value in deg C.
Definition ade9153a.c:4018
int ade9153a_pwr_settle_set(struct ade9153a_dev *dev, enum ade9153a_pwr_settle_e time)
Set PWR_SETTLE.
Definition ade9153a.c:2943
int ade9153a_get_dready(struct ade9153a_dev *dev, uint8_t *status)
Get new waveform samples ready indicator.
Definition ade9153a.c:1300
int ade9153a_enable_fvarnl_int(struct ade9153a_dev *dev)
Enable fundamental reactive energy no load condition interrupt.
Definition ade9153a.c:2135
int ade9153a_get_cf1(struct ade9153a_dev *dev, uint8_t *status)
Get CF1 pulse issued indicator.
Definition ade9153a.c:1348
ade9153a_chip_stat_err_e
ADE9153A chip status errors.
Definition ade9153a.h:613
@ ADE9153A_ERROR0
Definition ade9153a.h:615
@ ADE9153A_UART_ERROR2
Definition ade9153a.h:627
@ ADE9153A_UART_ERROR0
Definition ade9153a.h:623
@ ADE9153A_UART_RESET
Definition ade9153a.h:629
@ ADE9153A_ERROR2
Definition ade9153a.h:619
@ ADE9153A_UART_ERROR1
Definition ade9153a.h:625
@ ADE9153A_ERROR3
Definition ade9153a.h:621
@ ADE9153A_ERROR1
Definition ade9153a.h:617
int ade9153a_msure_status(struct ade9153a_dev *dev, uint8_t *status)
mSure status
Definition ade9153a.c:938
int ade9153a_get_rms_oc_rdy(struct ade9153a_dev *dev, uint8_t *status)
Get RMS_OC values update indicator.
Definition ade9153a.c:1268
int ade9153a_cf_acc_clr(struct ade9153a_dev *dev)
Clear accumulation in the digital freq conv.
Definition ade9153a.c:2978
int ade9153a_disable_event_stat_int(struct ade9153a_dev *dev)
Disable EVENT_STAT interrupt.
Definition ade9153a.c:1897
int ade9153a_cf_ltmr_val(struct ade9153a_dev *dev, uint32_t *val)
cf_ltmr read value.
Definition ade9153a.c:2781
int ade9153a_clear_rstdone(struct ade9153a_dev *dev)
Clear reset done int mask.
Definition ade9153a.c:1532
int ade9153a_clear_zxai(struct ade9153a_dev *dev)
Clear zero crossing detect on I ch A int mask.
Definition ade9153a.c:1502
int ade9153a_swella_val(struct ade9153a_dev *dev, uint32_t *val)
Voltage value during swell condition.
Definition ade9153a.c:2653
int ade9153a_enable_cf2_int(struct ade9153a_dev *dev)
Enable CF2 interrupt.
Definition ade9153a.c:2359
int ade9153a_read_autocal_vals(struct ade9153a_dev *dev, struct ade9153a_autocal_vals *data)
Read autocalibration values.
Definition ade9153a.c:4370
int ade9153a_lpf_rp_disable(struct ade9153a_dev *dev)
Disable the low pass filter in the fundamental reactive power datapath.
Definition ade9153a.c:659
int ade9153a_hpf_disable(struct ade9153a_dev *dev)
Disable hpf for all channels.
Definition ade9153a.c:798
int ade9153a_get_rstdone(struct ade9153a_dev *dev, uint8_t *status)
Get reset done indicator.
Definition ade9153a.c:1188
int ade9153a_oia_en(struct ade9153a_dev *dev)
Ch A overcurretn detection enable.
Definition ade9153a.c:3292
int ade9153a_cf1sign_status(struct ade9153a_dev *dev, uint8_t *status)
Sign of CF1 power.
Definition ade9153a.c:3348
int ade9153a_compmode(struct ade9153a_dev *dev)
COMPMODE.
Definition ade9153a.c:3711
int ade9153a_diszxlpf(struct ade9153a_dev *dev)
Zero crossing lpf disable.
Definition ade9153a.c:3306
int ade9153a_disable_vanl_int(struct ade9153a_dev *dev)
Disable total apparent energy no load condition interrupt.
Definition ade9153a.c:2177
int ade9153a_enable_pwrrdy_int(struct ade9153a_dev *dev)
Enable PWRRDY interrupt.
Definition ade9153a.c:2275
int ade9153a_get_chip_stat(struct ade9153a_dev *dev, uint8_t *status)
Get chip status indicator.
Definition ade9153a.c:1754
ade9153a_hpf_crn_e
ADE9153A Hpf crn high pass filter corner freq.
Definition ade9153a.h:532
@ ADE9153A_HPF_CORNER_1_2475_HZ
Definition ade9153a.h:545
@ ADE9153A_HPF_CORNER_9_895_HZ
Definition ade9153a.h:539
@ ADE9153A_HPF_CORNER_38_695_HZ
Definition ade9153a.h:535
@ ADE9153A_HPF_CORNER_0_625_HZ
Definition ade9153a.h:547
@ ADE9153A_HPF_CORNER_4_9675_HZ
Definition ade9153a.h:541
@ ADE9153A_HPF_CORNER_0_3125_HZ
Definition ade9153a.h:549
@ ADE9153A_HPF_CORNER_19_6375_HZ
Definition ade9153a.h:537
@ ADE9153A_HPF_CORNER_2_49_HZ
Definition ade9153a.h:543
int ade9153a_clear_zxbi(struct ade9153a_dev *dev)
Clear zero crossing detect on I ch B int mask.
Definition ade9153a.c:1487
int ade9153a_get_egyrdy(struct ade9153a_dev *dev, uint8_t *status)
Get power values egy ready indicator.
Definition ade9153a.c:1316
int ade9153a_enable_revpcf1_int(struct ade9153a_dev *dev)
Enable CF1 polarity change sign interrupt.
Definition ade9153a.c:2443
int ade9153a_clear_zxav(struct ade9153a_dev *dev)
Clear zero crossing detect on V ch int mask.
Definition ade9153a.c:1517
int ade9153a_enable_revapa_int(struct ade9153a_dev *dev)
Enable Phase A total active power changed sign interrupt.
Definition ade9153a.c:2499
int ade9153a_control_interrupt(struct ade9153a_dev *dev, uint16_t reg_addr, uint32_t int_msk, uint8_t en)
Enable/disable interrupt.
Definition ade9153a.c:1840
int ade9153a_ms_timeout(struct ade9153a_dev *dev, uint8_t *status)
mSure timed out (600s)
Definition ade9153a.c:3888
int ade9153a_vnoma_enable(struct ade9153a_dev *dev)
Use the nominal phase voltage rms, VNOM, in the computation of the Phase A total apparent power.
Definition ade9153a.c:694
int ade9153a_get_int_status(struct ade9153a_dev *dev, uint32_t msk, uint8_t *status)
Get interrupt indicator from STATUS register.
Definition ade9153a.c:1049
int ade9153a_zx_src_after_hpf_enable(struct ade9153a_dev *dev)
ZX data source after hpf and phase compensation.
Definition ade9153a.c:747
int ade9153a_disable_zxav_int(struct ade9153a_dev *dev)
Disable zero corssing detected on V ch interrupt.
Definition ade9153a.c:2121
int ade9153a_cf_ltmr_write(struct ade9153a_dev *dev, uint32_t reg_data)
cf_ltmr write value.
Definition ade9153a.c:2766
ade9153a_bi_gain_e
ADE9153A Bi Gain.
Definition ade9153a.h:414
@ ADE9153A_PGA_CHB_GAIN_4
Definition ade9153a.h:421
@ ADE9153A_PGA_CHB_GAIN_1
Definition ade9153a.h:417
@ ADE9153A_PGA_CHB_GAIN_2
Definition ade9153a.h:419
int ade9153a_freq_s_status(struct ade9153a_dev *dev, uint8_t *status)
Frequency setting.
Definition ade9153a.c:3141
int ade9153a_get_cf1_chg(struct ade9153a_dev *dev, uint8_t *status)
Get CF1 polarity change indicator.
Definition ade9153a.c:1380
int ade9153a_temp_en(struct ade9153a_dev *dev)
Enable the temperature sensor.
Definition ade9153a.c:3636
int ade9153a_get_zxai(struct ade9153a_dev *dev, uint8_t *status)
Get zero crossing detect on I ch A indicator.
Definition ade9153a.c:1156
int ade9153a_wattacc(struct ade9153a_dev *dev, enum ade9153a_accmode_e wattacc_type)
Select Total active power accumulation mode.
Definition ade9153a.c:3204
int ade9153a_enable_chip_stat_int(struct ade9153a_dev *dev)
Enable an interrupt when any bit in CHIP_STATUS reg is set.
Definition ade9153a.c:1855
int ade9153a_vlevel_val(struct ade9153a_dev *dev, uint32_t *val)
Vlevel val.
Definition ade9153a.c:2603
int ade9153a_i_ch_b_int_enable(struct ade9153a_dev *dev)
Current channel B integrator enable.
Definition ade9153a.c:781
int ade9153a_awsign_status(struct ade9153a_dev *dev, uint8_t *status)
Sign of active power.
Definition ade9153a.c:3402
int ade9153a_init(struct ade9153a_dev **device, struct ade9153a_init_param init_param)
Initialize the device.
Definition ade9153a.c:150
int ade9153a_hw_reset(struct ade9153a_dev *dev)
Reset the device using HW reset.
Definition ade9153a.c:571
int ade9153a_zx_src_before_hpf_enable(struct ade9153a_dev *dev)
ZX data source before hpf and phase compensation.
Definition ade9153a.c:764
int ade9153a_disable_zxbi_int(struct ade9153a_dev *dev)
Disable zero corssing detected on I ch B interrupt.
Definition ade9153a.c:2065
int ade9153a_ip_phase(struct ade9153a_dev *dev, uint8_t *ch)
Ipeak channel phase.
Definition ade9153a.c:965
int ade9153a_ext_ref(struct ade9153a_dev *dev, uint8_t en)
External voltage reference enable/disable.
Definition ade9153a.c:2857
int ade9153a_get_phnoload_status(struct ade9153a_dev *dev, uint8_t *status)
Get phnoload status.
Definition ade9153a.c:2678
int ade9153a_get_pwrrdy(struct ade9153a_dev *dev, uint8_t *status)
Get power values registers update indicator.
Definition ade9153a.c:1284
int ade9153a_enable_wattnl_int(struct ade9153a_dev *dev)
Enable total active energy no load condition interrupt.
Definition ade9153a.c:2191
int ade9153a_get_wattnl(struct ade9153a_dev *dev, uint8_t *status)
Get total active energy no load condition indicator.
Definition ade9153a.c:1236
int ade9153a_disable_chip_stat_int(struct ade9153a_dev *dev)
Disable CHIP_STAT interrupt.
Definition ade9153a.c:1869
int ade9153a_clear_egyrdy(struct ade9153a_dev *dev)
Clear power values egy ready int mask.
Definition ade9153a.c:1652
int ade9153a_enable_egyrdy_int(struct ade9153a_dev *dev)
Enable EGYRDY interrupt.
Definition ade9153a.c:2331
int ade9153a_ms_sysrdy(struct ade9153a_dev *dev, uint8_t *status)
New run of mSure ready.
Definition ade9153a.c:3807
int ade9153a_clear_dready(struct ade9153a_dev *dev)
Clear new waveform samples ready int mask.
Definition ade9153a.c:1637
int ade9153a_enable_rms_oc_rdy_int(struct ade9153a_dev *dev)
Enable RMS_OC values update interrupt.
Definition ade9153a.c:2247
int ade9153a_disable_revpcf1_int(struct ade9153a_dev *dev)
Disable CF1 polarity change sign interrupt.
Definition ade9153a.c:2457
int ade9153a_rd_rst_en(struct ade9153a_dev *dev)
Energy register read with value reset.
Definition ade9153a.c:3547
int ade9153a_clear_cf2(struct ade9153a_dev *dev)
Clear CF2 pulse issued int mask.
Definition ade9153a.c:1667
int ade9153a_clear_pwrrdy(struct ade9153a_dev *dev)
Clear power values registers update int mask.
Definition ade9153a.c:1622
int ade9153a_disable_revrpa_int(struct ade9153a_dev *dev)
Disable Phase A fundamental reactive power changed sign interrupt.
Definition ade9153a.c:2485
int ade9153a_bi_pgagain_set(struct ade9153a_dev *dev, enum ade9153a_bi_gain_e gain)
Set PGA gain for current channel B.
Definition ade9153a.c:816
int ade9153a_disable_zxai_int(struct ade9153a_dev *dev)
Disable zero corssing detected on I ch A interrupt.
Definition ade9153a.c:2093
int ade9153a_ms_ready(struct ade9153a_dev *dev, uint8_t *status)
mSure ready
Definition ade9153a.c:3915
int ade9153a_disable_revpcf2_int(struct ade9153a_dev *dev)
Disable CF2 polarity change sign interrupt.
Definition ade9153a.c:2429
int ade9153a_get_cf2_chg(struct ade9153a_dev *dev, uint8_t *status)
Get CF2 polarity change indicator.
Definition ade9153a.c:1364
int ade9153a_run(struct ade9153a_dev *dev)
Start measurements.
Definition ade9153a.c:3726
ade9153a_pwr_settle_e
ADE9153A Power settle.
Definition ade9153a.h:463
@ ADE9153A_SETTLE_256_MS
Definition ade9153a.h:472
@ ADE9153A_SETTLE_0_MS
Definition ade9153a.h:474
@ ADE9153A_SETTLE_64_MS
Definition ade9153a.h:468
@ ADE9153A_SETTLE_128_MS
Definition ade9153a.h:470
int ade9153a_auto_calibration_cfg(struct ade9153a_dev *dev, enum ade9153a_acal_ch_e ch, enum ade9153a_acalmode_e mode)
Auto calibration config.
Definition ade9153a.c:845
int ade9153a_lpf_ap_disable(struct ade9153a_dev *dev)
Disable the low-pass filter in the total active power datapath.
Definition ade9153a.c:676
int ade9153a_get_temp_rdy(struct ade9153a_dev *dev, uint8_t *status)
Get new temperature reading ready indicator.
Definition ade9153a.c:1252
int ade9153a_temp_offset_val(struct ade9153a_dev *dev, uint32_t *val)
temperature sensor offset.
Definition ade9153a.c:2806
int ade9153a_get_zxtoav(struct ade9153a_dev *dev, uint8_t *status)
Get zero crossing timout on V ch indicator.
Definition ade9153a.c:1124
int ade9153a_clear_zxtoav(struct ade9153a_dev *dev)
Clear zero crossing timout on V ch int mask.
Definition ade9153a.c:1472
int ade9153a_ai_gain(struct ade9153a_dev *dev, enum ade9153a_ai_gain_e gain)
Set the PGA gain for I chA.
Definition ade9153a.c:3772
int ade9153a_ms_shift(struct ade9153a_dev *dev, uint8_t *status)
mSure shift detected in CC val
Definition ade9153a.c:3942
ade9153a_acalmode_e
select power mode for ch B, ch A
Definition ade9153a.h:441
@ TURBO
Definition ade9153a.h:445
@ NORMAL
Definition ade9153a.h:443
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.
Print messages helpers.
Header file of SPI Interface.
Header file of Units.
Header file of utility functions.
ADE9153A temperature value.
Definition ade9153a.h:799
uint32_t avcert_reg_val
Definition ade9153a.h:807
uint32_t aicert_reg_val
Definition ade9153a.h:803
uint32_t avcc_reg_val
Definition ade9153a.h:805
uint32_t aicc_reg_val
Definition ade9153a.h:801
ADE9153A Device structure.
Definition ade9153a.h:701
struct no_os_spi_desc * spi_desc
Definition ade9153a.h:703
struct no_os_irq_ctrl_desc * irq_ctrl
Definition ade9153a.h:715
struct no_os_callback_desc irq_cb
Definition ade9153a.h:717
uint8_t burst_en
Definition ade9153a.h:705
struct no_os_gpio_desc * gpio_ss
Definition ade9153a.h:711
struct no_os_gpio_desc * gpio_reset
Definition ade9153a.h:709
struct no_os_gpio_desc * gpio_sck
Definition ade9153a.h:713
struct no_os_gpio_desc * gpio_rdy
Definition ade9153a.h:707
ADE9153A energy registers values.
Definition ade9153a.h:724
int32_t active_energy_reg_val
Definition ade9153a.h:726
int32_t fundamental_reactive_energy_reg_val
Definition ade9153a.h:728
int32_t apparent_energy_reg_val
Definition ade9153a.h:730
ADE9153A half rms registers values.
Definition ade9153a.h:762
int32_t voltage_h_rms_reg_val
Definition ade9153a.h:766
int32_t current_h_rms_reg_val
Definition ade9153a.h:764
ADE9153a Device initialization parameters.
Definition ade9153a.h:661
enum ade9153a_selfreq_e freq
Definition ade9153a.h:683
uint8_t spi_en
Definition ade9153a.h:673
struct no_os_irq_ctrl_desc * irq_ctrl
Definition ade9153a.h:675
enum ade9153a_ai_gain_e ai_pga_gain
Definition ade9153a.h:679
struct no_os_spi_init_param * gpio_sck
Definition ade9153a.h:671
uint32_t vlevel
Definition ade9153a.h:685
struct no_os_gpio_init_param * gpio_reset
Definition ade9153a.h:667
struct no_os_spi_init_param * gpio_ss
Definition ade9153a.h:669
uint32_t no_samples
Definition ade9153a.h:689
uint8_t ai_swap
Definition ade9153a.h:677
uint32_t ai_gain
Definition ade9153a.h:691
struct no_os_gpio_init_param * gpio_rdy
Definition ade9153a.h:665
void(* drdy_callback)(void *context)
Definition ade9153a.h:694
struct no_os_spi_init_param * spi_init
Definition ade9153a.h:663
uint32_t rsmall
Definition ade9153a.h:687
enum ade9153a_hpf_crn_e hpf_crn
Definition ade9153a.h:681
ADE9153A power registers values.
Definition ade9153a.h:737
int32_t active_power_reg_val
Definition ade9153a.h:739
int32_t apparent_power_reg_val
Definition ade9153a.h:743
int32_t fundamental_reactive_power_reg_val
Definition ade9153a.h:741
ADE9153A power quality registers values.
Definition ade9153a.h:773
int32_t period_reg_val
Definition ade9153a.h:777
int32_t power_factor_reg_val
Definition ade9153a.h:775
int32_t angle_ai_av_reg_val
Definition ade9153a.h:779
ADE9153A rms registers values.
Definition ade9153a.h:750
int32_t current_rms_reg_val
Definition ade9153a.h:752
int32_t voltage_rms_reg_val
Definition ade9153a.h:754
ADE9153A temperature value.
Definition ade9153a.h:786
uint16_t gain_reg_val
Definition ade9153a.h:792
uint16_t offset_reg_val
Definition ade9153a.h:790
int16_t temperature_reg_val
Definition ade9153a.h:788
Definition ad9361_util.h:63
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
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