Post Go back to editing

AD7684读取后转换成电压的问题。

按照这幅图,差分输入端的最大相差VREF/2的电压。

是不是应该最后把读取的AD值换算成电压值的公式应该是===》 AD/2^16*VREF/2才对?

我读出来的AD值和我用示波器读出来的电压值相差一半。我用的公式是AD/2^16*VREF;

究竟是哪个正确呢?AD/2^16*VREF ?AD/2^16*VREF/2?

如果是AD/2^16*VREF 正确的话,那又是哪出问题了呢?

求解答下。谢谢!

Parents
  • 关于这个AD7684的电压转换问题,有没有具体的公式啊?最近被这个搞的头都大了。无论怎么搞都不行;下面是我的代码,麻烦高手赐教。谢谢!

    float read_ad7684(void)

    {

      uint read_addata=0,lv;

      uchar i;

      float date;

      ad7684_cs=0;//拉低片选

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      for(i=0;i<5;i++)

      {

      ad7684_clk=1;//5个时钟信号

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_clk=0;//5个时钟信号

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      }

      for(i=0;i<16;i++)

      {

      ad7684_clk=1;//5个时钟信号

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_clk=0;//5个时钟信号

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      read_addata=read_addata<<1;

      lv=ad7684_data;

      if(1==lv)

      {

      read_addata |= 0x0001;

      }

      }

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_clk=1;//停止读

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_clk=0;//停止读

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_cs=1;//停止读

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      date=(float)(read_addata*2.5)/65536.00;

      return(date);

    }

Reply
  • 关于这个AD7684的电压转换问题,有没有具体的公式啊?最近被这个搞的头都大了。无论怎么搞都不行;下面是我的代码,麻烦高手赐教。谢谢!

    float read_ad7684(void)

    {

      uint read_addata=0,lv;

      uchar i;

      float date;

      ad7684_cs=0;//拉低片选

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      for(i=0;i<5;i++)

      {

      ad7684_clk=1;//5个时钟信号

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_clk=0;//5个时钟信号

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      }

      for(i=0;i<16;i++)

      {

      ad7684_clk=1;//5个时钟信号

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_clk=0;//5个时钟信号

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      read_addata=read_addata<<1;

      lv=ad7684_data;

      if(1==lv)

      {

      read_addata |= 0x0001;

      }

      }

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_clk=1;//停止读

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_clk=0;//停止读

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      ad7684_cs=1;//停止读

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      date=(float)(read_addata*2.5)/65536.00;

      return(date);

    }

Children
No Data