电路输出电压一直不对,要么一直输出电源电压,要么输出一些奇怪的电压值。
写入时序是这样:开始、写入0x98、写入0x10、写入数据高位、写入数据低位、停止
qizhou cui:
Vcc 为3V
bo zhang9:
回复 qizhou cui:
您好,对于DAC8571的I2C通信问题始终无法解决,就是说我发完DA芯片地址指令(1001 1000,即0x98)之后,接着应该在第九位将SDA拉高,等着DA芯片的应答,但是问题出现了,发现SDA无法拉高,后来经检查发现是由于DA芯片在第八个脉冲下降沿一到就立即就将SDA拉低了,导致单片机无法在第八个脉冲结束时将SDA拉起,当过了第九个脉冲之后,单片机就可以将SDA拉高了,这是什么原因呢?即使如此,如果我忽略这些,过了第九位之后,我接着发DA的控制指令(0x10),数据的高八位,低八位,转出的电压值也是不正确的。如图,
user3853968:
跪求楼主帮忙,我不知道我的这个DAC8532的芯片地址啊
QQ1:
回复 qizhou cui:
楼主可以分享一下这个芯片的程序吗?写了几天了,不知道问题出在哪里,谢谢!
qizhou cui:
回复 QQ1:
/*写DAC8571*/ void Write8571(unsigned int dat) { GIEH=0; //关中断,防止I2C通讯错误 SEN1 = 1; //启动 CheckSSPIF(); SSP1BUF = 0x98; //器件在I2C总线地址 CheckSSPIF(); if(ACKSTAT1) //判断是否已接收应答 return; SSP1BUF = 0x10; //子地址 CheckSSPIF(); if(ACKSTAT1) return; SSP1BUF = dat>>8; //数据 CheckSSPIF(); if(ACKSTAT1) return; SSP1BUF = dat&0xFF; //数据 CheckSSPIF(); if(ACKSTAT1) return; PEN1 = 1; //停止 CheckSSPIF(); GIEH=1; //开中断,防止I2C通讯错误 }
rui xiao:
回复 qizhou cui:
时序是按照楼主程序上所说的写的,输出电压一直是0呢,不知道还有什么要注意的
rui xiao:
回复 QQ1:
请问解决了吗?我也在做这个,找不到问题原因,电压一直是0
zhuangyuan zhuang:
回复 rui xiao:
我的也是这样 解决了吗 ?谢谢