想用dac7742y做一个高精度的锯齿波,可发现无波形输出。 按技术文档中的常规电路连接
RW = 0;
DATA = XX;
CS = 0;
DELAY();
CS =1;
LDAC = 0;
RW = 1;
LDAC = 1;
LDAC = 0; 我用的单片机每个指令要1us。 求解释,为什么无输出!!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
首先,不知道为什么,我不能对各位高手的答复直接进行回复,就是我点那个回复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, */
现在问题就是波形不稳定,而且线性度太差,还不如8位的DAC出的来的波形好。不知道为什么???
我现在是发现一个问题,就是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,就产生一个新的阶梯。数据的低八位根本就没作用!
还是不行,
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 ;
你的问题在于时序,和滤波、电源都没有关系。最好能够用示波器或者逻辑分析仪,对照时序表检查时序。
还是不行,
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
楼主如果可以用逻辑分析仪把数据时钟读出来,检查下时序,这种问题多是时序的缘故。