|
各位大佬,我用AD1255采集電壓,再通過SPI通信傳給C8T6,但是讀數(shù)結(jié)果一直變化,沒有規(guī)律。想問問會(huì)是什么原因?
ad初始化函數(shù):
void ads1255_init(void)
{
SPI2_CS_RESET;
delay_ms(500);
/**************/
while(DRDY==1);
ads1255_selfcal();
delay_ms(5000);
ads1255_wakeup();
delay_ms(2000);
ads1255_reset();
delay_ms(3000);
ads1255_write_reg(ADS1256_STATUS,0x06); //使用緩沖
ads1255_write_reg(ADS1256_IO,0x00);//AIN0是正的,單端測量
ads1255_write_reg(ADS1256_ADCON,ADS1256_GAIN_1);//時(shí)鐘輸出和傳感器檢測電流源功能關(guān)閉,PGA為1
ads1255_write_reg(ADS1256_DRATE,ADS1256_DRATE_1000SPS);//數(shù)據(jù)速度1000SPS
ads1255_selfcal();
delay_ms(5000);
SPI2_CS_SET;
}
AD讀取函數(shù):
float get_ad24_data(void)
{
SPI2_CS_RESET;
delay_ms(5);
while(DRDY==1);
delay_us(200);
ads1255_write_reg(ADS1256_MUX,ADS1256_MUXP_AIN0); //讀取通道0
ads1255_rdata();
ads1255_rdata();
ads1255_rdata();
delay_ms(5);
retdata=ads1255_read(); //讀取
delay_us(5);
SPI2_CS_SET;
if (retdata>0x7FFFFF) // if MSB=1,
{
retdata -= 0x800000; //do 2's complement
}
return retdata;
}
|
|