📄 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 + -