求助,dac8760一直没输出,原因
最近,我和同学一直在调dac8760,但一直没输出,而且ALARM引脚一直输出高电平。不知道是什么原因,求解答。谢谢
在没有通电的情况下,先量一下电阻,看看短路没有。然后开电后量一下电源电压是否正常。然后看看reset,Powerdown等管脚的状态
楼主是根据这个参考设计的吗?
DAC8760,一直没输出。。
建议:
1.首先检查下程序有没有问题,可以通过软件仿真或者JTAG等工具仿真。
2.这个一般都是软件问题。重点检查下时序。
3.再检查下硬件芯片的输入引脚是否是你预期的输入。。
ALARM'管脚是报警管脚,当开路、过温、超时时候才输出低电平。你这个ALARM'为高电平说明电路处于正常状态。
请楼主依次检查以下相关地方:
1:确保硬件电路是手册44页Figure91的链接方法。(或者相似的连接方式)
2:根据手册12页写入时序,检查写入时序是否正确。
3:检查寄存器是否配置正确。
4:根据手册13页读取时序,编写读取函数,写入寄存器之后,看看能不能读取出来一样的数值。确保数据正确的写入。
以上就是检查的方法。我基本都是按照以上几个步骤检查的,一般都能检查出来问题的。
是按照这个图设计的。现在可以输出了,不过这误差那是相当大,而且每个值输出都不成比例,请问您知道是哪里影响到吗,最大输出电流也是错了
是按照这个图设计的。现在可以输出了,不过这误差那是相当大,而且每个值输出都不成比例,请问您知道是哪里影响到吗,最大输出电流也是错了
你这个给的信息太少,不是很好分析。你比可以按照以下步骤再次检查一下:
1:写入寄存器之后,在读取一下,看看读取出来的数值一样不一样。确定一下数据确实写入了寄存器。
2:测量一组数据:分别把数字量按照一定步长写入DAC,比如让ADC输出从0x0000到0xffff一直循环。把VOUT接入到示波器上,正常情况下应该是锯齿波,也就是线性上升,达到最大值之后重新降为0.如果不是这样,把波形发上来,进一步查找原因。
谢谢你的建议。这个是读函数:读不回来,正在还在调试中,你能帮忙看看。谢谢。
uint DAC8760_read_byte(unsigned char com, unsigned int dat)
{
uint data=0;
uchar i;
DAC8760_write_byte(com,dat);
DAC8760_DIN_0;
DAC8760_LATCH_0;
DAC8760_SCLK_0;
for(i=8;i>0;i--)
{
DAC8760_SCLK_1;
DAC8760_SCLK_0;
}
for(i=16;i>0;i--)
{
DAC8760_SCLK_1;
if(DAC8760_SDO)
{
data|=0x01;
}
DAC8760_SCLK_0;
//DAC8760_delay(2);
data<<=1;
}
DAC8760_LATCH_1;
return data;
}
你好,我现在遇到了同样的情况!请问您是怎么解决的!谢谢
配置寄存器不要配置
http://www.deyisupport.com/question_answer/analog/data_converters/f/58/t/67495.aspx
配置寄存器不配置就可以
楼主 你能把你做得读函数发给我吗 我现在在搞DAC7750思路不太清晰,希望能参考一下 。
抱歉,我只写了写函数,读函数没有
那你的最终的DAC原理图和写程序就是你发在帖子上的吗?
好像不是,加Q805854169
你好 那你能把你的测试程序和原理图截个图发我看看吗? QQ:813136083 求帮助! 谢谢!
你好,我最近在用DAC8750调试,也是一直没有输出,你的现在可以输出了吗?
void DAC8750_Config1(void)//配置DAC8750寄存器
{
DAC8750_Write1(0x56,0x0001);// 0000 0000 0000 0001复位所有寄存器
DAC8750_Write1(0x55,0x100d);//0001 0000 0000 1101 DB12输出使能,菊花链操作使能,电流4~20ma,控制
DAC8750_Write1(0x57,0x0000);//0000 0000 0000 0000 配置寄存器
DAC8750_Write1(0x01,0xfdff);// 写DAC数据寄存器,输出0
DAC8750_Write1(0x01,0);// 写DAC数据寄存器,输出0
}
void DAC8750_Write1(uchar add,uint dat)//写第1片DAC 8位地址+16位数据 写DAC8750寄存器
{
uchar i;
uchar h_8bit;//高8位
uchar l_8bit;//低8位
unsigned long data;
h_8bit=(dat>>8)&0x00ff;//取高8位数据
l_8bit=dat&0x00ff;//取低8位数据
data=(((unsigned long)add)<<16)|(dat);
LAT_0;
DAC8750_SCL0;
for(i=0;i<24;i++)//传送24位数据
{
//DAC8750_SCL0;
if(data&0x800000)
{
DAC8750_DIN1;//写1
}
else
{
DAC8750_DIN0;//写0
}
DAC8750_SCL0;
DAC8750_SCL1;
//DAC8750_SCL0;
data<<=1;
}
//DAC8750_SCL0;
LAT_1;
}
您帮我看看是咋回事吗?谢谢,
你好,我想问一下你,你的DAC8760现在可以输出了吗?能参考一下你的程序吗?我的还是不行,谢谢了。
加我Q 805854169
hi,你的能输出了么?
请问参考设计里面的隔离芯片 ISO7631FC 是必需的吗?
你好,测试的时候,不是必须的。
不是必须的,昨儿还能输出电流,今儿输出不了了,抓了一下时序都没问题的,很奇怪的问题,我准备换成DAC8760这个芯片试一下。。。。。。。
你重新换个芯片试一下。