lansesiyecao 发表于 2011-5-20 13:37:07

AD7689

大家好,有用过AD7689 的吗?我用硬件SPI,外部基准5V,不管设置外部还是内部基准,输出基准都是2.5V(输入0-2.5V,输出0-5V,输入0-5V,输出0-5V),寄存器配置是送进去了,因为变换通道和输入电压,改输入方式,结果都会变化,但是输出的结果总是以2.5V为基准的,望各位大侠帮忙分析下原因~~

sunicecream 发表于 2012-4-23 14:16:02

不知道楼主弄得怎么样了,我一朋友最近也在折腾这玩意好几天没折腾出来,能否分享下经验,呵呵

HZKJ 发表于 2014-5-11 09:51:21

跨年度问题,我也遇到了和LZ同样的问题。。。

HZKJ 发表于 2014-5-11 09:53:07

//---------------------------外部16位ADC初始化-----------------------
void ADC16_INIT(void)
{
   unsigned char a;
   unsignedint adc16_CFG=0xfbdc;//自动扫描0--5通道,外部基准,单极性,GND参考点0xfbdc 6通道        0xf5dc 三通道;0xf3dc 二通道; 0xf1dc 1通道;
   unsignedint b;
   ADC16_CNV=1;
   ADC16_DIN=1;
   ADC16_SCK=0;
   ADC16_SDO=1;
   ADC16_CNV=0;
   delay(2);
   ADC16_CNV=1;
   delay(3);
   ADC16_CNV=0;
   delay(1);
   for(a=16;a>0;a--)
   {
      b=adc16_CFG & 0x8000;
          adc16_CFG<<=1;
          if(b)
          {        ADC16_DIN=1;}
          else
          {        ADC16_DIN=0;}
          ADC16_SCK=0;           //
          delay(1);
          ADC16_SCK=1;          //上升沿写入CFG
          delay(1);
   }
   ADC16_DIN=0;        //禁止再次配置CFG

//   for(a=0;a<2;a++)           //转换1次哑转换
   {
   ADC16_CNV=0;       
   delay(1);
   ADC16_CNV=1;
   delay(3);
       ADC16_CNV=0;
       delay(1);
       for(b=0;b<16;b++)        //下降沿输出数据
       {
                   ADC16_SCK=1;
                delay(1);
                ADC16_SCK=0;
                delay(1);
       }

   }

   ADC16_SCK=0;

}

HZKJ 发表于 2014-5-11 09:55:04

上面是我的初始化代码,配置CFG寄存器,请高手看看,关于基准电压的机关在哪里??
页: [1]
查看完整版本: AD7689