我使用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 Calibra
tion*/
}
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;
}