下面一段是我编写的ADS1251数据采集代码,不知道是否正确,请各位大神指点一二,,,,,
signed long ADS1251_Read(void)
{
unsigned int i;
signed long voltage;
unsigned long lADC=0;
ADS1251_SCLK_0;
//等待开始
while(!(rP2_IN & ADS1251_DOUT));
//24clk:624us
while((rP2_IN & ADS1251_DOUT)); //DRDY 24CLK
//6clk:156us
while(!(rP2_IN & ADS1251_DOUT)); //DRDY 6CLK
Delay(150);//延时150uS 用的3.6864M钟振
for(i = 0; i < 24; i++) //开始读取BIT0-BIT23数据
{
ADS1251_SCLK_1; Delay(1);//延时1uS lADC <<= 1;
if (rP2_IN&ADS1251_DOUT) //ADS1251_DOUT;
lADC++; ADS1251_SCLK_0; Delay(1);
}
if((lADC & 0x800000)) //判断正负数
{
lADC=(lADC-0x000001)^0xffffff;
fushu=1;
}
else
{
fushu=0; } voltage = lADC ;
return voltage;
}
user151383853:
呵呵, 连什么 MCU 都没有说明呀.
软件调试, 还是要靠自己哦
Carter Liu:
读的流程是没有错的
hang yang:
回复 Carter Liu:
ADS1251有的时候读的数据不稳定,所以我想多读取点数据去平均,ADS1251一次最多可以读取多少数据。。。。
Martin:
回复 hang yang:
读取的数据不稳定,大概的差距有多少,最大值跟最小值之间?
你的输入信号时什么? 输入信号跟ADC之间还加了运放么?
Martin:
回复 hang yang:
不太明白 “一次最多可以读取多少数据” 中的 一次 是什么意思?
理论上说,这个取决于你所需要的采样结果输出频率,因为ADS1251可以以20kHz的速率一直在采,你可以拿10个数据做平均,也可以拿1000个数据做平均,根据平均的算法不同,会有不同的数据输出速率和滤波效果,典型的方法如 中值滤波, 滑动滤波 等。。
hang yang:
回复 Martin:
我是一次读取4000个数据,然后在对这4000个数据取平均,我的ADS1251的 参考电平是5V
hang yang:
回复 Martin:
这是我使用的运放输入端的一个电路