我在使用AD5424做幅值转换电路的时候,VREF端接入的是一个1KHz的正弦信号,可是无论怎么改变DB0-DB7,在AD8664的输出端总是+5V?电路图如下:
您好,您的问题已经提交给ADI相关专家,将邀请专家尽快回答您的问题。谢谢!
您好,我的AD8664应该是没问题的,因为一片AD8664的其他三个运放用来做别的,没有问题。时序图我没法测量,现在把我的程序放在下面,希望您们可以帮我看一下:
/****************AD5424幅值调整******************/
DDRC |= _BV(CS) | BV(RW); //CS,RW定义成输出
//Con_Sig_dir = 0xFF;
DDRD = 0xFF;
PORTC |= _BV(CS) | BV(RW);
PORTC &= ~(_BV(RW_)); //CS,RW_下降沿
PORTC &= ~(_BV(CS)) ;
//Con_Sig = attenuation;
PORTD = attenuation;
delayus(1);
PORTC |= _BV(CS);
PORTC |= BV(RW); //CS,RW_上升沿
//Con_Sig_dir = 0x00;
DDRD = 0x00;
delayus(1);
PORTC |= BV(RW); //读操作
PORTC &= ~(_BV(CS)) ; //CS下降沿
delayus(1);
asm("nop");
atten = PIND;
PORTC |= _BV(CS); //CS上升沿
盛振红
从您的原理图连接上没有看出什么问题。您可以先尝试单独测量一下AD8664的功能是否正确?其次,您是否检查过写数据的时序是否正确?如果可以的话,请将写数据的时序上传一下(R/W、CS和DATA的波形,用示波器采集下来),我们帮您检查一下。
我不知道怎么用示波器测试CS,RW和DATA的波形,也没有查到方法,您能给点建议吗?或者能给个参考代码吗?谢谢您啦!
盛振红
很难帮您验证代码。通常最直观的的调试方法就是需要用示波器将CS,R/W和DATA的波形采集下来,然后和数据手册的时序对照。如果这些信号的时序不正确的话,芯片是不会被正确的写入的数值的。