#ifndef _RN8209_H #define _RN8209_H #include "user.h" //----------------------start RN8209 地址定义---------------------------------------------------// #define ADSYSCON 0x00 //系统控制寄存器,写保护 #define ADEMUCON 0x01 //计量控制寄存器,写保护 #define ADHFConst 0x02 //脉冲频率寄存器,写保护 #define ADPStart 0x03 //有功起动功率设置,写保护 #define ADDStart 0x04 //自定义电能起动功率设置, 写保护 #define ADGPQA 0x05 //通道 A 功率增益校正寄存器, 写保护 #define ADGPQB 0x06 //通道 B 功率增益校正寄存器, 写保护 #define ADPhsA 0x07 //通道 A 相位校正寄存器, 写保护 #define ADPhsB 0x08 //通道 B 相位校正寄存器, 写保护 #define ADQPHSCAL 0x09 //无功相位补偿, 写保护 #define ADAPOSA 0x0a //通道 A 有功功率 Offset 校正寄存器,写保护 #define ADAPOSB 0x0b //通道 B 有功功率 Offset 校正寄存器,写保护 #define ADRPOSA 0x0c //通道 A 无功功率 Offset 校正寄存器,写保护 #define ADRPOSB 0x0d //通道 B 无功功率 Offset 校正寄存器,写保护 #define ADIARMSOS 0x0e //电流通道 A 有效值 Offset 补偿, 写保护 #define ADIBRMSOS 0x0f //电流通道 B 有效值 Offset 补偿, 写保护 #define ADIBGain 0x10 //电流通道 B 增益设置, 写保护 #define ADD2FPL 0x11 //自定义功率寄存器 D2FP 的低 16bit,写保护 #define ADD2FPH 0x12 #define ADDCIAH 0x13 #define ADDCIBH 0x14 #define ADDCUH 0x15 #define ADDCL 0x16 #define ADEMUCON2 0x17 #define ADCLKCON 0x1A //模块时钟配置寄存器 #define ADPFCnt 0x20 #define ADDFcnt 0x21 #define ADIARMS 0x22 #define ADIBRMS 0x23 #define ADURMS 0x24 //电压有效值 #define ADUFreq 0x25 //电压频率 #define ADPowerPA 0x26 //有功功率Pa #define ADPowerPB 0x27 #define ADREPower 0x28 #define ADEnergyP 0x29 #define ADEnergyP2 0x2a #define ADEnergyD 0x2b #define ADEnergyD2 0x2c #define ADEMUStatus 0x2d #define ADSPL_IA 0x30 #define ADSPL_IB 0x31 #define ADSPL_U 0x32 #define ADIE 0x40 #define ADIF 0x41 #define ADRIF 0x42 #define ADSysStatus 0x43 #define ADRData 0x44 #define ADWData 0x45 #define WAVE_IF 0x46 //波形缓存状态寄存器 #define WAVE_IE 0x47 //波形缓存中断寄存器 #define ADDeviceID 0x7f #define ADDeviceID2 0x7e #define WriteEn 0xea #define SPI_TIMEOUT 10 extern float IA; extern float IB; extern float Vol; extern float PA; extern float PB; extern float EA; extern float Fr; extern float Kv; extern float Ki; typedef struct { unsigned short I_Curr; unsigned short Voltage; unsigned short Active_Power; unsigned short Reactive_Power; unsigned short Apparent_Power; unsigned char Factor; unsigned long int Apparent_Energy; }MeterData; #define SPI_CS_HIGH() HAL_GPIO_WritePin(CS_GPIO_Port,CS_Pin,GPIO_PIN_SET) #define SPI_CS_LOW() HAL_GPIO_WritePin(CS_GPIO_Port,CS_Pin,GPIO_PIN_RESET) extern MeterData Pre_MeterData; extern unsigned int CurrentElectric; //总电量 void EMU_init(void); void rn8209_Init(void); void rn8209_ReadData(void); void Write_SPI(unsigned char Address,uint32_t dwData, unsigned char Date_len); uint32_t READ_SPI(unsigned char Address, unsigned char Data_len); void rn8209d_Init(void); void EMU_init_xlq(void); void rn8209d_cal(void); void rn8209_ReadAll(void); void Start_Wave(); #endif