400Vhuganqi/project/400V/user/Inc/RN8209D.h
2024-12-27 18:16:23 +08:00

106 lines
3.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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