/********************************************************************************************************* * 模块名称:HT7032_SPI.h * 摘 要:HT7032_SPI驱动头文件 * 当前版本:1.0.0 * 作 者:anycrying * 完成日期:2024年04月20日 * 内 容: * 注 意: ********************************************************************************************************** * 取代版本: * 作 者: * 完成日期: * 修改内容: * 修改文件: *********************************************************************************************************/ #ifndef _HT7032_SPI_H_ #define _HT7032_SPI_H_ /********************************************************************************************************* * 包含头文件 *********************************************************************************************************/ #include "gd32e230x_conf.h" /********************************************************************************************************* * 宏定义 *********************************************************************************************************/ #define HT7032_SPI_RCU RCU_GPIOA #define HT7032_SPI_IO GPIOA #define HT7032_IRQ_RCU RCU_GPIOB #define HT7032_IRQ_IO GPIOB #define HT7032_SPI_SCLK GPIO_PIN_5 #define HT7032_SPI_MISO GPIO_PIN_6 #define HT7032_SPI_MOSI GPIO_PIN_7 /* #define HT7032_SPI_CS0 GPIO_PIN_4 #define HT7032_SPI_CS1 GPIO_PIN_11 #define HT7032_SPI_CS2 GPIO_PIN_12 #define HT7032_IRQ0 GPIO_PIN_0 #define HT7032_IRQ1 GPIO_PIN_1 #define HT7032_IRQ2 GPIO_PIN_2 */ #define HT7032_SPI_CS0 GPIO_PIN_11 #define HT7032_SPI_CS1 GPIO_PIN_12 #define HT7032_SPI_CS2 GPIO_PIN_4 #define HT7032_IRQ0 GPIO_PIN_1 #define HT7032_IRQ1 GPIO_PIN_2 #define HT7032_IRQ2 GPIO_PIN_0 #define HT7032_SPI_buff_len 32 #define HT7032_CH0 0 #define HT7032_CH1 1 #define HT7032_CH2 2 #define SPI_CS0_L gpio_bit_reset(HT7032_SPI_IO, HT7032_SPI_CS0) #define SPI_CS0_H gpio_bit_set(HT7032_SPI_IO, HT7032_SPI_CS0) #define SPI_CS1_L gpio_bit_reset(HT7032_SPI_IO, HT7032_SPI_CS1) #define SPI_CS1_H gpio_bit_set(HT7032_SPI_IO, HT7032_SPI_CS1) #define SPI_CS2_L gpio_bit_reset(HT7032_SPI_IO, HT7032_SPI_CS2) #define SPI_CS2_H gpio_bit_set(HT7032_SPI_IO, HT7032_SPI_CS2) #define SPI_SCLK_L gpio_bit_reset(HT7032_SPI_IO, HT7032_SPI_SCLK) #define SPI_SCLK_H gpio_bit_set(HT7032_SPI_IO, HT7032_SPI_SCLK) #define SPI_MOSI_L gpio_bit_reset(HT7032_SPI_IO, HT7032_SPI_MOSI) #define SPI_MOSI_H gpio_bit_set(HT7032_SPI_IO, HT7032_SPI_MOSI) #define SPI_MOSI_L gpio_bit_reset(HT7032_SPI_IO, HT7032_SPI_MOSI) #define SPI_MOSI_H gpio_bit_set(HT7032_SPI_IO, HT7032_SPI_MOSI) #define SPI_MISO() gpio_input_bit_get(HT7032_SPI_IO,HT7032_SPI_MISO) #define HT7032_Device_N 3 #define CMD_write 1 #define CMD_read 0 /////////////////计量参数寄存器地址定义,内容只读////////////////////////////////////////////////////////// #define HT7032_DeviceID 0x7122A0 //Device ID #define HT7032_ChipID 0x7022E0 //chipID #define HT7032_r_DeviceID 0x00 //Device ID #define HT7032_r_Pa 0x01 //A相有功功率 #define HT7032_r_Pb 0x02 //B相有功功率 #define HT7032_r_Pc 0x03 //C相有功功率 #define HT7032_r_Pt 0x04 //合相有功功率 #define HT7032_r_Qa 0x05 //A相无功功率 #define HT7032_r_Qb 0x06 //B相无功功率 #define HT7032_r_Qc 0x07 //C相无功功率 #define HT7032_r_Qt 0x08 //合相无功功率 #define HT7032_r_Sa 0x09 //A相视在功率 #define HT7032_r_Sb 0x0A //B相视在功率 #define HT7032_r_Sc 0x0B //C相视在功率 #define HT7032_r_St 0x0C //合相视在功率 #define HT7032_r_UaRms 0x0D //A相电压有效值 #define HT7032_r_UbRms 0x0E //B相电压有效值 #define HT7032_r_UcRms 0x0F //C相电压有效值 #define HT7032_r_IaRms 0x10 //A相电流有效值 #define HT7032_r_IbRms 0x11 //B相电流有效值 #define HT7032_r_IcRms 0x12 //C相电流有效值 #define HT7032_r_ItRms 0x13 //合相电流有效值(矢量和) #define HT7032_r_Pfa 0x14 //A相功率因素 #define HT7032_r_Pfb 0x15 //B相功率因素 #define HT7032_r_Pfc 0x16 //C相功率因素 #define HT7032_r_Pft 0x17 //合相功率因素 #define HT7032_r_Pga 0x18 //A相电流与电压夹角 #define HT7032_r_Pgb 0x19 //B相电流与电压夹角 #define HT7032_r_Pgc 0x1A //C相电流与电压夹角 #define HT7032_r_IFlag 0x1B //中断标志(读后清零) ** #define HT7032_r_Freq 0x1C //线频率 #define HT7032_r_EFlag 0x1D //电能寄存器状态(读后清零) * #define HT7032_r_Epa 0x1E //A相有功电能(可配置读后清零) #define HT7032_r_Epb 0x1F //B相有功电能(可配置读后清零) #define HT7032_r_Epc 0x20 //C相有功电能(可配置读后清零) #define HT7032_r_Ept 0x21 //合相有功电能(可配置读后清零) #define HT7032_r_Eqa 0x22 //A相无功电能(可配置读后清零) #define HT7032_r_Eqb 0x23 //B相无功电能(可配置读后清零) #define HT7032_r_Eqc 0x24 //C相无功电能(可配置读后清零) #define HT7032_r_Eqt 0x25 //合相无功电能(可配置读后清零) #define HT7032_r_YUaUb 0x26 //Ua与Ub的电压夹角 #define HT7032_r_YUaUc 0x27 //Ua与Uc的电压夹角 #define HT7032_r_YUbUc 0x28 //Ub与Uc的电压夹角 #define HT7032_r_InRms 0x29 //零线电流有效值 #define HT7032_r_TPSD 0x2A //温度传感器的输出 #define HT7032_r_UtRms 0x2B //合相电压有效值(矢量和) #define HT7032_r_SFlag 0x2C //断相,相序,SIG等标志状态 ** #define HT7032_r_ComReg 0x2D //通讯数据备份寄存器 * #define HT7032_r_ComSum 0x2E //通讯校验和寄存器 * #define HT7032_r_SampleIA 0x2F //A相电流通道ADC采样数据 #define HT7032_r_SampleIB 0x30 //B相电流通道ADC采样数据 #define HT7032_r_SampleIC 0x31 //C相电流通道ADC采样数据 #define HT7032_r_SampleUA 0x32 //A相电压通道ADC采样数据 #define HT7032_r_SampleUB 0x33 //B相电压通道ADC采样数据 #define HT7032_r_SampleUC 0x34 //C相电压通道ADC采样数据 #define HT7032_r_Esa 0x35 //A相视在电能(可配置读后清零) #define HT7032_r_Esb 0x36 //B相视在电能(可配置读后清零) #define HT7032_r_Esc 0x37 //C相视在电能(可配置读后清零) #define HT7032_r_Est 0x38 //合相视在电能(可配置读后清零) #define HT7032_r_FstCntA 0x39 //A相快速脉冲计数 #define HT7032_r_FstCntB 0x3A //B相快速脉冲计数 #define HT7032_r_FstCntC 0x3B //C相快速脉冲计数 #define HT7032_r_FstCntT 0x3C //合相快速脉冲计数 #define HT7032_r_PFlag 0x3D //功率方向(0正1负) ** #define HT7032_r_ChkSum0 0x3E//校表数据校验和(0x01~0x39)(三线0x01E0CD四线0x01D4CD)* #define HT7032_r_InstADC7 0x3F //第7路ADC采样数据输出 #define HT7032_r_LinePa 0x40 //A相基波有功功率 #define HT7032_r_LinePb 0x41 //B相基波有功功率 #define HT7032_r_LinePc 0x42 //C相基波有功功率 #define HT7032_r_LinePt 0x43 //合相基波有功功率 #define HT7032_r_LineEPa 0x44 //A相基波有功电能(可配置读后清零) #define HT7032_r_LineEPb 0x45 //B相基波有功电能(可配置读后清零) #define HT7032_r_LineEPc 0x46 //C相基波有功电能(可配置读后清零) #define HT7032_r_LineEPt 0x47 //合相基波有功电能(可配置读后清零) #define HT7032_r_LineUaRms 0x48 //A相基波电压有效值 #define HT7032_r_LineUbRms 0x49 //B相基波电压有效值 #define HT7032_r_LineUcRms 0x4A //C相基波电压有效值 #define HT7032_r_LineIaRms 0x4B //A相基波电流有效值 #define HT7032_r_LineIbRms 0x4C //B相基波电流有效值 #define HT7032_r_LineIcRms 0x4D //C相基波电流有效值 #define HT7032_r_LEFlag 0x4E //基波电能寄存器工作状态(读后清零) * #define HT7032_r_SAGFlag 0x4F //SAG标志寄存器 ** #define HT7032_r_PeakUa 0x50 //A相电压最大值 #define HT7032_r_PeakUb 0x51 //B相电压最大值 #define HT7032_r_PeakUc 0x52 //C相电压最大值 #define HT7032_r_LineQa 0x57 //A相基波无功功率 #define HT7032_r_LineQb 0x58 //B相基波无功功率 #define HT7032_r_LineQc 0x59 //C相基波无功功率 #define HT7032_r_LineQt 0x5A //合相基波无功功率 #define HT7032_r_Vrefgain 0x5C //Vref自动补偿系数 * #define HT7032_r_ChipID 0x5D //芯片版本指示 * #define HT7032_r_ChkSum1 0x5E //校表数据校验和(0x60~0x71) * #define HT7032_r_PtrWaveBuff 0x7E //缓冲数据指针 #define HT7032_r_WaveBuff 0x7F //缓冲数据寄存器 ///////校表参数寄存器地址定义,校表数据需放置在3个数据字节的低2个字节里/////// #define HT7032_w_StartSig 0x00 //校表参数寄存器起始标志 #define HT7032_w_ModeCfg 0x01 //模式相关控制器 #define HT7032_w_PGACtrl 0x02 //ADC增益选择 #define HT7032_w_EMUCfg 0x03 //EMU模块配置寄存器 #define HT7032_w_PgainA 0x04 //A相有功功率增益 #define HT7032_w_PgainB 0x05 //B相有功功率增益 #define HT7032_w_PgainC 0x06 //C相有功功率增益 #define HT7032_w_QgainA 0x07 //A相无功功率增益 #define HT7032_w_QgainB 0x08 //B相无功功率增益 #define HT7032_w_QgainC 0x09 //C相无功功率增益 #define HT7032_w_SgainA 0x0A //A相视在功率增益 #define HT7032_w_SgainB 0x0B //B相视在功率增益 #define HT7032_w_SgainC 0x0C //C相视在功率增益 #define HT7032_w_PhSregApq0 0x0D //A相相位校正0 #define HT7032_w_PhSregBpq0 0x0E //B相相位校正0 #define HT7032_w_PhSregCpq0 0x0F //C相相位校正0 #define HT7032_w_PhSregApq1 0x10 //A相相位校正1 #define HT7032_w_PhSregBpq1 0x11 //B相相位校正1 #define HT7032_w_PhSregCpq1 0x12 //C相相位校正1 #define HT7032_w_PoffsetA 0x13 //A相有功功率offset校正 #define HT7032_w_PoffsetB 0x14 //B相有功功率offset校正 #define HT7032_w_PoffsetC 0x15 //C相有功功率offset校正 #define HT7032_w_QPhscal 0x16 //无功相位校正 #define HT7032_w_UgainA 0x17 //A相电压增益 #define HT7032_w_UgainB 0x18 //B相电压增益 #define HT7032_w_UgainC 0x19 //C相电压增益 #define HT7032_w_IgainA 0x1A //A相电流增益 #define HT7032_w_IgainB 0x1B //B相电流增益 #define HT7032_w_IgainC 0x1C //C相电流增益 #define HT7032_w_Istartup 0x1D //启动电流阈值设置 #define HT7032_w_HFConst 0x1E //高频脉冲输出设置 #define HT7032_w_FailVolt 0x1F //失压阈值设置 #define HT7032_w_GainADC7 0x20 //第七路ADC输入信号增益 #define HT7032_w_QoffsetA 0x21 //A相无功功率offset校正 #define HT7032_w_QoffsetB 0x22 //B相无功功率offset校正 #define HT7032_w_QoffsetC 0x23 //C相无功功率offset校正 #define HT7032_w_URmsoffsetA 0x24 //A相电压有效值offset校正 #define HT7032_w_URmsoffsetB 0x25 //B相电压有效值offset校正 #define HT7032_w_URmsoffsetC 0x26 //C相电压有效值offset校正 #define HT7032_w_IRmsoffsetA 0x27 //A相电流有效值offset校正 #define HT7032_w_IRmsoffsetB 0x28 //B相电流有效值offset校正 #define HT7032_w_IRmsoffsetC 0x29 //C相电流有效值offset校正 #define HT7032_w_UoffsetA 0x2A //A相电压通道ADC offset校正 #define HT7032_w_UoffsetB 0x2B //B相电压通道ADC offset校正 #define HT7032_w_UoffsetC 0x2C //C相电压通道ADC offset校正 #define HT7032_w_IoffsetA 0x2D //A相电流通道ADC offset校正 #define HT7032_w_IoffsetB 0x2E //B相电流通道ADC offset校正 #define HT7032_w_IoffsetC 0x2F //C相电流通道ADC offset校正 #define HT7032_w_EMUIE 0x30 //中断使能 #define HT7032_w_ModuleCfg 0x31 //电路模块配置寄存器 #define HT7032_w_AllGain 0x32 //全通道增益 #define HT7032_w_HFDouble 0x33 //脉冲常数加倍选择 #define HT7032_w_LineGain 0x34 //基波增益校正 #define HT7032_w_PinCtrl 0x35 //数字pin上下拉电阻选择控制 #define HT7032_w_Pstartup 0x36 //启动功率阈值设置 #define HT7032_w_Iregion0 0x37 //相位补偿区域设置寄存器0 #define HT7032_w_Cyclength 0x38 //SAG数据长度设置寄存器 #define HT7032_w_SAGLevel 0x39 //SAG检测阈值设置寄存器 #define HT7032_w_Iregion1 0x60 //相位补偿区域设置寄存器1 #define HT7032_w_PhSregApq2 0x61 //A相相位校正2 #define HT7032_w_PhSregBpq2 0x62 //B相相位校正2 #define HT7032_w_PhSregCpq2 0x63 //C相相位校正2 #define HT7032_w_PoffsetAL 0x64 //A相有功功率offset校正低字节 #define HT7032_w_PoffsetBL 0x65 //B相有功功率offset校正低字节 #define HT7032_w_PoffsetCL 0x66 //C相有功功率offset校正低字节 #define HT7032_w_QoffsetAL 0x67 //A相无功功率offset校正低字节 #define HT7032_w_QoffsetBL 0x68 //B相无功功率offset校正低字节 #define HT7032_w_QoffsetCL 0x69 //C相无功功率offset校正低字节 #define HT7032_w_IRmsoffsetT 0x6A //电流矢量和offset校正寄存器 #define HT7032_w_TPSoffset 0x6B //TPS初值校正寄存器 #define HT7032_w_TPSgain 0x6C //TPS斜率校正寄存器 #define HT7032_w_TCoffA 0x6D //Vrefgain的二次系数 #define HT7032_w_TCoffB 0x6E //Vrefgain的一次系数 #define HT7032_w_TCoffC 0x6F //Vrefgain的常数项 #define HT7032_w_EMCfg 0x70 //新增算法控制寄存器 #define HT7032_w_OILevel 0x71 //过流阈值设置寄存器 /////特殊命令定义------------------------------------------------------------------ #define HT7032_w_BuffStr 0xC0 //采样数据缓冲启动命令 #define HT7032_w_BuffSet 0xC1 //缓冲数据读指针设置 #define HT7032_w_ClrCali 0xC3 //清校表数据 #define HT7032_w_SyncSet 0xC4 //同步数据系数设置 #define HT7032_w_SyncStr 0xC5 //同步数据启动命令 #define HT7032_w_EnRdCali 0xC6 //校表数据读写使能 #define HT7032_w_EnWrCali 0xC9 //校表数据写使能 #define HT7032_w_SoftRst 0xD3 //软复位 /********************************************************************************************************* * 枚举结构体 *********************************************************************************************************/ /********************************************************************************************************* * API函数声明 *********************************************************************************************************/ void init_HT7032_SPI(void); //uint32_t HT7032_Wr_Rd_Reg(uint8_t CHx,uint8_t cmd_wr,uint8_t addr,uint32_t da); uint32_t Get_MeterPara_value(uint8_t CHx,uint8_t addr); //void init_HT7032_DEV(uint8_t CHx); #endif