已回答假定已回答

AD7606采集到的的数据一直是0xFFFF或0x0000,BUSY信号为周期性方波信号

Travel 在 2015-3-11 詢問的問題
最後回覆由Travel於2015-9-15提供

数据采集系统采用AD7606,主控制器用的是德州仪器的F2812,CONVESTA和CONVESTB连在一起,设计的是一上电就硬件复位,没采用过采样,转换开始后,延迟10us,开始读取数据,代码是仿照官网上提供的示例代码,通过I/O口来模仿时序读取数据。模拟输入不接时,8个通道有时读到的数据是0xFFFF,有时读到的数据是0x0000,模拟输入的第一个通道接5V电压时,8个通道读到的数据都还是0xFFFF或0x0000,不知道什么原因。用示波器测BUSY信号,能观测到周期性方波信号,说明AD7606已经启动转换,就是读取的数据不对。这个数据采集系统是扩展板,通过扁平电缆和主板连接,扁平电缆有20cm长。

代码如下:

#include "DSP281x_Device.h"

#include "DSP281x_Examples.h"

int16 i;

int16 k;

int16 TempA;

int16 AD7606Data1[8];

void main()

{

InitSysCtrl();  //初始化系统函数

  DINT;

  IER = 0x0000;   //禁止CPU中断

  IFR = 0x0000;   //清除CPU中断标志

InitPieCtrl();  //初始化PIE控制寄存器

  InitPieVectTable();  //初始化PIE中断向量表

EINT; 

InitGpio(); //初始化GPIO口   

while(1)

{

GpioDataRegs.GPFCLEAR.bit.GPIOF12 = 1;

DELAY_US(1);

GpioDataRegs.GPFSET.bit.GPIOF12 = 1;//启动转换

DELAY_US(10);

GpioDataRegs.GPFCLEAR.bit.GPIOF10 = 1;

GpioDataRegs.GPFCLEAR.bit.GPIOF11 = 1;//CS片选

DELAY_US(1);

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

{

    TempA=0;

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

     {

   GpioDataRegs.GPFCLEAR.bit.GPIOF8 = 1;

   TempA=(TempA<<1)+GpioDataRegs.GPFDAT.bit.GPIOF13 ;

   GpioDataRegs.GPFSET.bit.GPIOF8 = 1;

  }

     AD7606Data1[i]=TempA;

}

GpioDataRegs.GPFSET.bit.GPIOF10 = 1;

GpioDataRegs.GPFSET.bit.GPIOF11 = 1;//CS取消片选

}

}

电路图如下:

AD7606_1.pngAD7606_2.png复位电路.png

复位电路

希望专业人士来解答,困扰好久了

結果