电路设计论坛
直播中

王飞云

7年用户 1504经验值
私信 关注
[问答]

AD7606采集到的的数据一直是0xFFFF或0x0000是什么原因?

数据采集系统采用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=TempA;
  }
GpioDataRegs.GPFSET.bit.GPIOF10 = 1;
  GpioDataRegs.GPFSET.bit.GPIOF11 = 1;//CS取消片选
}
}
电路图如下:

复位电路
希望专业人士来解答,困扰好久了

                                                               





更多回帖

×
20
完善资料,
赚取积分