各位大佬,我用ADS1255讀數,結果讀數結果與輸入電壓的大小成反比,線性關系是滿足的,檢查了高位和低位讀取順序沒有問題,不知道會是什么原因呢?參考電壓2.5V,輸入電壓0-2.5V,PGA設置為1.
讀取函數如下:
signed int ADS1256ReadData(unsigned char channel)
{
unsigned int sum=0,sum1,sum2,sum3=0;
while(ADS1256_DRDY); //當ADS1256_DRDY為低時才能寫寄存器
ADS1256WREG(ADS1256_MUX,channel); //設置通道
CS_0();
SPI_WriteByte(ADS1256_CMD_SYNC);
SPI_WriteByte(ADS1256_CMD_WAKEUP);
SPI_WriteByte(ADS1256_CMD_RDATA);
delay_us(1000);
sum1 = (SPI_WriteByte(0xff) << 16);
sum2 = (SPI_WriteByte(0xff) << 8);
sum3 = SPI_WriteByte(0xff);
sum = sum1+sum2+sum3;
CS_1();
if (sum>0x7FFFFF) // if MSB=1,
{
sum -= 0x800000; // do 2's complement
}
sum = sum*0.000596;//求電壓 單位mv
return sum;
}
|