106 lines
3.6 KiB
C
106 lines
3.6 KiB
C
#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
|