HLW8110.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #ifndef __HLW8110_H
  2. #define __HLW8110_H
  3. #include "sys.h"
  4. #include "core_cm3.h"
  5. #include "stdio.h"
  6. #include "iap.h"
  7. //8112/8110 reg define
  8. #define REG_SYSCON_ADDR 0x00
  9. #define REG_EMUCON_ADDR 0x01
  10. #define REG_HFCONST_ADDR 0x02
  11. #define REG_EMUCON2_ADDR 0x13
  12. #define REG_ANGLE_ADDR 0x22 //相角寄存器
  13. #define REG_UFREQ_ADDR 0x23 //市电线性频率地址
  14. #define REG_RMSIA_ADDR 0x24
  15. #define REG_RMSIB_ADDR 0x25
  16. #define REG_RMSU_ADDR 0x26
  17. #define REG_PF_ADDR 0x27
  18. #define REG_ENERGY_PA_ADDR 0x28
  19. #define REG_ENERGY_PB_ADDR 0x29
  20. #define REG_POWER_PA_ADDR 0x2C
  21. #define REG_POWER_PB_ADDR 0x2D
  22. #define REG_POWER_PS_ADDR 0x2E
  23. #define REG_SAGCYC_ADDR 0x17
  24. #define REG_SAGLVL_ADDR 0x18
  25. #define REG_OVLVL_ADDR 0x19
  26. #define REG_OIALVL_ADDR 0x1a
  27. #define REG_INT_ADDR 0x1D
  28. #define REG_IE_ADDR 0x40
  29. #define REG_IF_ADDR 0x41
  30. #define REG_RIF_ADDR 0x42
  31. #define REG_RDATA_ADDR 0x44
  32. #define REG_CHECKSUM_ADDR 0x6f
  33. #define REG_RMS_IAC_ADDR 0x70
  34. #define REG_RMS_IBC_ADDR 0x71
  35. #define REG_RMS_UC_ADDR 0x72
  36. #define REG_POWER_PAC_ADDR 0x73
  37. #define REG_POWER_PBC_ADDR 0x74
  38. #define REG_POWER_SC_ADDR 0x75
  39. #define REG_ENERGY_AC_ADDR 0x76
  40. #define REG_ENERGY_BC_ADDR 0x77
  41. //宏定义
  42. #define D_TIME1_50MS 50
  43. void Init_HLW8110(unsigned char nun);
  44. void Calculate_HLW8110_MeterData(unsigned char nun);
  45. void Init_HLW8112(void);
  46. void HLW8112_Measure(void);
  47. void Read_Power_Data_handle(void);
  48. void Raed_ele_data(void);
  49. extern unsigned char HLW8110Msg; //程序状态机
  50. enum HLW8110_TASK
  51. {
  52. HLW8110_1int = 0,
  53. HLW8110_2int,
  54. HLW8110_3int,
  55. HLW8110_1,//第一路
  56. HLW8110_2, //第二路
  57. HLW8110_3, //第三路
  58. HLW8110_IDEL,//空闲任务
  59. HLW8110_ERR
  60. };
  61. typedef struct hlw8110_power
  62. {
  63. float F_AC_V;
  64. float F_AC_I[3];
  65. float F_AC_P[3];
  66. float F_AC_E[3];
  67. }hlw8110_power_t;
  68. extern hlw8110_power_t hlw8110_power_data;
  69. extern long int SystemTimer;
  70. extern unsigned char power_data[21];
  71. extern unsigned char u8_TxBuf[10];
  72. extern unsigned char u8_RxBuf[10];
  73. extern unsigned char u8_TX_Length;
  74. extern unsigned char u8_RX_Length;
  75. extern unsigned char u8_RX_Index;
  76. //unsigned char B_ReadReg_Time_EN; // 串口读取寄存器数据,时间计数器标志位,1--开启计数,0--关闭计数
  77. //unsigned char B_Tx_Finish;
  78. extern unsigned char B_Rx_Finish;
  79. extern unsigned char B_Rx_Data_ING; // 接收数据标志位 , < 1:接收数据中,0:未接收到数据 >
  80. extern unsigned char B_Read_Error;
  81. #endif