#ifndef __HLW8110_H #define __HLW8110_H #include "sys.h" #include "core_cm3.h" #include "stdio.h" #include "iap.h" //8112/8110 reg define #define REG_SYSCON_ADDR 0x00 #define REG_EMUCON_ADDR 0x01 #define REG_HFCONST_ADDR 0x02 #define REG_EMUCON2_ADDR 0x13 #define REG_ANGLE_ADDR 0x22 //相角寄存器 #define REG_UFREQ_ADDR 0x23 //市电线性频率地址 #define REG_RMSIA_ADDR 0x24 #define REG_RMSIB_ADDR 0x25 #define REG_RMSU_ADDR 0x26 #define REG_PF_ADDR 0x27 #define REG_ENERGY_PA_ADDR 0x28 #define REG_ENERGY_PB_ADDR 0x29 #define REG_POWER_PA_ADDR 0x2C #define REG_POWER_PB_ADDR 0x2D #define REG_POWER_PS_ADDR 0x2E #define REG_SAGCYC_ADDR 0x17 #define REG_SAGLVL_ADDR 0x18 #define REG_OVLVL_ADDR 0x19 #define REG_OIALVL_ADDR 0x1a #define REG_INT_ADDR 0x1D #define REG_IE_ADDR 0x40 #define REG_IF_ADDR 0x41 #define REG_RIF_ADDR 0x42 #define REG_RDATA_ADDR 0x44 #define REG_CHECKSUM_ADDR 0x6f #define REG_RMS_IAC_ADDR 0x70 #define REG_RMS_IBC_ADDR 0x71 #define REG_RMS_UC_ADDR 0x72 #define REG_POWER_PAC_ADDR 0x73 #define REG_POWER_PBC_ADDR 0x74 #define REG_POWER_SC_ADDR 0x75 #define REG_ENERGY_AC_ADDR 0x76 #define REG_ENERGY_BC_ADDR 0x77 //宏定义 #define D_TIME1_50MS 50 void Init_HLW8110(unsigned char nun); void Calculate_HLW8110_MeterData(unsigned char nun); void Init_HLW8112(void); void HLW8112_Measure(void); void Read_Power_Data_handle(void); void Raed_ele_data(void); extern unsigned char HLW8110Msg; //程序状态机 enum HLW8110_TASK { HLW8110_1int = 0, HLW8110_2int, HLW8110_3int, HLW8110_1,//第一路 HLW8110_2, //第二路 HLW8110_3, //第三路 HLW8110_IDEL,//空闲任务 HLW8110_ERR }; typedef struct hlw8110_power { float F_AC_V; float F_AC_I[3]; float F_AC_P[3]; float F_AC_E[3]; }hlw8110_power_t; extern hlw8110_power_t hlw8110_power_data; extern long int SystemTimer; extern unsigned char power_data[21]; extern unsigned char u8_TxBuf[10]; extern unsigned char u8_RxBuf[10]; extern unsigned char u8_TX_Length; extern unsigned char u8_RX_Length; extern unsigned char u8_RX_Index; //unsigned char B_ReadReg_Time_EN; // 串口读取寄存器数据,时间计数器标志位,1--开启计数,0--关闭计数 //unsigned char B_Tx_Finish; extern unsigned char B_Rx_Finish; extern unsigned char B_Rx_Data_ING; // 接收数据标志位 , < 1:接收数据中,0:未接收到数据 > extern unsigned char B_Read_Error; #endif