标题: 关于AD1255读数大小与输入成反比的问题 [打印本页]

作者: hc2002    时间: 2024-7-23 22:32
标题: 关于AD1255读数大小与输入成反比的问题
各位大佬,我用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;
}


作者: xo37    时间: 2024-7-24 07:06
如果是差分信号,成反比也正常,可以试着把电压输入线对调下;
实际应用中,是±都有的,看你怎么处理了
作者: hc2002    时间: 2024-7-24 15:01
xo37 发表于 2024-7-24 07:06
如果是差分信号,成反比也正常,可以试着把电压输入线对调下;
实际应用中,是±都有的,看你怎么处理了

只用了一个输入口呀,不是差分信号
作者: ag26259    时间: 2024-7-31 09:53
你好,我看了一下,后面的判断正负赋值写错了,你写了
  1. sum -= 0x800000;                                                       // do 2's complement
复制代码

根据datasheet中的23页内容,正确应该是
  1. if (sum>0x7FFFFF)           // if MSB=1,
  2.         {
  3.                 sum -= 0x1000000;       // do 2's complement
  4.         }
复制代码

同样的,根据datasheet中的21页部分,里面有说到读取数据的标准流程,你前面的while(ADS1256_DRDY);只有一次,但是后面加了一个1ms的延时,你应该在读数据前再次等待while(ADS1256_DRDY);,再去执行ADS1256_CMD_RDATA读数据,否则你读的数据已经是不稳定的了,你应该按照相应的操作去写,这样子才可以发挥ADS1255的性能。
作者: hc2002    时间: 2024-7-31 17:20
ag26259 发表于 2024-7-31 09:53
你好,我看了一下,后面的判断正负赋值写错了,你写了

根据datasheet中的23页内容,正确应该是

好的,十分感谢!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1