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

📄 cs5532software.txt

📁 串行A/D CS5532的程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
/***************************************************/
// 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 + -