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

📄 cs5463.c

📁 单相电能芯片 cs5463 的地层驱动
💻 C
字号:
/******************************************************************/
/*     File: watchdog.c      Purpose: 	watchdog                  */
/*  	              											  */
/*		Create   Time      2004  8  18		by   xzh 			  */	
/******************************************************************/

#include "include/drivers/cs5463.h"
//=============================定义==========================//

///////////////////////全局变量定义////////////////////////////

	
///////////////////////全局变量定义////////////////////////////


///////////////////////静态变量////////////////////////////////

///////////////////////静态变量////////////////////////////////

//=============================定义==========================//
/****************************************************************
//函 数 名:	CS5463_WriteByte(uint8 w_byte)
//功    能:	写一个字节
//输入参数:	w_byte
			
//返 回 值:	无
//备    注:	无
****************************************************************/
static void CS5463_WriteByte(uchar w_byte)		 
{
	uchar i;
	for(i = 0; i < 8; ++i)				//MSB at the front
	{
		if(w_byte & 0x80)				//口线高低与ADE上信号相反
		{
			CLR_CS54SDI;				//set cs5460 sdi high
		}
		else
		{
			SET_CS54SDI;				//set cs5460 sdi low		
		}
		SET_CS54SCK;					//set sclk low			
		delay_us(CS54_DELAY);
		CLR_CS54SCK;					//set sclk high	
		delay_us(CS54_DELAY);
		w_byte <<= 1;
	}
}
/****************************************************************
//函 数 名:	uint8 CS5463_ReadByte()
//功    能:	写一个字节
//输入参数:	无
			
//返 回 值:	byte
//备    注:	无
****************************************************************/
static uchar CS5463_ReadByte()
{	
	uchar i,byte=0;
	//CPU口线高低与ADE上信号相反
	CLR_CS54SDI;						//set cs5460 sdi high
	for(i = 0;i < 8;i++)
	{
		SET_CS54SCK;					//set sclk low	
		delay_us(CS54_DELAY);
		CLR_CS54SCK;					//set sclk high
		delay_us(CS54_DELAY);
		byte <<= 1;	
		//		
		//__enable_pio_output(__CS54SDO);	//sd0 为输出		
		//CLR_CS54SDO;					//set sdo high
		//delay_us(0x03);		
		//__enable_pio_input(__CS54SDO);	//sd0 为输入
		//IO0DIR &= 0xfffffdff;			//sd0 为输入
		//
		if(!(0x200 & IO0PIN))			//
		{
			byte |= 0x01;	
		}
		if(i == 6)
		{		
			SET_CS54SDI;				//set cs5460 sdi low
		}
	}			
	CLR_CS54SDI;						//set cs5460 sdi high
	
	return byte;
}
/****************************************************************
//函 数 名:	InitiSPI(void)
//功    能:	初始化SPI
//输入参数:	无
			
//返 回 值:	无
//备    注:	无
****************************************************************/
void InitiSPI(void)
{
    uchar i;
	for(i = 0;i < 6;i++)	   
	{
		CS5463_WriteByte(0xff);
	}
	CS5463_WriteByte(0xfe);
	delay_us(0x10);	
}
/****************************************************************
//函 数 名:	ClearDRDY(void)
//功    能:	清除DRDY标记
//输入参数:	无
			
//返 回 值:	无
//备    注:	无
****************************************************************/
uchar ReadrDRDY(void)
{
	uchar r_status;
	CS5463_WriteByte(RD_STATUS);		
	r_status = CS5463_ReadByte();
	//CS5463_WriteByte(0x00);
	//CS5463_WriteByte(0x01);
	return r_status;	
}
/****************************************************************
//函 数 名:	ClearDRDY(void)
//功    能:	清除DRDY标记
//输入参数:	无
			
//返 回 值:	无
//备    注:	无
****************************************************************/
void ClearDRDY(void)
{
	CS5463_WriteByte(WR_STATUS);		
	CS5463_WriteByte(0x80);
	CS5463_WriteByte(0x00);
	CS5463_WriteByte(0x01);	
}
/****************************************************************
//函 数 名:	WaitCal_Done(void)
//功    能:	等待校准完成
//输入参数:	无
			
//返 回 值:	无
//备    注:	无
****************************************************************/
void WaitCal_Done(void)
{
	uchar tmp = 0;
	CS5463_WriteByte(RD_STATUS);	// read Status Register,judge DRDY
	tmp = CS5463_ReadByte();
	CS5463_ReadByte();
	CS5463_ReadByte();
	while(!(tmp & 0x80))			// 等待校准完毕(DRDY = '1')
	{
		CS5463_WriteByte(RD_STATUS);
		tmp = CS5463_ReadByte();
		CS5463_ReadByte();
		CS5463_ReadByte();
	}
}


⌨️ 快捷键说明

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