📄 cs5532software.txt
字号:
/***************************************************/
// CS5532 Subprogram part area
//CS5532 写入一个字节
/***************************************************/
void CS5532_WRITE_ONE_BYTE(uchar CS5532_DAT)
{
uchar CS5532_WRITE1;
CS5532_CS=0;
CS5532_SCLK=0;
_nop_();
for(CS5532_WRITE1=0;CS5532_WRITE1<8;CS5532_WRITE1++)
{
if(CS5532_DAT>=0x80)
CS5532_SDI=1;
else
CS5532_SDI=0;
_nop_();
CS5532_SCLK=1;
_nop_();
CS5532_SCLK=0;
_nop_();
CS5532_DAT<<=1;
}
CS5532_SDI=0;
}
/************************************************************/
//CS5532 读一个字节
/************************************************************/
uchar CS5532_READ_ONE_BYTE(void)
{
uchar CS5532_READ1,CS5532_READ2;
CS5532_SCLK=0;
for(CS5532_READ1=0;CS5532_READ1<8;CS5532_READ1++)
{
CS5532_READ2<<=1;
CS5532_SCLK=1;
_nop_();
CS5532_SCLK=0;
_nop_();
if(CS5532_SDO==1)
CS5532_READ2|=1;
}
return(CS5532_READ2);
}
/******************************************************/
//CS5532初始化子程序
/******************************************************/
void CS5532_INITIAL(void)
{
uchar CS5532_i;
EX1=0;
CS5532_SDO=1;
CS5532_SDI=0;
CS5532_SCLK=0;
CS5532_CS=0;
CS5532_SDI=1;
_nop_();
for(CS5532_i=0;CS5532_i<135;CS5532_i++) //sending the 16 bytes sync1 and 1 byte sync0
{
CS5532_SCLK=1;
_nop_();
CS5532_SCLK=0;
_nop_();
}
CS5532_SDI=0;
_nop_();
CS5532_SCLK=1;
_nop_();
CS5532_SCLK=0;
_nop_();
CS5532_CS=1;
//CS5532 复位
CS5532_WRITE_ONE_BYTE(0x03); //reset the cs5532 namely set RS=1
CS5532_WRITE_ONE_BYTE(0x22); //RS=1,RESET the cs5532 and 1<Vref<2.5
CS5532_WRITE_ONE_BYTE(0x00);
CS5532_WRITE_ONE_BYTE(0x00);
CS5532_WRITE_ONE_BYTE(0x00);
DELAY_TIMES(0xAA); //delay about 20ms
//读CS5532配置寄存器
CS5532_WRITE_ONE_BYTE(0x0B); //read the RV bit and set RV=0
CS5532_READ_ONE_BYTE();
CS5532_READ_ONE_BYTE();
CS5532_READ_ONE_BYTE();
CS5532_READ_ONE_BYTE();
DELAY_TIMES(0xAA); //delay about 20ms
//-------------------------------------------------------------------
//AIN1 通道1电阻自校准设置
//设置CS5532配置寄存器
CS5532_WRITE_ONE_BYTE(0x03); //set the cs5532 system configuration register
CS5532_WRITE_ONE_BYTE(0x02); // 1V < Vref < 2.5V
CS5532_WRITE_ONE_BYTE(0x10); //FRS=0; OGS=1;
CS5532_WRITE_ONE_BYTE(0x00);
CS5532_WRITE_ONE_BYTE(0x00);
DELAY_TIMES(0xAA); //delay about 20ms
//设置通道寄存器设为低速率
CS5532_WRITE_ONE_BYTE(0x05); //channel 1 setup register
CS5532_WRITE_ONE_BYTE(0x02);//gain 1,7.5sps
CS5532_WRITE_ONE_BYTE(0x00); // bipolar performing
CS5532_WRITE_ONE_BYTE(0x02);//gain4 7.5sps using channel 1
CS5532_WRITE_ONE_BYTE(0x00);//setup 1
DELAY_TIMES(0xAA); //delay about 20ms
/*
//写偏移自校准值
CS5532_WRITE_ONE_BYTE(0x01); //channel 1 setup register
CS5532_WRITE_ONE_BYTE(Mediandata[2].Four_1byte[0]);
CS5532_WRITE_ONE_BYTE(Mediandata[2].Four_1byte[1]);
CS5532_WRITE_ONE_BYTE(Mediandata[2].Four_1byte[2]);
CS5532_WRITE_ONE_BYTE(Mediandata[2].Four_1byte[3]);
DELAY_TIMES(0xAA); //delay about 20ms
//写偏移自增益值
CS5532_WRITE_ONE_BYTE(0x02); //channel 1 setup register
CS5532_WRITE_ONE_BYTE(Tempdata.Four_1byte[0]);
CS5532_WRITE_ONE_BYTE(Tempdata.Four_1byte[1]);
CS5532_WRITE_ONE_BYTE(Tempdata.Four_1byte[2]);
CS5532_WRITE_ONE_BYTE(Tempdata.Four_1byte[3]);
DELAY_TIMES(0xAA); //delay about 20ms
*/
//偏移寄存器自校准self calibration of offset
CS5532_WRITE_ONE_BYTE(0x81);//using offset setup register 1
CS5532_SDO=1;
while(CS5532_SDO==1);
DELAY_TIMES(0xFF);
DELAY_TIMES(0xFF);
//增益寄存器自校准self calibration of gain
CS5532_WRITE_ONE_BYTE(0x82);//using gain setup register 1
CS5532_SDO=1;
while(CS5532_SDO==1);
DELAY_TIMES(0xFF);
DELAY_TIMES(0xFF);
//-----------------------------------------------------------------------
/*
//AIN2 通道2电压自校准设置
//设置CS5532配置寄存器IS=1,SIGNAL INPUT SHORT
CS5532_WRITE_ONE_BYTE(0x03); //set the cs5532 system configuration register
CS5532_WRITE_ONE_BYTE(0x0A); // 1V < Vref < 2.5V
CS5532_WRITE_ONE_BYTE(0x00); //IS=1
CS5532_WRITE_ONE_BYTE(0x00);
CS5532_WRITE_ONE_BYTE(0x00);
DELAY_TIMES(0xAA); //delay about 20ms
*/
/*
//设置电压通道寄存器设为低速率
CS5532_WRITE_ONE_BYTE(0x15); //channel 2 setup register
CS5532_WRITE_ONE_BYTE(0x72);//gain 64,7.5sps
CS5532_WRITE_ONE_BYTE(0x01); // bipolar performing
CS5532_WRITE_ONE_BYTE(0x72);
CS5532_WRITE_ONE_BYTE(0x01);
DELAY_TIMES(0xAA); //delay about 20ms
*/
//设置通道寄存器设为低速率
CS5532_WRITE_ONE_BYTE(0x15); //channel 2 setup register
CS5532_WRITE_ONE_BYTE(0x72);//gain 64,7.5sps setup3
CS5532_WRITE_ONE_BYTE(0x01); // bipolar performing
CS5532_WRITE_ONE_BYTE(0x5A); //setup4,gain8,7.5sps,using channel 2 gain or offset
CS5532_WRITE_ONE_BYTE(0x01); //channel 2
DELAY_TIMES(0xAA); //delay about 20ms
//写电压系统偏移校准值
CS5532_WRITE_ONE_BYTE(0x11); //channel 2 setup register
CS5532_WRITE_ONE_BYTE(Mediandata[0].Four_1byte[0]);
CS5532_WRITE_ONE_BYTE(Mediandata[0].Four_1byte[1]);
CS5532_WRITE_ONE_BYTE(Mediandata[0].Four_1byte[2]);
CS5532_WRITE_ONE_BYTE(Mediandata[0].Four_1byte[3]);
DELAY_TIMES(0xAA); //delay about 20ms
//写电压系统增益校准值
CS5532_WRITE_ONE_BYTE(0x22); //channel 2 setup register
CS5532_WRITE_ONE_BYTE(Mediandata[1].Four_1byte[0]);
CS5532_WRITE_ONE_BYTE(Mediandata[1].Four_1byte[1]);
CS5532_WRITE_ONE_BYTE(Mediandata[1].Four_1byte[2]);
CS5532_WRITE_ONE_BYTE(Mediandata[1].Four_1byte[3]);
DELAY_TIMES(0xAA); //delay about 20ms
/*
//设置电压通道寄存器设为低速率
CS5532_WRITE_ONE_BYTE(0x15); //channel 2 setup register
CS5532_WRITE_ONE_BYTE(0x72);//gain 64,7.5sps
CS5532_WRITE_ONE_BYTE(0x01); // bipolar performing
CS5532_WRITE_ONE_BYTE(0x72);
CS5532_WRITE_ONE_BYTE(0x01);
DELAY_TIMES(0xAA); //delay about 20ms
*/
/*
//偏移寄存器自校准self calibration of offset
CS5532_WRITE_ONE_BYTE(0x91);//using offset setup register 3
CS5532_SDO=1;
while(CS5532_SDO==1);
DELAY_TIMES(0xFF);
//设置CS5532配置寄存器IS=0,SIGNAL INPUT NORMAL OPERATION
CS5532_WRITE_ONE_BYTE(0x03); //set the cs5532 system configuration register
CS5532_WRITE_ONE_BYTE(0x02); // 1V < Vref < 2.5V
CS5532_WRITE_ONE_BYTE(0x00); //IS=0
CS5532_WRITE_ONE_BYTE(0x00);
CS5532_WRITE_ONE_BYTE(0x00);
DELAY_TIMES(0xAA); //delay about 20ms
//增益寄存器自校准self calibration of gain
CS5532_WRITE_ONE_BYTE(0x92);//using gain setup register 3
CS5532_SDO=1;
while(CS5532_SDO==1);
DELAY_TIMES(0xFF);
*/
//-------------------------------------------------------------------
/*
//设置通道寄存器
CS5532_WRITE_ONE_BYTE(0x15); //write channel 2 setup register
CS5532_WRITE_ONE_BYTE(0x70);//gain 64,120 sps
CS5532_WRITE_ONE_BYTE(0x01); //bipolar performing
CS5532_WRITE_ONE_BYTE(0x70);
CS5532_WRITE_ONE_BYTE(0x01);
DELAY_TIMES(0xAA); //delay about 20ms
*/
//启动转换
CS5532_WRITE_ONE_BYTE(0xD0);//performing successive conversion setup 3
// CS5532_WRITE_ONE_BYTE(0xD8);//performing successive conversion setup 4
CS5532_CS=0;
CS5532_SDO=1;
DELAY_TIMES(0xFF);
DELAY_TIMES(0xFF);
//DELAY_TIMES(0xFF);
//PX1=1; //set the external interrupt 1 highest prior
//开中断1
IT1=1; //set the external interrupt 1 edge trigger mode
EX1=1;
EA=1;
//IE=0x84; //external interrupt 1 turn on
}
/************************************************************/
//AIN1 通道校准
/************************************************************/
void CS5532_AIN1_CALIBRATION(void)
{
if(CS5532_self_calibration_0ffset_flag||CS5532_self_calibration_gain_flag)
{
//设置通道寄存器设为低速率
CS5532_WRITE_ONE_BYTE(0x05); //channel 1 setup register
CS5532_WRITE_ONE_BYTE(0x02);//gain 1,7.5sps
CS5532_WRITE_ONE_BYTE(0x00); // bipolar performing
CS5532_WRITE_ONE_BYTE(0x02);
CS5532_WRITE_ONE_BYTE(0x00);
DELAY_TIMES(0xAA); //delay about 20ms
//偏移寄存器自校准self calibration of offset
CS5532_WRITE_ONE_BYTE(0x81);//using offset setup register 1
CS5532_SDO=1;
while(CS5532_SDO==1);
DELAY_TIMES(0xFF);
//增益寄存器自校准self calibration of gain
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -