我将TLV5614与51单片机连接,出现了这样的情况:通道之间可以切换,但是第一次开A通道,第二次开B通道,但是第二次开B通道的时候,A通道依然保持第一次写入的数据,这样就不正常了。断电后,A通道数据才能清零,B通道依然保持写入的数据,这样又正常了。但是有时候的数据与给的命令会相差50个码字的样子,有时候又是正常的。C、D通道的情况也是这样的,我将(PD非)脚接5V,整个系统5V供电,REF+也接了5V,REF-接地,其他控制引脚都接51的IO口,这是怎么回事呢?很纠结,难道是REF+不能接那么高的参考电压,数据手册上写的是Max=Vcc-1.5V,希望有人可以给我解解惑!
Van Yang:
你好,第一,正常工作的最大参考电压应该是VCC-1.5V。第二,DAC内部有一个数据锁存器,所以即使通道切换,原有通道的数据也会保持。
peng liao:
回复 Van Yang:
谢谢您的回答,我认为它的参考电压最大只能是Vcc-1.5V,应该是保证输出的数据不大于4095吧,再者其输出的电压最大也不能超过Vcc的,现在的问题是输出不稳定,有时候准确,有时候又相差了50个码字,您知道这是为什么吗?
peng liao:
回复 peng liao:
还有就是第一次向A通道写数据,第二次再向A通道写不同的数据,输出保持第一次的数据,断电再上电后,输出的又是第二次的数据了,我在想是不是那个PD脚也应该接到单片机上,给予控制呢?
Van Yang:
回复 peng liao:
你好,请问你的LDAC脚怎么处理的,LDAC为高,数据只是进锁存寄存器,DAC并不刷新。PD是低功耗控制,如果你不需要DA进入低功耗模式,可以上拉。
Van Yang:
回复 peng liao:
你好,参考电压能接受的最大正常工作电压是VCC-1.5V。你输入码子4095只是输出REF而已。输出不稳定,可能是因为你的电路噪声。
peng liao:
回复 Van Yang:
您好!这是驱动程序,您帮我看看好吗?谢谢了
sbit ldac=P3^3;sbit din=P3^4;sbit sclk5614=P3^5;sbit cs=P3^6;sbit fs=P3^7;
void Write_tlv5614_dat(uchar port,uint dat) //2*Vref*code/4096{ uint com; uchar i; ldac=0; cs=1; cs=0; switch(port) //通道选择0-A 1-B 2-C 3-D { case 0:com=dat|0x1000;break; case 1:com=dat|0x5000;break; case 2:com=dat|0x9000;break; case 3:com=dat|0xd000;break; default :break; } fs=1; fs=0; for(i=16;i>0;i–) { fs=1; din=(bit)(com&0x8000); fs=0; sclk5614=1; sclk5614=0; com<<=1; } ldac=1; fs=1; cs=1;}