微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 求助-dac7742无结果输出?

求助-dac7742无结果输出?

时间:10-02 整理:3721RD 点击:

想用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。   求解释,为什么无输出!

 

 

你好,ldac仅仅是将input reg刷新到dac reg,所以在你完成数据写操作之后不用再置零。你可以尝试读操作,看是否通信成功。谢谢

按照您的说明我修改了下程序,可还是不行!要是能找到一个关于adc7742官方的样例程序就好了,我是新手,请告诉赐教!

你好,首先建议你在初始化da时进行复位操作,再次,尝试进行读操作,看数据是否写入,通过示波器能不能看下你的软件操作时序是否符合要求。最后,这个DA的建立时间是5us。LDAC的下降沿后需要至少5us才有输出。

你好!

请帮忙确认下几个问题

请问你使用什么处理器?

能否用示波器把各个信号抓出来?

你的时序有问题:

应该

RW = 0;

delay

CS = 0;

delay

data = XX;

delay

LDAC = 0;

delay

RW = 1;

delay

LDAC = 1;

delay

LDAC = 0;

另外,可以在网上找找seed的开发板带的DAC7744的参考代码

首先,不知道为什么,我不能对各位高手的答复直接进行回复,就是我点那个回复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出的来的波形好。不知道为什么? 

 

 

后来,我修改程序:把数据的低八位(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来使用呢?

怎样才能做出一条高精度的锯齿波呢?

最早出不来波形,我按照各位高手给的提示,一上电就对DAC7742进行复位操作,然后就可以有波形输出了。

关于 seed的开发板带的DAC7744的参考代码,我正在寻找............................

如果你的指令执行时间是1us,那么并不需要这么多delay。只是LDAC下降沿之后需要delay到DAC的setting time。太多的delay会让你的波形像阶梯波。所以建议你用示波器抓图,按照写时序来对照。DAC的输出会有glitch,需要外部滤波。另外,按照手册Figure10,需要对ref滤波降噪。

我增加外部滤波 和 对ref滤波降噪后,16位的DAC(DATA从0增加到65535)输出波形如下图:

[

 (图1)

波形效果还是不是很好哦。这几天头都大了?

增加滤波之后输出噪声明显得到改善。之所以阶梯波是因为延时太长了。你按照时序修改下delay了。

我现在是发现一个问题,就是DAC7742上面的时序很不准确。今天我改用 了一个1T的单片机。(12M晶振)

 

void dac16_write(void)

 {

        P0 = temp_L;                    //  低八位  

        P3 = temp_H;                   //  高八位 

        LDAC = 0;  LDAC = 1;    

 } //改函数中完全没用延时。

我在主函数中 一上电就复位DAC7742,然后就设置    CS = 0;    WR = 0;,之后就一直调用dac16_write()函数,输出的波形竟然还是和之前的一样。

 观察波形 发现:波形分成15个阶梯,temp_H(数据的高八位)是从00到FF递增,感觉就是每增加16,就产生一个新的阶梯。数据的低八位根本就没作用!

你好,因为除了建立时间是5us,其余都小于100ns,你的指令周期接近1us,所以你删掉delay可能波形不会变,并不说明时序有问题。你能否单独测试低8位操作,将高8bit置0, 看看输出情况。

我试过呀,当我把高八位置零,低八位让它从255递减到0,循环。出来的波形就是一个直流。我开始担心是DAC7742芯片坏了,然后就换了一个DAC7742芯片,可还是一样。 我待会把这种情况下的波形图传上来!

我把高八位设置为0是,输出的波形为 DC10v(实际上是9.98v,有点小误差),波形如下:

当我把 高八位设置为255是,输出DC0v(实际测量为0.4v,这个误差之后在处理),波形如下:

  。 现在就是发现,当高八位为某一个确定的值时,不管第八位怎么改变,输出的波形都不会有变化。竟然还是一个直流?

你好,由于DAC7742没有EVM,所以我也无法来做测试。现在请你帮忙做一个测试,按照手册13页所述。先RW=0,CS=0,LDAC=1,写0x00aa到输入寄存器,观察输出情况。再CS=1,LDAC=0,将输入寄存器刷新至DAC寄存器输出。然后RW=1,CS=0,读一读输入寄存器是多少

还是不行,

          CS = 0;

RW = 0;//写

LDAC = 1;

P0 =0 ;              // 低八位

P3 = 0Xaa;       //             高八位

         delay();              //             这时输出是5v;

//后来在上面的基础上增加以下程序:

                 CS = 1;

                 LDAC = 0;  

                  delay();              //            这时输出为3.67v

//在后来,我增加了数据回读程序,把读出的数据放在数码管上显示。

          RW = 1;

CS = 0;

hda = P3;  //              hda为读出数据的高八位

lda = P0;  //               lda为读出数据的低八位

delay();

                  //数码管上 显示aa00, 表示数据正确写入DAC register。 我后来也改变过写入DAC register的数据,比如写入0xab52,数码管上也能显示 ab52!    要崩溃了,找不出问题。

楼主能不能把你的 hda lda 累加的程序贴出来;

参考:

unsigned int dat = 0;

dat ++;

P3 = dat>>8;

P0 = dat ;

你的问题在于时序,和滤波、电源都没有关系。最好能够用示波器或者逻辑分析仪,对照时序表检查时序。

我在之前的一些帖子中有贴出 详细的程序,我也是怀疑程序的问题,可一直没解决。我的qq是924401092,希望和您讨论下!

还是不行,

           CS = 0;

RW = 0;//写

LDAC = 1;

P0 =0 ;              // 低八位

P3 = 0Xaa;       //             高八位

          delay();              //             这时输出是5v;

//后来在上面的基础上增加以下程序:

                  CS = 1;

                  LDAC = 0; 

                   delay();              //            这时输出为3.67v

//在后来,我增加了数据回读程序,把读出的数据放在数码管上显示。

           RW = 1;

CS = 0;

hda = P3;  //              hda为读出数据的高八位

lda = P0;  //               lda为读出数据的低八位

delay();

                   //数码管上 显示aa00, 表示数据正确写入DAC register。 我后来也改变过写入DAC register的数据,比如写入0xab52,数码管上也能显示 ab52!    要崩溃了,找不出问题。

你好,DAC register被正确写入,结果还是不对应。请问你DAC的购买渠道是什么?

我是在 网上电子商城买的,这个难道会有问题?

你好,请按照正规渠道购买TI芯片,只有正规渠道的芯片才有质量保证。在前期实验可以在TI官网上申请样品,后期可通过TI授权的代理商渠道购买芯片。请参考http://www.ti.com.cn/general/cn/docs/gencontent.tsp?contentId=24957

楼主如果可以用逻辑分析仪把数据时钟读出来,检查下时序,这种问题多是时序的缘故。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top