初次接触这种外界的DAC模块,DAC7573的数据手册关于LDAC的讲解看的不太明白,麻烦哪位用过的大神给小弟说明一下。
DAC7573一直没输出,在研究是否是这个的问题。
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.
我用的手头上的ARM9 S3C2440测试的。
IO口配置就不发了,IIC模块工作在200KHZ(设计工作在400KHZ,担心频率太高的问题,先降了200KHZ)
rIICCON = (1<<7) | (0<<6) | (1<<5) | (0xf); //允许ACK,SCL=198KHZ,使能中断
rIICADD =0x10; //2440内部地址
ACK=1; //ACK是个标志
rIICDS =0x9E; //rIICDS是IIC的移位寄存器。DAC7573的从地址为0x9E;
rIICSTAT =0xf0; //主发送模式,IIC通信开始。
while(ACK==1);
delay(1); //延时10us delay是10us的延时,比较准确的。
rIICCON=0xAF; //继续IIC操作。
ACK=1 ;
rIICDS =0x10; //是DACA 存储寄存器地址。仅保存其数据。
while(ACK==1);
delay(1); //延时10us delay是10us的延时,比较准确的。
rIICCON=0xAF; //继续IIC操作。
ACK=1 ;
rIICDS =0xFF ; //是DACA 存储寄存器地址。仅保存其数据。
while(ACK==1);
delay(1); //延时10us delay是10us的延时,比较准确的。
rIICCON=0xAF; //继续IIC操作。
ACK=1 ;
rIICDS =0xF0;//是DACA 存储寄存器地址。仅保存其数据。采用REF5025的基准电压芯片,输出应该在2.48V左右,
但是实际输出依旧为0。
while(ACK==1);
delay(1); //延时10us delay是10us的延时,比较准确的。
rIICSTAT=0xd0; //IIC结束发送。
rIICCON=0xAF; //继续IIC操作。
delay(1);
采用IIC中断控制,在中断服务程序中清楚IIC中断标志位。并经ACK幅值为0
IIC在1比特数据发送结束时会产生中断。
我的疑惑:1:IIC每个Byte数据发送结束后延时多久对于DAC7573比较合适。
2:LDAC电平一直接高,是否有影响。
3:有没有DAC7573或者类似的IIC操作代码例程 或者其内部的原理电路供参考(TI官网找了好久没找到)
你好,你的地址9e是与你的图匹配的,但是地址之后并没有ack信号,而且sda上有个台阶,可能是i2c驱动能力不足,建议改成3.3k试试。
1我没具体测过这个延时最小到多少。当时测的时候延时是1ms。
2 如果不需要同步,置高可以。
3 我们有demo板和配套软件,但是没有具体的代码。请查看www.ti.com/.../dac7573evm