craftyfox 发表于 2007-6-18 10:30:30

DA转换芯片DAC8571的驱动问题--请用过dac的DX抽空指导一下

while(1) {

IicStartBitSend();//start iic

return_flag = IicSendByteService(0x98);//w-address(0x98),r-address(0x98+1)               

if(1 == return_flag)

return_flag = IicSendByteService(0x10);//control byte--write and loading dac register

else       

return        (return_flag);

if(1 == return_flag)

return_flag = IicSendByteService(wHighData);//M_byte

else

return        (return_flag);

if(1 == return_flag)

return_flag = IicSendByteService(wLowData);//L_byte

else

return        (return_flag);

NOP();

                                       

IicStopBitSend();

}

return_flag是判断8571应答的,为1就有应答,程序断点测试均有应答

8571还有回读功能,我写进去的控制,高,低字节,读出来后均正确,估计还是

设置问题。



8571是iic总线的,我用IO口模拟的

我看了DAC8571的英文资料(找不到中文,不知道理解有没有错误)要求发送三个字节

1。控制字节2。高字节 3。低字节

我写的控制字节为0x10,高低字节随便写,参考电压是2.5V(实测2.47)

程序烧进去后我测量输出电压是5V,晕死,参考电压才2.5V,

搞了很久还是不行,又没有人问只能来这里了,请给个稻草抓一抓吧:)谢谢



下面是DAC8571的PDF文件,和我的硬件连接图,请各位帮忙看看,指正,谢谢

(关于控制字节的选择在PDF文件的18.19两面)./emotion/em098.gif



点击此处打开armok01158237.pdf

http://cache.amobbs.com/bbs_upload782111/files_7/armok01158238.jpg

roseGirl 发表于 2007-6-18 16:59:09

那就把控制字节改成0x20,我也觉得应该是10,不过可以尝试一下

craftyfox 发表于 2007-6-18 17:12:40

呵呵,试过了,晕了^

上网查了一下感觉很少有人用这个芯片

也难怪没人应答了,而且是英文资料更难怪

没人帮忙看了^

wangguoqin1001 发表于 2007-8-24 23:54:25

我今天也调了一天了……用arm s3c2410 + linux调的,从上面直接拉电,VDD和VREF都接+5V,A0和GND都接地,i2c读写都正常,写进去的数据读出来也正常,低功耗、快速模式都试过,控制字写00、10、20、30也都试过,但Vout永远为零……看了TI评估板的电路图,它上面的信号和供电线是分开的,即VDD、VREF、GND、Vout、Vsense和SDA、SCL、A0是完全两路的,不知是否有关,准备后面几天试试看。你要是输出一直为高的话,可以试试使用断电 (power-down) 模式,datasheet上面有,输出应该为低或浮置。

dawnstar 发表于 2008-2-22 20:15:23

其实DAC8571很好用啊,只要时序不错误就很容易调通的。只是SDA和SCL脚别忘了加上拉电阻。IIC的程序有很多可以借鉴的,比如找一个时钟芯片的驱动程序,套用一下就可以啦。

zhenghua867 发表于 2008-7-23 03:57:13

应该是发4字节的吧还有个是地址呀

pldjn 发表于 2008-11-12 09:25:11

刚才在力源发现这个芯片,价格到是便宜,不过为什么INL值是65啊,这是不是说明精度会小很多?只能相当于11位或12位的DA?

想买几片来做下实验,有没有使用成功的朋友?

povoss 发表于 2010-5-1 14:42:27

回复【楼主位】craftyfox 可爱多--好吃塞
-----------------------------------------------------------------------
我遇到的问题是在一个循环中可以控制其输出,但让其固定输出一个电压时并不正确。
不知问什么?

for(i=0;i<65535;i++)//扫描。
{
Set_DAC8571(i);
}


bit Set_DAC8571(uint s)
{
uchar bufh,bufl;
bufh=s>>8;
bufl=s;

iic_start();
iic_send(0x98);////DAC8571器件地址//写命令0x98,读命令0x99.
if(!ack_flag)////没有回应返回0
return 0;
iic_send(0x10);//0x10//DAC8571控制字节//写入的数据更新空寄存器后同时更新DAC的输出。
if(!ack_flag)
return 0;

//for(i=0;i<num;i++)
//{
//iic_send(*s);
iic_send(bufh);
if(!ack_flag)
return 0;

iic_send(bufl);
if(!ack_flag)
return 0;

//s++;
//}
iic_stop();
return 1;
}

hjxiaoxiao 发表于 2013-4-6 15:45:59

大侠craftyfox ,您好 !我看到你在用了dac8571和ads1100    我刚好在做个数控电源 用到这两芯片 ,能麻烦您 发些资料给我不,如何控制他们的程序什么的

hjxiaoxiao 发表于 2013-4-6 15:47:03

大侠craftyfox ,您好 !我看到你在用了dac8571和ads1100    我刚好在做个数控电源 用到这两芯片 ,能麻烦您 发些资料给我不,如何控制他们的程序什么的
qq1518039593    谢谢啦

六月的梦 发表于 2014-7-28 17:56:11

dawnstar 发表于 2008-2-22 20:15
**** 作者被禁止或删除 内容自动屏蔽 ****

可以把代码贴出来借鉴下吗?

六月的梦 发表于 2014-7-28 17:57:31

亲,可以吗?愿意把代码贴出来共享下吗?
页: [1]
查看完整版本: DA转换芯片DAC8571的驱动问题--请用过dac的DX抽空指导一下