想用dac7742y做一个高精度的锯齿波,可发现无波形输出。 按技术文档中的常规电路连接
Vss:-15v,Vcc:+15v,Vdd:5v .
时序 按 技术文档来操作:比如说写时序:
RW = 0;
DATA = XX;
CS = 0;
DELAY();
CS =1;
LDAC = 0;
RW = 1;
LDAC = 1;
LDAC = 0; 我用的单片机每个指令要1us。 求解释,为什么无输出!!
Van Yang:
你好,ldac仅仅是将input reg刷新到dac reg,所以在你完成数据写操作之后不用再置零。你可以尝试读操作,看是否通信成功。谢谢
kindoen stevel1:
按照您的说明我修改了下程序,可还是不行!要是能找到一个关于adc7742官方的样例程序就好了,我是新手,请告诉赐教!!
Van Yang:
你好,首先建议你在初始化da时进行复位操作,再次,尝试进行读操作,看数据是否写入,通过示波器能不能看下你的软件操作时序是否符合要求。最后,这个DA的建立时间是5us。LDAC的下降沿后需要至少5us才有输出。
Bruce Wei:
另外,可以在网上找找seed的开发板带的DAC7744的参考代码
kindoen stevel1:
首先,不知道为什么,我不能对各位高手的答复直接进行回复,就是我点那个回复button没有反应。
我按照你们的提示对程序进行了适当的修改,但只能出部分波形。我用的是stc89c52单片机,这是一个开发板。
修改后的程序如下:
RW = 0;//写
delay();
CS = 0;
delay();
P3 = temp_H;//16位数据的高八位。
P0 = temp_L;//16位数据的低八位。
delay();
CS = 1; //这个是放这里吗?
delay();
LDAC = 0;
delay();
RW = 1;
delay();
LDAC = 1;
delay();
LDAC = 0;
/* (unsigned char) temp_H,temp_L的初值为255,temp_L是从255循环递减到0,当temp_L为0时,temp_H减1, */
此程序对应的波形如下: (图1)
(图2)
现在问题就是波形不稳定,而且线性度太差,还不如8位的DAC出的来的波形好。不知道为什么???
kindoen stevel1:
后来,我修改程序:把数据的低八位(temp_L)(P3口)始终置为0,把数据的高八位(temp_H)(P0口)输入一个uchar变量,让它从255递减到0,循环。也就是如下改动:
delay();
P3 = 0x00; //数据的第八位 temp_L;
P0 = temp_H; //数据的高八位
delay();
出来的波形如下: (图1)
(图2)
波形是干净了些,但是效果离目标还是差得太远。。
按照我这样修改的程序,是不是把16位的DAC当做8位的DAC来使用呢??
怎样才能做出一条高精度的锯齿波呢?
kindoen stevel1:
最早出不来波形,我按照各位高手给的提示,一上电就对DAC7742进行复位操作,然后就可以有波形输出了。
关于 seed的开发板带的DAC7744的参考代码,我正在寻找……………………….
Van Yang:
如果你的指令执行时间是1us,那么并不需要这么多delay。只是LDAC下降沿之后需要delay到DAC的setting time。太多的delay会让你的波形像阶梯波。所以建议你用示波器抓图,按照写时序来对照。DAC的输出会有glitch,需要外部滤波。另外,按照手册Figure10,需要对ref滤波降噪。
kindoen stevel1:
我增加外部滤波 和 对ref滤波降噪后,16位的DAC(DATA从0增加到65535)输出波形如下图:
[(图1)
波形效果还是不是很好哦。这几天头都大了?