用stm8采集ads1230数据老是不准,波动很大,但是网上说这个可以精确到0.01g。
主要代码如下:
AD_DATA=0;
for(i=0;i<20;i++)
{
ADS_CLK_H(); //SCLK=1;
Delay(150);
ADS_CLK_L(); //SCLK=0;
if(ADS_DATA_HI)
{
AD_DATA=(AD_DATA<<1)+1;
}
else
{
AD_DATA=AD_DATA<<1;
}
}
Delay(150);
}
后来知道AD的数据准确的有17.5位,于是增加了下面代码
if(i < 17)
{
if(ADS_DATA_HI)
{
// AD_DATA|=0x01;
AD_DATA=(AD_DATA<<1)+1;
}
else
{
AD_DATA=AD_DATA<<1;
}
}
即忽略掉后面的三位(不稳定的)