⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nsa_timer_drv.h

📁 ds1306和bs5460的驱动程序
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
//  提供全局变量:
//		TDATE g_tDate:		存放系统时间数据
//
//  提供全局函数:
//
//		读时钟芯片中的时间
//		void TM_Read_Timer(void);
//
//		写时钟芯片中的时间
//		void TM_Write_Timer(const TDATE *ptDate);
//
//		读时钟芯片的寄存器		
//		void TM_Read_DS_Array(char Offset,unsigned char Size,unsigned char *pTo);
//
//		写时钟芯片的寄存器
//		void TM_Write_DS_Array(char Offset,unsigned char Size,unsigned char *pFrom);
//
//  使用全局变量:
//		无
//
//  使用全局函数:
//		BcdHex,HexBcd
//		
//
/////////////////////////////////////////////////////////////////////////////
#ifndef __TIMER__
#define __TIMER__

#include	"typedef.h"

typedef struct tagTDATE 
{
	WORD wYear;	//1997-2050
	BYTE byMon;	//1-12
	BYTE byDay;	//1-28,29,30,31
	BYTE byHour;//0-23
	BYTE byMin;	//0-59
	WORD wMs;	//0-59999
} TDATE;

struct t_time 
{
	unsigned short year;              
	unsigned char  month;    
	unsigned char  date;     
	unsigned char  hour;
	unsigned char  minute;
	unsigned char  second;
	unsigned short msec;	//define same as TDATE.wMs 
};


#define ACDATAGRPS        3   //最多有多少组I,U,P,Q,COS原始量

typedef struct
{  
   //格式:bit15:溢出,bit14:差错,bit13:越限,bit12:符号(1负0正),bit11~0:(绝对值)值
   short  I[ACDATAGRPS];
   short  U[ACDATAGRPS];
   short  P[ACDATAGRPS];
   short  Q[ACDATAGRPS];
   short  COS[ACDATAGRPS];
   bool   QDIR[ACDATAGRPS];
}  CALING_ENG_DATA;
extern CALING_ENG_DATA Cal_Eng_Data;

typedef struct
{
	DWORD dPulseP;
	DWORD dPulseQ;
	DWORD dKwhP;
	DWORD dKwhN;
	DWORD dKvrP;
	DWORD dKvrN;

	DWORD dTKwhTP;
	DWORD dTKwhTN;
	DWORD dTKvrTP;
	DWORD dTKvrTN;
} DIAN_LIANG;
extern DIAN_LIANG tDian_Liang;

typedef struct
{
	short	I[ACDATAGRPS];
	short	U[ACDATAGRPS];
	short	E[ACDATAGRPS];
	bool	BeUsed;
}CS5460_IVE;
extern CS5460_IVE CS5460_ive;

#define CALIBRATE_DC_OFFSET	1
#define CALIBRATE_AC_OFFSET	2
#define CALIBRATE_AC_GAIN	3
#define CALIBRATE_DEGREE	4
#define CALIBRATE_RIGHT		1
#define CALIBRATE_ERROR		2
typedef struct
{
	bool bNeed_Save_Config;
	bool bNeed_Read_Config;
	bool bNeed_Save_Energy;
	bool bNeed_Clear_Energy;
	bool bNeed_Download_Config;
	bool bNeed_Show_Offset_OK;
	bool bNeed_Show_Gain_OK;
	WORD wOprateID;			//DCOff,ACOff,ACGain,DEGREE
	bool bCalibrating;
	WORD wCalibrate_Result;
}OPRATE_5460_FLAG;
extern OPRATE_5460_FLAG gtOp_5460_Flag;

typedef struct tagCONFIG_5460
{
	DWORD Config;
	DWORD Ioff;
	DWORD Ign;
	DWORD Voff;
	DWORD Vgn;
	DWORD Iacoff;
	DWORD Vacoff;
	DWORD Poff;
	WORD  wCRC;
}CONFIG_5460;

typedef struct tagENERGY_REG
{
	CONFIG_5460 Conf;	//保存到FLASH中
	bool  bUsed;
	DWORD dRealEgy;		//保存到DS1306EN中
	DWORD E;
	DWORD V;
	DWORD I;
	DWORD P;
	DWORD Irms;
	DWORD Vrms;
	DWORD Tbc;
	DWORD Status;
	DWORD Mask;
	DWORD dDeltT;
}ENERGY_REG;

#define CS_ALL			0x03
#define ENERGY_OFFSET	0			//
#define CSIBLXS	1676757
#define CSVBLXS	83874
#define CSEBLXS	04096

//串行时钟
char read_DS1306( const char reg);           //读时钟芯片的寄存器
void TM_Write_DS1306(const char reg,const unsigned char control);

//时间读写
void TM_Read_Timer(void);
void TM_Write_Timer(const TDATE *ptDate);

//读时钟芯片的寄存器
//Offset:偏移地址[0,95]
//Size:  长度  条件:Offset+Size <= 96
//pTo:   读出的数据存放指针
void TM_Read_DS_Array(char Offset,unsigned char Size,unsigned char *pTo);


//写时钟芯片的寄存器
//Offset:偏移地址[0,95]
//Size:  长度  条件:Offset+Size <= 96
//pFrom: 待写入数据的存放指针
void TM_Write_DS_Array(char Offset,unsigned char Size,unsigned char *pFrom);


//从CS5460中读出数据
//which_cs:cs5460片选,0,1,2分别对应1,2,3
//Command: 命令字
//pDword:  待读出的数据存放指针,自动将24bits 转换成DWORD
void TM_Read_CS5460(unsigned char Command,unsigned char which_cs,unsigned long *pDword);


//向CS5460中写入数据
//which_cs:cs5460片选,0,1,2分别对应1,2,3
//Command: 命令字
//pDword:  待写入的数据存放指针,自动将DWORD 转换成24bits
void TM_Write_CS5460(unsigned char Command,unsigned char which_cs,unsigned long *pDword);

//上电初始化CS5460
void TM_Initinize_CS5460(void);

//偏置校验
//byWhich_CS:0,1,2,3(全部Three)
bool TM_CS_Set_Dc_Offset(BYTE byWhich_CS);

//偏置校验
//byWhich_CS:0,1,2,3(全部Three)
bool TM_CS_Set_AC_Offset(BYTE byWhich_CS);

//增益校验
bool TM_CS_Set_AC_Gain(BYTE byWhich_CS);

//角度校验
bool TM_CS_Set_Degree(BYTE byWhich_CS,BYTE byOprate);

//保存CS5460配置信息
bool TM_Save_CS5460_Config(BYTE byWhich_CS);

//复归CS5460
bool TM_Reset_CS5460(BYTE byWhich_CS);

//校验运行中CS5460配置信息
bool TM_Check_CS5460_Config(BYTE byWhich_CS);

//CS5460操作显示
void CS5460A_Operating_Show();

//实际保存能量清0
void TM_Clear_Real_Energy();


//周期性电能管理操作
// >1.3S调用一次
void Cycle_Energy_Operation();
			
extern volatile TDATE g_tDate;
extern ENERGY_REG Energy_Reg[3];

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -