📄 cs5460a.c
字号:
#include <intrins.h>
#include "hardware.h"
#include "uart.h"
#include "lcd1621.h"
#include "at24c02.h"
#define nop() _nop_()
uchar xdata xxxz[3];
extern LcdWriteData(uchar add_, uchar da_);
void delay10ms(void) //延时程序,用于复位或者去抖
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
union weight
{
unsigned long ADlong;
unsigned char ADchar[3];//0低位字节为char[0]往高字节排
}AD;
void WriteCs5460 (unsigned char ByteNum)
{
unsigned char i;
Sclk=0;
ByteNum=ByteNum*8;
for (i=0;i<ByteNum;i++)
{
AD.ADlong=AD.ADlong<<1;
Sdi=CY;
nop();nop();nop();nop();
Sclk=1;
nop();nop();nop();nop();
Sclk=0;
}
}
ulong ReadCs5460 (unsigned char command_)//读入AD.ADlong
{
unsigned char i;
unsigned char j;
AD.ADlong=0;
Sclk=0;
for (i=0;i<8;i++)//写命令,8bit
{
command_=command_<<1;
Sdi=CY;
nop();nop();nop();nop();
Sclk=1;
nop();nop();nop();nop();
Sclk=0;
}
Sdi=1;
for (j=0;j<24;j++)//读24bit数据
{
nop();nop();nop();nop();
Sclk=1;
nop();nop();nop();nop();
AD.ADlong=AD.ADlong<<1;
AD.ADlong=AD.ADlong|Sdo;
Sclk=0;
}
AD.ADlong>>=3;
return (AD.ADlong);
}
/*******************CS5460A初始化******************/
void InitCs5460()
{
AD_Rst=0;
delay10ms();//复位不少于10MS
AD_Rst=1;
AD.ADchar[0]=0xff;
AD.ADchar[1]=0xff;
AD.ADchar[2]=0xff;
AD.ADchar[3]=0xfe;
WriteCs5460(4);//三个同步信号,规范串行口
AD.ADchar[0]=0x40;
AD.ADchar[1]=0x01;//GI=1 电流通道增益=50
AD.ADchar[2]=0x00;
AD.ADchar[3]=0x01;//DCLK=MCLK/1,默认分频16,01=一分频
WriteCs5460(4);
/***************启动*******************/
AD.ADchar[0]=0xe8;
WriteCs5460(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -