1014 lines
36 KiB
C
Executable File
1014 lines
36 KiB
C
Executable File
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef _IOT_EM_EXT_CHIP_ATT_H_
|
|
#define _IOT_EM_EXT_CHIP_ATT_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "iot_em_ext_api.h"
|
|
#include "iot_utils_api.h"
|
|
#include "iot_cal_data.h"
|
|
|
|
/* ATT7022 chip address. start */
|
|
/* invalid address */
|
|
#define IOT_EM_EXT_ATT_INVALID_ADDR 0xFF
|
|
|
|
#define IOT_EM_EXT_ATT_MEAS_DATA_MASK 0xFFFFFF
|
|
|
|
/* measurement address. start */
|
|
/* chip deviece id address */
|
|
#define IOT_EM_EXT_ATT_DEV_ID_MADDR 0x00
|
|
#define IOT_EM_EXT_ATT_DEV_ID 0x7122A0
|
|
|
|
/* active power phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_P_P_A_MADDR 0x01
|
|
|
|
/* active power phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_P_P_B_MADDR 0x02
|
|
|
|
/* active power phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_P_P_C_MADDR 0x03
|
|
|
|
/* active power phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_P_P_ALL_MADDR 0x04
|
|
|
|
/* reactive power phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_P_Q_A_MADDR 0x05
|
|
|
|
/* reactive power phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_P_Q_B_MADDR 0x06
|
|
|
|
/* reactive power phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_P_Q_C_MADDR 0x07
|
|
|
|
/* reactive power phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_P_Q_ALL_MADDR 0x08
|
|
|
|
/* apparent power phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_P_S_A_MADDR 0x09
|
|
|
|
/* apparent power phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_P_S_B_MADDR 0x0A
|
|
|
|
/* apparent power phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_P_S_C_MADDR 0x0B
|
|
|
|
/* apparent power phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_P_S_ALL_MADDR 0x0C
|
|
|
|
/* active voltage phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_U_RMS_A_MADDR 0x0D
|
|
|
|
/* active voltage phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_U_RMS_B_MADDR 0x0E
|
|
|
|
/* active voltage phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_U_RMS_C_MADDR 0x0F
|
|
|
|
/* active current phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_I_RMS_A_MADDR 0x10
|
|
|
|
/* active current phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_I_RMS_B_MADDR 0x11
|
|
|
|
/* active current phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_I_RMS_C_MADDR 0x12
|
|
|
|
/* active current phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_I_RMS_ALL_MADDR 0x13
|
|
|
|
/* power factor phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_P_FACTOR_A_MADDR 0x14
|
|
|
|
/* power factor phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_P_FACTOR_B_MADDR 0x15
|
|
|
|
/* power factor phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_P_FACTOR_C_MADDR 0x16
|
|
|
|
/* power factor phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_P_FACTOR_ALL_MADDR 0x17
|
|
|
|
/* power angle(U - I) phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_ANGLE_UI_A_MADDR 0x18
|
|
|
|
/* power angle(U - I) phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_ANGLE_UI_B_MADDR 0x19
|
|
|
|
/* power angle(U - I) phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_ANGLE_UI_C_MADDR 0x1A
|
|
|
|
/* interrupt flag measurement address */
|
|
#define IOT_EM_EXT_ATT_INTR_FLAG_MADDR 0x1B
|
|
|
|
/* line frequency measurement address */
|
|
#define IOT_EM_EXT_ATT_LINE_FREQ_MADDR 0x1C
|
|
|
|
/* energy flag measurement address */
|
|
#define IOT_EM_EXT_ATT_E_FLAG_MADDR 0x1D
|
|
|
|
/* active energy phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_E_P_A_MADDR 0x1E
|
|
|
|
/* active energy phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_E_P_B_MADDR 0x1F
|
|
|
|
/* active energy phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_E_P_C_MADDR 0x20
|
|
|
|
/* active energy phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_E_P_ALL_MADDR 0x21
|
|
|
|
/* reactive energy phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_E_Q_A_MADDR 0x22
|
|
|
|
/* reactive energy phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_E_Q_B_MADDR 0x23
|
|
|
|
/* reactive energy phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_E_Q_C_MADDR 0x24
|
|
|
|
/* reactive energy phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_E_Q_ALL_MADDR 0x25
|
|
|
|
/* angle phase A and phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_ANGLE_UAB_MADDR 0x26
|
|
|
|
/* angle phase A and phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_ANGLE_UAC_MADDR 0x27
|
|
|
|
/* angle phase B and phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_ANGLE_UBC_MADDR 0x28
|
|
|
|
/* N-line current measurement address */
|
|
#define IOT_EM_EXT_ATT_I_N_MADDR 0x29
|
|
|
|
/* temperature measurement address */
|
|
#define IOT_EM_EXT_ATT_TPSD_MADDR 0x2A
|
|
|
|
/* active voltage phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_U_RMS_ALL_MADDR 0x2B
|
|
|
|
/* status measurement address */
|
|
#define IOT_EM_EXT_ATT_STATUS_MADDR 0x2C
|
|
|
|
/* communication data backup measurement address */
|
|
#define IOT_EM_EXT_ATT_COMM_BACKUP_MADDR 0x2D
|
|
|
|
/* communication data checksum measurement address */
|
|
#define IOT_EM_EXT_ATT_COMM_CHKSUM_MADDR 0x2E
|
|
|
|
/* current sample phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_I_SAMPLE_A_MADDR 0x2F
|
|
|
|
/* current sample phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_I_SAMPLE_B_MADDR 0x30
|
|
|
|
/* current sample phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_I_SAMPLE_C_MADDR 0x31
|
|
|
|
/* voltage sample phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_U_SAMPLE_A_MADDR 0x32
|
|
|
|
/* voltage sample phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_U_SAMPLE_B_MADDR 0x33
|
|
|
|
/* voltage sample phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_U_SAMPLE_C_MADDR 0x34
|
|
|
|
/* apparent energy phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_E_S_A_MADDR 0x35
|
|
|
|
/* apparent energy phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_E_S_B_MADDR 0x36
|
|
|
|
/* apparent energy phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_E_S_C_MADDR 0x37
|
|
|
|
/* apparent energy phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_E_S_ALL_MADDR 0x38
|
|
|
|
/* fast count phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_FSTCNT_A_MADDR 0x39
|
|
|
|
/* fast count phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_FSTCNT_B_MADDR 0x3A
|
|
|
|
/* fast count phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_FSTCNT_C_MADDR 0x3B
|
|
|
|
/* fast count phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_FSTCNT_ALL_MADDR 0x3C
|
|
|
|
/* power sign measurement address */
|
|
#define IOT_EM_EXT_ATT_P_SIGN_MADDR 0x3D
|
|
#define IOT_EM_EXT_ATT_P_SIGN_P_A_MASK 0x01
|
|
#define IOT_EM_EXT_ATT_P_SIGN_P_A_OFFSET 0
|
|
#define IOT_EM_EXT_ATT_P_SIGN_P_B_MASK 0x02
|
|
#define IOT_EM_EXT_ATT_P_SIGN_P_B_OFFSET 1
|
|
#define IOT_EM_EXT_ATT_P_SIGN_P_C_MASK 0x04
|
|
#define IOT_EM_EXT_ATT_P_SIGN_P_C_OFFSET 2
|
|
#define IOT_EM_EXT_ATT_P_SIGN_P_ALL_MASK 0x08
|
|
#define IOT_EM_EXT_ATT_P_SIGN_P_ALL_OFFSET 3
|
|
#define IOT_EM_EXT_ATT_P_SIGN_Q_A_MASK 0x10
|
|
#define IOT_EM_EXT_ATT_P_SIGN_Q_A_OFFSET 4
|
|
#define IOT_EM_EXT_ATT_P_SIGN_Q_B_MASK 0x20
|
|
#define IOT_EM_EXT_ATT_P_SIGN_Q_B_OFFSET 5
|
|
#define IOT_EM_EXT_ATT_P_SIGN_Q_C_MASK 0x40
|
|
#define IOT_EM_EXT_ATT_P_SIGN_Q_C_OFFSET 6
|
|
#define IOT_EM_EXT_ATT_P_SIGN_Q_ALL_MASK 0x80
|
|
#define IOT_EM_EXT_ATT_P_SIGN_Q_ALL_OFFSET 7
|
|
|
|
/* active/reactive power direction measurement address */
|
|
#define IOT_EM_EXT_ATT_P_DIRECTION_ALL_MADDR 0x3E
|
|
|
|
/* current sample N-line measurement address */
|
|
#define IOT_EM_EXT_ATT_I_SAMPLE_N_MADDR 0x3F
|
|
|
|
/* line active power phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_P_LINE_P_A_MADDR 0x40
|
|
|
|
/* line active power phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_P_LINE_P_B_MADDR 0x41
|
|
|
|
/* line active power phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_P_LINE_P_C_MADDR 0x42
|
|
|
|
/* line active power phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_P_LINE_P_ALL_MADDR 0x43
|
|
|
|
/* line active energy phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_E_LINE_P_A_MADDR 0x44
|
|
|
|
/* line active energy phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_E_LINE_P_B_MADDR 0x45
|
|
|
|
/* line active energy phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_E_LINE_P_C_MADDR 0x46
|
|
|
|
/* line active energy phase All measurement address */
|
|
#define IOT_EM_EXT_ATT_E_LINE_P_ALL_MADDR 0x47
|
|
|
|
/* line active voltage phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_U_LINE_RMS_A_MADDR 0x48
|
|
|
|
/* line active voltage phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_U_LINE_RMS_B_MADDR 0x49
|
|
|
|
/* line active voltage phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_U_LINE_RMS_C_MADDR 0x4A
|
|
|
|
/* line active current phase A measurement address */
|
|
#define IOT_EM_EXT_ATT_I_LINE_RMS_A_MADDR 0x4B
|
|
|
|
/* line active current phase B measurement address */
|
|
#define IOT_EM_EXT_ATT_I_LINE_RMS_B_MADDR 0x4C
|
|
|
|
/* line active current phase C measurement address */
|
|
#define IOT_EM_EXT_ATT_I_LINE_RMS_C_MADDR 0x4D
|
|
|
|
/* line energy status measurement address */
|
|
#define IOT_EM_EXT_ATT_E_LINE_STATUS_MADDR 0x4E
|
|
|
|
/* wave buffer length measurement address */
|
|
#define IOT_EM_EXT_ATT_WAVE_LEN_MADDR 0x7E
|
|
|
|
/* wave buffer read idx measurement address */
|
|
#define IOT_EM_EXT_ATT_WAVE_RIDX_MADDR 0x7F
|
|
|
|
#define IOT_EM_EXT_ATT_MEAS_ADDR_START 0x00
|
|
#define IOT_EM_EXT_ATT_MEAS_ADDR_END 0x7F
|
|
/* measurement address. end */
|
|
|
|
/* write to calibration address data mask */
|
|
#define IOT_EM_EXT_ATT_CALI_DATA_MASK 0xFFFF
|
|
|
|
/* calibration address. start */
|
|
/* calibration start address. */
|
|
#define IOT_EM_EXT_ATT_START_CADDR 0x00
|
|
/* calibration start address default value */
|
|
#define IOT_EM_EXT_ATT_CALI_START_KEY 0xAAAA
|
|
|
|
/* mode contrl calibration address */
|
|
#define IOT_EM_EXT_ATT_MODE_CFG_CADDR 0x01
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_I_N_MASK 0x01
|
|
#define IOT_EM_EXT_ATT_MODE_I_N_OFFSET 0
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_I_A_MASK 0x02
|
|
#define IOT_EM_EXT_ATT_MODE_I_A_OFFSET 1
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_U_A_MASK 0x04
|
|
#define IOT_EM_EXT_ATT_MODE_U_A_OFFSET 2
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_I_B_MASK 0x08
|
|
#define IOT_EM_EXT_ATT_MODE_I_B_OFFSET 3
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_U_B_MASK 0x10
|
|
#define IOT_EM_EXT_ATT_MODE_U_B_OFFSET 4
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_I_C_MASK 0x20
|
|
#define IOT_EM_EXT_ATT_MODE_I_C_OFFSET 5
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_U_C_MASK 0x40
|
|
#define IOT_EM_EXT_ATT_MODE_U_C_OFFSET 6
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_ADC_CHOP_MASK 0x80
|
|
#define IOT_EM_EXT_ATT_MODE_ADC_CHOP_OFFSET 7
|
|
|
|
/* SampleR 1/0, choise femu frequnce. */
|
|
/* 00b: 1.8432MHz, 01b: 921.6kHz, 1Xb: 460.8kHz */
|
|
#define IOT_EM_EXT_ATT_MODE_FEMU_1842K 0x00
|
|
#define IOT_EM_EXT_ATT_MODE_FEMU_921K 0x01
|
|
#define IOT_EM_EXT_ATT_MODE_FEMU_460K 0x02
|
|
#define IOT_EM_EXT_ATT_MODE_FEMU_MASK 0x300
|
|
#define IOT_EM_EXT_ATT_MODE_FEMU_OFFSET 8
|
|
|
|
/* CIB_ADC1/0, choise femu frequnce. */
|
|
/* 00b/01b: 5uA, 10b: 7.5uA, 11b: 10uA */
|
|
#define IOT_EM_EXT_ATT_MODE_IREF_5UA 0x00
|
|
#define IOT_EM_EXT_ATT_MODE_IREF_7_5UA 0x02
|
|
#define IOT_EM_EXT_ATT_MODE_IREF_10UA 0x03
|
|
#define IOT_EM_EXT_ATT_MODE_IREF_MASK 0xC00
|
|
#define IOT_EM_EXT_ATT_MODE_IREF_OFFSET 10
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_SPD_SLOW 0x01
|
|
#define IOT_EM_EXT_ATT_MODE_SPD_FAST 0x00
|
|
#define IOT_EM_EXT_ATT_MODE_SPD_MASK 0x1000
|
|
#define IOT_EM_EXT_ATT_MODE_SPD_OFFSET 12
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_TIME_SLOW 0x01
|
|
#define IOT_EM_EXT_ATT_MODE_TIME_FAST 0x00
|
|
#define IOT_EM_EXT_ATT_MODE_TIME_MASK 0x2000
|
|
#define IOT_EM_EXT_ATT_MODE_TIME_OFFSET 13
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_UB_SRC_MASK 0x4000
|
|
#define IOT_EM_EXT_ATT_MODE_UB_SRC_OFFSET 14
|
|
|
|
#define IOT_EM_EXT_ATT_MODE_REF_CHOP_MASK 0x8000
|
|
#define IOT_EM_EXT_ATT_MODE_REF_CHOP_OFFSET 15
|
|
|
|
/* ADC gain calibration address */
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_CADDR 0x02
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_1 0x00
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_2 0x01
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_8 0x02
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_16 0x03
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_N_MASK 0x03
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_N_OFFSET 0
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_A_MASK 0x0C
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_A_OFFSET 2
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_B_MASK 0x30
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_B_OFFSET 4
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_C_MASK 0xC0
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_C_OFFSET 6
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_ALL_MASK 0x300
|
|
#define IOT_EM_EXT_ATT_ADC_GAIN_ALL_OFFSET 8
|
|
|
|
/* EMU calibration address */
|
|
#define IOT_EM_EXT_ATT_EMU_CADDR 0x03
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_FS_BASE_14_4KHZ 0x04
|
|
#define IOT_EM_EXT_ATT_EMU_FS_BASE_7_2KHZ 0x03
|
|
#define IOT_EM_EXT_ATT_EMU_FS_BASE_3_6KHZ 0x02
|
|
#define IOT_EM_EXT_ATT_EMU_FS_BASE_1_8KHZ 0x01
|
|
#define IOT_EM_EXT_ATT_EMU_FS_BASE_0_9KHZ 0x00
|
|
#define IOT_EM_EXT_ATT_EMU_FS_MASK 0x07
|
|
#define IOT_EM_EXT_ATT_EMU_FS_OFFSET 0
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_MEAS_RMS 0x01
|
|
#define IOT_EM_EXT_ATT_EMU_MEAS_PQS 0x00
|
|
#define IOT_EM_EXT_ATT_EMU_MEAS_MASK 0x08
|
|
#define IOT_EM_EXT_ATT_EMU_MEAS_OFFSET 3
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_ZC_RISE 0x00
|
|
#define IOT_EM_EXT_ATT_EMU_ZC_FALL 0x01
|
|
#define IOT_EM_EXT_ATT_EMU_ZC_ALL 0x02
|
|
#define IOT_EM_EXT_ATT_EMU_ZC_MASK 0x30
|
|
#define IOT_EM_EXT_ATT_EMU_ZC_OFFSET 4
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_SUM_MODE0 0x00
|
|
#define IOT_EM_EXT_ATT_EMU_SUM_MODE1 0x01
|
|
#define IOT_EM_EXT_ATT_EMU_SUM_MASK 0x40
|
|
#define IOT_EM_EXT_ATT_EMU_SUM_OFFSET 6
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_E_SAVE_TOTAL 0x00
|
|
#define IOT_EM_EXT_ATT_EMU_E_SAVE_CLR 0x01
|
|
#define IOT_EM_EXT_ATT_EMU_E_SAVE_MASK 0x80
|
|
#define IOT_EM_EXT_ATT_EMU_E_SAVE_OFFSET 7
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_WAVE_BYPASS 0x00
|
|
#define IOT_EM_EXT_ATT_EMU_WAVE_HIGHPASS 0x01
|
|
#define IOT_EM_EXT_ATT_EMU_WAVE_LINEPASS 0x02
|
|
#define IOT_EM_EXT_ATT_EMU_WAVE_SEL_MASK 0x300
|
|
#define IOT_EM_EXT_ATT_EMU_WAVE_SEL_OFFSET 8
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_LINE_HARM_MASK 0x400
|
|
#define IOT_EM_EXT_ATT_EMU_LINE_HARM_OFFSET 10
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_START_CURRENT 0x00
|
|
#define IOT_EM_EXT_ATT_EMU_START_POWER 0x01
|
|
#define IOT_EM_EXT_ATT_EMU_START_MASK 0x800
|
|
#define IOT_EM_EXT_ATT_EMU_START_OFFSET 11
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_CF1_MASK 0x1000
|
|
#define IOT_EM_EXT_ATT_EMU_CF1_OFFSET 12
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_CF2_MASK 0x2000
|
|
#define IOT_EM_EXT_ATT_EMU_CF2_OFFSET 13
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_CF3_MASK 0x4000
|
|
#define IOT_EM_EXT_ATT_EMU_CF3_OFFSET 14
|
|
|
|
#define IOT_EM_EXT_ATT_EMU_CF4_MASK 0x8000
|
|
#define IOT_EM_EXT_ATT_EMU_CF4_OFFSET 15
|
|
|
|
/* gain for active power phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_P_A_CADDR 0x04
|
|
|
|
/* gain for active power phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_P_B_CADDR 0x05
|
|
|
|
/* gain for active power phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_P_C_CADDR 0x06
|
|
|
|
/* gain for reactive power phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_Q_A_CADDR 0x07
|
|
|
|
/* gain for reactive power phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_Q_B_CADDR 0x08
|
|
|
|
/* gain for reactive power phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_Q_C_CADDR 0x09
|
|
|
|
/* gain for apparent power phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_S_A_CADDR 0x0A
|
|
|
|
/* gain for apparent power phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_S_B_CADDR 0x0B
|
|
|
|
/* gain for apparent power phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_P_S_C_CADDR 0x0C
|
|
|
|
/* phase calibration0 for phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI0_A_CADDR 0x0D
|
|
|
|
/* phase calibration0 for phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI0_B_CADDR 0x0E
|
|
|
|
/* phase calibration0 for phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI0_C_CADDR 0x0F
|
|
|
|
/* phase calibration1 for phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI1_A_CADDR 0x10
|
|
|
|
/* phase calibration1 for phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI1_B_CADDR 0x11
|
|
|
|
/* phase calibration1 for phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI1_C_CADDR 0x12
|
|
|
|
/* offset for active power phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_P_P_OFFSET_A_CADDR 0x13
|
|
|
|
/* offset for active power phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_P_P_OFFSET_B_CADDR 0x14
|
|
|
|
/* offset for active power phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_P_P_OFFSET_C_CADDR 0x15
|
|
|
|
/* phase calibration for reactive power calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI_P_Q_CADDR 0x16
|
|
|
|
/* gain for voltage phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_U_A_CADDR 0x17
|
|
|
|
/* gain for voltage phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_U_B_CADDR 0x18
|
|
|
|
/* gain for voltage phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_U_C_CADDR 0x19
|
|
|
|
/* gain for current phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_I_A_CADDR 0x1A
|
|
|
|
/* gain for current phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_I_B_CADDR 0x1B
|
|
|
|
/* gain for current phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_I_C_CADDR 0x1C
|
|
|
|
/* start current calibration address */
|
|
#define IOT_EM_EXT_ATT_I_START_CADDR 0x1D
|
|
|
|
/* high frequence constant calibration address */
|
|
#define IOT_EM_EXT_ATT_HFCONST_CADDR 0x1E
|
|
|
|
/* voltage fail calibration address */
|
|
#define IOT_EM_EXT_ATT_UFAIL_CADDR 0x1F
|
|
|
|
/* current gain for 7nd calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_ADC7_ADDR 0x20
|
|
|
|
/* offset for reactive power phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_P_Q_OFFSET_A_CADDR 0x21
|
|
|
|
/* offset for reactive power phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_P_Q_OFFSET_B_CADDR 0x22
|
|
|
|
/* offset for reactive power phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_P_Q_OFFSET_C_CADDR 0x23
|
|
|
|
/* offset for active voltage phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_U_RMS_A_CADDR 0x24
|
|
|
|
/* offset for active voltage phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_U_RMS_B_CADDR 0x25
|
|
|
|
/* offset for active voltage phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_U_RMS_C_CADDR 0x26
|
|
|
|
/* offset for active current phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_I_RMS_A_CADDR 0x27
|
|
|
|
/* offset for active current phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_I_RMS_B_CADDR 0x28
|
|
|
|
/* offset for active current phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_I_RMS_C_CADDR 0x29
|
|
|
|
/* offset for voltage channel ADC phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_U_ADC_A_CADDR 0x2A
|
|
|
|
/* offset for voltage channel ADC phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_U_ADC_B_CADDR 0x2B
|
|
|
|
/* offset for voltage channel ADC phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_U_ADC_C_CADDR 0x2C
|
|
|
|
/* offset for current channel ADC phase A calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_I_ADC_A_CADDR 0x2D
|
|
|
|
/* offset for current channel ADC phase B calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_I_ADC_B_CADDR 0x2E
|
|
|
|
/* offset for current channel ADC phase C calibration address */
|
|
#define IOT_EM_EXT_ATT_OFFSET_I_ADC_C_CADDR 0x2F
|
|
|
|
/* EMUIE calibration address */
|
|
#define IOT_EM_EXT_ATT_EMUIE_CADDR 0x30
|
|
|
|
/* analog module config calibration address */
|
|
#define IOT_EM_EXT_ATT_ANALOG_CFG_CADDR 0x31
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_7ST_CH_MASK 0x01
|
|
#define IOT_EM_EXT_ATT_ANA_7ST_CH_OFFSET 0
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_I_CH_MASK 0x02
|
|
#define IOT_EM_EXT_ATT_ANA_I_CH_OFFSET 1
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_U_CH_MASK 0x04
|
|
#define IOT_EM_EXT_ATT_ANA_U_CH_OFFSET 2
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_ROCHE_MASK 0x08
|
|
#define IOT_EM_EXT_ATT_ANA_ROCHE_OFFSET 3
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_TPS_MASK 0x10
|
|
#define IOT_EM_EXT_ATT_ANA_TPS_OFFSET 4
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_BOR_MASK 0x20
|
|
#define IOT_EM_EXT_ATT_ANA_BOR_OFFSET 5
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_INTR_LOW 0x00
|
|
#define IOT_EM_EXT_ATT_ANA_INTR_HIGH 0x01
|
|
#define IOT_EM_EXT_ATT_ANA_INTR_LVL_MASK 0x40
|
|
#define IOT_EM_EXT_ATT_ANA_INTR_LVL_OFFSET 6
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_TPS_SEL_PN 0x00
|
|
#define IOT_EM_EXT_ATT_ANA_TPS_SEL_R 0x01
|
|
#define IOT_EM_EXT_ATT_ANA_TPS_SEL_MASK 0x80
|
|
#define IOT_EM_EXT_ATT_ANA_TPS_SEL_OFFSET 7
|
|
|
|
#define IOT_EM_EXT_ATT_ANA_SPI_SPD_HIGH 0x00
|
|
#define IOT_EM_EXT_ATT_ANA_TPS_SPD_LOW 0x01
|
|
#define IOT_EM_EXT_ATT_ANA_SPI_SPD_MASK 0x800
|
|
#define IOT_EM_EXT_ATT_ANA_SPI_SPD_OFFSET 11
|
|
|
|
/* gain for all channel calibration address */
|
|
#define IOT_EM_EXT_ATT_ACG_CADDR 0x32
|
|
|
|
/* HFConst double calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_HFCNT_CADDR 0x33
|
|
|
|
/* gain for fundamental calibration address */
|
|
#define IOT_EM_EXT_ATT_GAIN_LINE_CADDR 0x34
|
|
|
|
/* pin control calibration address */
|
|
#define IOT_EM_EXT_ATT_PIN_CTL_CADDR 0x35
|
|
|
|
/* start power calibration address */
|
|
#define IOT_EM_EXT_ATT_P_START_CADDR 0x36
|
|
|
|
/* phase iregion calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_IREGION0_CADDR 0x37
|
|
|
|
/* SAG sycle length calibration address */
|
|
#define IOT_EM_EXT_ATT_SAG_CYC_LEN_CADDR 0x38
|
|
|
|
/* SAG level calibration address */
|
|
#define IOT_EM_EXT_ATT_SAG_LVL_CADDR 0x39
|
|
|
|
/* phase iregion calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_IREGION1_CADDR 0x60
|
|
|
|
/* phase calibration2 for phase A/B/C calibration address */
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI2_A_CADDR 0x61
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI2_B_CADDR 0x62
|
|
#define IOT_EM_EXT_ATT_PHASE_CALI2_C_CADDR 0x63
|
|
|
|
/* offset for active power(low 8bit) phase A~C calibration address */
|
|
#define IOT_EM_EXT_ATT_P_P_OFFSET_L_A_CADDR 0x64
|
|
#define IOT_EM_EXT_ATT_P_P_OFFSET_L_B_CADDR 0x65
|
|
#define IOT_EM_EXT_ATT_P_P_OFFSET_L_C_CADDR 0x66
|
|
|
|
/* offset for reactive power(low 8bit) phase A~C calibration address */
|
|
#define IOT_EM_EXT_ATT_P_Q_OFFSET_L_A_CADDR 0x67
|
|
#define IOT_EM_EXT_ATT_P_Q_OFFSET_L_B_CADDR 0x68
|
|
#define IOT_EM_EXT_ATT_P_Q_OFFSET_L_C_CADDR 0x69
|
|
|
|
/* TPS offset calibration address */
|
|
#define IOT_EM_EXT_ATT_TPS_OFFSET_CADDR 0x6B
|
|
|
|
/* offset for three phase current vector sum calibration address */
|
|
#define IOT_EM_EXT_ATT_I_T_RMS_OFFSET_CADDR 0x6A
|
|
|
|
/* TPS gain calibration address */
|
|
#define IOT_EM_EXT_ATT_TPS_GAIN_CADDR 0x6C
|
|
|
|
/* Vref coefficient of compensation gain A calibration address */
|
|
#define IOT_EM_EXT_ATT_TCCOFFA_CADDR 0x6D
|
|
/* att chip + board compensation */
|
|
#define IOT_EM_EXT_ATT_TCCOFFA_CHIP_BOARD 0xFF11
|
|
/* att chip only compensation */
|
|
#define IOT_EM_EXT_ATT_TCCOFFA_CHIP_ONLY 0xFF00
|
|
|
|
/* Vref coefficient of compensation gain B calibration address */
|
|
#define IOT_EM_EXT_ATT_TCCOFFB_CADDR 0x6E
|
|
/* att chip + board compensation */
|
|
#define IOT_EM_EXT_ATT_TCCOFFB_CHIP_BOARD 0x2B53
|
|
/* att chip + board compensation */
|
|
#define IOT_EM_EXT_ATT_TCCOFFB_CHIP_ONLY 0x0DB8
|
|
|
|
/* Vref coefficient of compensation gain C calibration address */
|
|
#define IOT_EM_EXT_ATT_TCCOFFC_CADDR 0x6F
|
|
/* att chip + board compensation */
|
|
#define IOT_EM_EXT_ATT_TCCOFFC_CHIP_BOARD 0xD483
|
|
/* att chip + board compensation */
|
|
#define IOT_EM_EXT_ATT_TCCOFFC_CHIP_ONLY 0xD1DA
|
|
|
|
/* algorithmic control address */
|
|
#define IOT_EM_EXT_ATT_EMC_CFG_CADDR 0x70
|
|
#define IOT_EM_EXT_ATT_EMC_VREFAUTO_EN_MASK 0x02
|
|
#define IOT_EM_EXT_ATT_EMC_VREFAUTO_EN_OFFSET 1
|
|
#define IOT_EM_EXT_ATT_EMC_3P3L_EN_MASK 0x01
|
|
#define IOT_EM_EXT_ATT_EMC_3P3L_EN_OFFSET 0
|
|
//TODO: add others bit
|
|
|
|
/* over current level calibration address */
|
|
#define IOT_EM_EXT_ATT_I_OVER_LVL_CADDR 0x71
|
|
|
|
#define IOT_EM_EXT_ATT_CALI_ADDR_START 0x00
|
|
#define IOT_EM_EXT_ATT_CALI_ADDR_END 0x7F
|
|
/* calibration address. end */
|
|
|
|
/* function address. start */
|
|
/* start sample channel command address. 0~0xB valid */
|
|
#define IOT_EM_EXT_ATT_START_SAMPLE_FADDR 0xC0
|
|
|
|
/* get sample buffer read index command address */
|
|
#define IOT_EM_EXT_ATT_SET_SAMPLE_RIDX_FADDR 0xC1
|
|
|
|
/* clear chip all calibration parameter command address */
|
|
#define IOT_EM_EXT_ATT_CLR_CALI_PARA_FADDR 0xC3
|
|
/* clear command data value key */
|
|
#define IOT_EM_EXT_ATT_CLR_CALI_KEY 0x00
|
|
|
|
/* set sync mode parameter command address */
|
|
#define IOT_EM_EXT_ATT_SET_SYNC_PARA_FADDR 0xC4
|
|
|
|
/* start data sync function command address */
|
|
#define IOT_EM_EXT_ATT_START_SYNC_PARA_FADDR 0xC5
|
|
|
|
/* set chip reg map mode command address */
|
|
#define IOT_EM_EXT_ATT_REG_MAP_MODE_FADDR 0xC6
|
|
/* set chip reg mode key value.
|
|
* if set to IOT_EM_EXT_ATT_FUN_CALI_KEY. chip reg map to calibiration
|
|
* else the chip reg map to measure.
|
|
*/
|
|
#define IOT_EM_EXT_ATT_REG_MAP_KEY 0x5A
|
|
|
|
/* enable/disable calibrtion parameter is writable command address */
|
|
#define IOT_EM_EXT_ATT_CALI_W_ENA_FADDR 0xC9
|
|
/* enable: set parameter to IOT_EM_EXT_ATT_CALI_W_KEY.
|
|
* disable: set parameter other value.
|
|
*/
|
|
#define IOT_EM_EXT_ATT_CALI_W_KEY 0x5A
|
|
|
|
/* software reset chip command address */
|
|
#define IOT_EM_EXT_ATT_SW_REST_FADDR 0xD3
|
|
/* sw reset parameter key */
|
|
#define IOT_EM_EXT_ATT_SW_REST_KEY 0x00
|
|
/* function address. end */
|
|
|
|
/* write reg key */
|
|
#define IOT_EM_EXT_ATT_REG_W_BIT_KEY (1 << 7)
|
|
|
|
#define IOT_EM_EXT_ATT_R_REG_ADDR_MAX \
|
|
max(IOT_EM_EXT_ATT_MEAS_ADDR_END, IOT_EM_EXT_ATT_CALI_ADDR_END)
|
|
|
|
#define IOT_EM_EXT_ATT_WAIT_KICK_2US (29)
|
|
#define IOT_EM_EXT_ATT_WAIT_KICK_3US (43)
|
|
|
|
/* spi defines */
|
|
/* if spi freq less than this reference value. the data(3bytes) can be read
|
|
* without waiting after the command(1byte) is written. otherwise need to wait
|
|
* at least 2us after writing the command before reading the data.
|
|
*/
|
|
#define IOT_EM_EXT_ATT_SPI_FREQ_NO_WAIT (500 * 1000) //500kHz
|
|
|
|
/* default spi freq */
|
|
#define IOT_EM_EXT_ATT_SPI_FREQ_DEF (1000 * 1000)
|
|
|
|
/* spi communication command and data byte length */
|
|
#define IOT_EM_EXT_ATT_SPI_RW_BYTES (4)
|
|
|
|
/* spi communication dummy data */
|
|
#define IOT_EM_EXT_ATT_SPI_DUMMY_DATA (0xFF)
|
|
|
|
/* spi communication wait tx/rx status try system kick cnt max */
|
|
#define IOT_EM_EXT_ATT_SPI_TRY_CNT (5000)
|
|
|
|
/* input chip voltage channel rated voltage */
|
|
#define IOT_EM_EXT_ATT_UCH_UN (220)
|
|
/* input chip current channel Ib sample voltage */
|
|
#define IOT_EM_EXT_ATT_ICHB_SAMPLE_U_MV (50)
|
|
/* Ib sample voltage = 50mV, the channel constant */
|
|
#define IOT_EM_EXT_ATT_ICHB_SAMPLE_CONST (60)
|
|
|
|
/* att chip hfconst max/min value */
|
|
#define IOT_EM_EXT_ATT_HFCONST_MAX (0xD00)
|
|
#define IOT_EM_EXT_ATT_HFCONST_MIN (0x02)
|
|
|
|
/* output rate gain. start */
|
|
/* output line frequency factor */
|
|
#define IOT_EM_EXT_ATT_OUT_FREQ_RATE (100)
|
|
/* output temperature factor */
|
|
#define IOT_EM_EXT_ATT_OUT_TPSD_RATE (10)
|
|
/* output voltage factor */
|
|
#define IOT_EM_EXT_ATT_OUT_U_RATE (10)
|
|
/* output current factor */
|
|
#define IOT_EM_EXT_ATT_OUT_I_RATE (100000)
|
|
/* output current factor */
|
|
#define IOT_EM_EXT_ATT_OUT_ANGLE_RATE (10)
|
|
/* output P/Q/S factor */
|
|
#define IOT_EM_EXT_ATT_OUT_POWER_RATE (1000)
|
|
/* output energy factor */
|
|
#define IOT_EM_EXT_ATT_OUT_ENERGY_RATE (100)
|
|
/* output power factor */
|
|
#define IOT_EM_EXT_ATT_OUT_PFACTOR_RATE (1000)
|
|
/* output rate gain. end */
|
|
|
|
/* att reg default value start */
|
|
/* current start up threshold reg default value */
|
|
#define IOT_EM_EXT_ATT_DEFAULT_I_START (0x160)
|
|
/* power start up threshold reg default value */
|
|
#define IOT_EM_EXT_ATT_DEFAULT_P_START (0x30)
|
|
/* att reg default value end */
|
|
|
|
/* calibration parameter buffer len */
|
|
#define IOT_EM_EXT_ATT_CALI_PARA_LEN \
|
|
(sizeof(iot_em_ext_cali_const_t) + sizeof(iot_em_ext_att_cali_misc_t) + \
|
|
sizeof(iot_em_ext_att_cali_common_t) * IOT_EM_EXT_PHASE_ALL)
|
|
/* calibration reserve infomation length in misc ext */
|
|
#define IOT_EM_EXT_ATT_EX_INFO_LEN (8)
|
|
/* calibration extend misc reserve length */
|
|
#define IOT_EM_EXT_ATT_MISC_EX_LEN (80)
|
|
/* calibration extend phase reserve length */
|
|
#define IOT_EM_EXT_ATT_PHASE_EX_LEN (40)
|
|
/* calibration extend parameter lenght */
|
|
#define IOT_EM_EXT_CALI_PARA_EXT_LEN \
|
|
(sizeof(iot_em_ext_att_cali_misc_ex_t) + \
|
|
sizeof(iot_em_ext_att_cali_common_ex_t) * IOT_EM_EXT_PHASE_ALL)
|
|
|
|
#pragma pack(push)
|
|
#pragma pack(1)
|
|
|
|
/* energy calibration ctxt. start */
|
|
/* energy calibration misc parameter */
|
|
typedef struct _iot_em_ext_att_cali_misc {
|
|
/* reactive power phase error calibration */
|
|
int32_t p_q_phase_cali;
|
|
/* tpsd offset calibration */
|
|
int32_t tpsd_offset;
|
|
} iot_em_ext_att_cali_misc_t;
|
|
|
|
/* ennergy calibration reserve infomation */
|
|
typedef struct _iot_em_ext_att_cali_info_ext {
|
|
uint8_t data[IOT_EM_EXT_ATT_EX_INFO_LEN];
|
|
} iot_em_ext_att_cali_info_ex_t;
|
|
|
|
/* energy calibration misc extend data type */
|
|
typedef struct _iot_em_ext_att_cali_misc_ex_data {
|
|
iot_em_ext_att_cali_info_ex_t info;
|
|
/* tri-phase current vector sum rms offset */
|
|
uint16_t i_t_offset;
|
|
/* current start up threshold */
|
|
uint16_t i_start;
|
|
/* power start up threshold */
|
|
uint16_t p_start;
|
|
/* current gain for phase n*/
|
|
uint16_t i_n_gain;
|
|
//TODO: will add new misc ext cali data
|
|
} iot_em_ext_att_cali_misc_ex_data_t;
|
|
|
|
/* energy calibration misc ext type */
|
|
typedef union _iot_em_ext_att_cali_misc_ex {
|
|
iot_em_ext_att_cali_misc_ex_data_t ex;
|
|
uint8_t data[IOT_EM_EXT_ATT_MISC_EX_LEN];
|
|
} iot_em_ext_att_cali_misc_ex_t;
|
|
|
|
/* energy calibration common extend data type */
|
|
typedef struct _iot_em_ext_att_cali_common_ex_data {
|
|
uint16_t rsvd;
|
|
//TODO: will add new common ex cali data
|
|
} iot_em_ext_att_cali_common_ex_data_t;
|
|
|
|
/* energy calibration common parameter extend */
|
|
typedef union _iot_em_ext_att_cali_common_ex {
|
|
iot_em_ext_att_cali_common_ex_data_t ex;
|
|
uint8_t data[IOT_EM_EXT_ATT_PHASE_EX_LEN];
|
|
} iot_em_ext_att_cali_common_ex_t;
|
|
|
|
/* energy calibration common parameter */
|
|
typedef struct _iot_em_ext_att_cali_common {
|
|
/* active power gain */
|
|
uint16_t p_p_gain;
|
|
/* reactive power gain */
|
|
uint16_t p_q_gain;
|
|
/* apparent power gain */
|
|
uint16_t p_s_gain;
|
|
/* phase calibrtion I region */
|
|
uint16_t phase_i_region0;
|
|
uint16_t phase_i_region1;
|
|
/* power phase error calibration */
|
|
uint16_t phase_cali0;
|
|
uint16_t phase_cali1;
|
|
uint16_t phase_cali2;
|
|
/* voltage gain */
|
|
uint16_t u_gain;
|
|
/* current gain */
|
|
uint16_t i_gain;
|
|
/* voltage rms offset */
|
|
uint16_t u_offset;
|
|
/* current rms offset */
|
|
uint16_t i_offset;
|
|
/* active power offset. 24bit */
|
|
uint32_t p_p_offset;
|
|
/* reactive power offset. 24bit */
|
|
uint32_t p_q_offset;
|
|
} iot_em_ext_att_cali_common_t;
|
|
|
|
/* calibration parameters ctxt */
|
|
typedef struct _iot_em_ext_att_cali_para {
|
|
/* constant calibration */
|
|
iot_em_ext_cali_const_t const_cali;
|
|
/* energy caibration misc parameter */
|
|
iot_em_ext_att_cali_misc_t misc;
|
|
/* each phase(phase A/B/C) calibration parameter */
|
|
iot_em_ext_att_cali_common_t phase[IOT_EM_EXT_PHASE_ALL];
|
|
/* calibration misc extend parameter */
|
|
iot_em_ext_att_cali_misc_ex_t misc_ex;
|
|
/* calibration phase extend reserve parameter */
|
|
iot_em_ext_att_cali_common_ex_t phase_ex[IOT_EM_EXT_PHASE_ALL];
|
|
} iot_em_ext_att_cali_para_t;
|
|
/* energy calibration ctxt. end */
|
|
|
|
#pragma pack(pop)
|
|
|
|
/* save chip parameter and constant */
|
|
typedef struct _iot_em_ext_att_hw_nv_para {
|
|
/* communication interface frequency */
|
|
uint32_t comm_freq : 24,
|
|
/* energy meter reset gpio */
|
|
gpio_rst : 8;
|
|
/* hw spi interface config */
|
|
iot_spi_cfg_t spi_cfg;
|
|
/* calibration constant value */
|
|
iot_em_ext_cali_const_t const_cfg;
|
|
/* high freqency constant. base EC */
|
|
uint32_t hfconst;
|
|
/* calculate active current value rate constant, base hw current channel
|
|
* transfer rate.
|
|
*/
|
|
float n_i_rms;
|
|
/* calculate temperature constant */
|
|
uint32_t tc;
|
|
/* calculate power value rate constant, base hfconst and ec value */
|
|
float k_power;
|
|
} iot_em_ext_att_hw_nv_para_t;
|
|
|
|
typedef struct _iot_em_ext_att_hw_info {
|
|
/* energy meter extern chip id */
|
|
uint32_t chip_id : 4,
|
|
resv0 : 28;
|
|
/* hw nv parameter */
|
|
iot_em_ext_att_hw_nv_para_t nv_para;
|
|
} iot_em_ext_att_hw_info_t;
|
|
|
|
/* @brief get energy extern raw int data of active/inactive power
|
|
*
|
|
* @param mtype get measure type, see IOT_EM_EXT_MTYPE_XXX
|
|
* @param phase get measure phase id, see IOT_EM_EXT_PHASE_XXX
|
|
* @return: raw int data of active/inactive power
|
|
*/
|
|
int32_t iot_em_ext_att_read_pq_raw2int(uint8_t mtype, uint8_t phase);
|
|
|
|
/* @brief get energy extern measure data from chip reg
|
|
*
|
|
* @param mtype get measure type, see IOT_EM_EXT_MTYPE_XXX
|
|
* @param phase get measure phase id, see IOT_EM_EXT_PHASE_XXX
|
|
* @return: measure data
|
|
*/
|
|
int32_t iot_em_ext_att_read_meas(uint8_t mtype, uint8_t is_rawdata,
|
|
uint8_t phase);
|
|
|
|
/* @brief get energy extern calibration data from chip reg
|
|
*
|
|
* @param ctype get measure type, see IOT_EM_EXT_CTYPE_XXX
|
|
* @param phase get measure phase id, see IOT_EM_EXT_PHASE_XXX
|
|
* @return: calibration data
|
|
*/
|
|
uint32_t iot_em_ext_att_read_cali(uint8_t ctype, uint8_t phase);
|
|
|
|
/* @brief set energy extern calibration data to chip reg
|
|
*
|
|
* @param ctype set calibration type, see IOT_EM_EXT_CTYPE_XXX
|
|
* @param phase set calibration phase id, see IOT_EM_EXT_PHASE_XXX
|
|
* @param wdata set calibration data
|
|
* @return: error code, see ERR_XXX
|
|
*/
|
|
uint32_t iot_em_ext_att_write_cali(uint8_t ctype, uint8_t phase,
|
|
uint32_t wdata);
|
|
|
|
/* @brief calculate calibration value base on incoming data
|
|
*
|
|
* @param calc_type calculate calibration data type.
|
|
* @param para calculate calibration data parameters.
|
|
* @return: calibration result
|
|
*/
|
|
uint32_t iot_em_ext_att_calc_cali(uint8_t calc_type, void *para);
|
|
|
|
/* @brief energy special function handle
|
|
*
|
|
* @param func_id function id, see IOT_EM_EXT_FUNC_XXX
|
|
* @param para function parameter address
|
|
* @param para_len function parameter byte length
|
|
* @return: error code, see ERR_XXX
|
|
*/
|
|
uint32_t iot_em_ext_att_func(uint8_t func_id, void *para, uint16_t para_len);
|
|
|
|
/* @brief open energy extern hw
|
|
*
|
|
* @param hw_cfg hw config parameters
|
|
* @param cali hw calibration parameters address
|
|
* @return: error code, see ERR_XXX
|
|
*/
|
|
uint32_t iot_em_ext_att_hw_open(iot_em_ext_hw_cfg_t *hw_cfg, void *cali);
|
|
|
|
/* @brief close energy extern hw
|
|
*
|
|
* @return: none
|
|
*/
|
|
void iot_em_ext_att_hw_close(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //_IOT_EM_EXT_CHIP_ATT_H_
|