ADI 技术
直播中

孙洪山

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

AD7707的采样速度不高

我使用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    {  
          Data=Data<<1;
   Timerus(5);
   SCLK=0;
   Timerus(5);
   Data=Data|DOUT;
   Timerus(5);
   SCLK=1;
   Timerus(5);
   }
  return Data;
}

回帖(1)

杨军

2018-9-30 11:45:04
手册23页"CALIBRATION SEQUENCES"
从self calibration开始到转换完成需要9个ODR对应时间
所以50Hz的配置下每个通道要180ms,不考虑其他任何开销至多能到5.6Hz输出
 
本来就没有哪个寄存器叫"CODE“
举报

更多回帖

发帖
×
20
完善资料,
赚取积分