已回答假定已回答

AD7707的采样速度问题

joly314 在 2015-5-12 詢問的問題
最後回覆由cdeng於2015-5-15提供

我使用AD7707设计产品,晶振4.9152M,使用模拟开关8通道切换,每通道工作在50HZ,但是每各通道的增益不同,目前已经能读到数据,但是在速度方面不高,115200的时候只能4次/秒,但是按照计算115200BPS,按照每次发送8个字节指令读取,返回7个数据指令,应该可以做到10次/秒,我不是很清楚问题出在哪,我如果设置采集速度为250次/秒,也只能到5次左右,另外我没有找的AD7707哪地方有个CODE寄存器,附件是读写和设置程序,请帮我看下是什么问题,以下是设置程序:

void AD_AINT3(void)   //通道3初始化
{  WriteToReg_AD7707(0x23); /*激活通道 AIN3/HICOM, 下一步操作为写 Clock Register*/
   WriteToReg_AD7707(0x18); /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
   WriteToReg_AD7707(0x13); /*激活通道 AIN3/HICOM, 下一步操作为写 Setup Register*/
   WriteToReg_AD7707(0x48); /*Gain = 2, Bipolar差分模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/
}

uint  Readata(uchar benift,uchar channel)//切换通道并读取数据

     uint addata;
     Init_AD7707();
     WriteToReg_AD7707(0x13); //激活通道 AIN3/HICOM, 下一步操作为写 Setup Register
     WriteToReg_AD7707(benift);//Gain可选, Bipolar差分模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration
     channelchoice(channel);
     WriteToReg_AD7707(0x3B); //激活通道 AIN3/HICOM, 下一步操作为读Data Register
     addata=Read_AD7707(16);
     return addata;
}

uint Read_AD7707(uchar number) /*读取AD7707数据*/
{
  uchar i;
  uint Data=0;
  while(DRDY==1);
  for(i=0;i<number;i++)
   { 
          Data=Data<<1;
   Timerus(5);
   SCLK=0;
   Timerus(5);
   Data=Data|DOUT;
   Timerus(5);
   SCLK=1;
   Timerus(5);
   }
  return Data;

結果