图1 使用DS90UB914和DS90UB913后的波形,Sensor的ACK出现延迟160ms的异常。
图2 未使用DS90UB914和DS90UB913直接让CPU和Sensor对接的I2C波形,ACK无延迟,波形正常。
TI的专家您好!我使用DS90UB914和DS90UB913传输sensor视频到CPU的DVP并口。我用同样的程序和CPU,当使用DS90UB914和913转接时,出现图1所示I2C发出时钟信号先发前8个时钟,延迟160ms时,再发第9个时钟,接受sensor的ACK信号,连续写超过两个字节时,会包NACK错误。不用914和913时,如图2所示,I2C波形正常。请问:
1、DS90UB914和DS90UB913对I2C的ACK校验位和对应的时钟有160m的延时吗?这个现象正常吗?
2、在DS90UB914/913数据手册的寄存器表中地址0x03的第3位AUTO ACK默认为0,配置为“1”能解决这个ACK及其对应时钟延迟出现NACK的问题吗?
user1210068:
我提的问题中,主机发送的第8个时钟和第9个时钟之间的时间是160us,不是160ms.
Amy Luo:
您好,
您的问题我正在处理,我会尽快回复您。
Amy Luo:
您好,对于通过双向控制信道的FPD-Link通信,必须使用I2C时钟拉伸,以便事务能够缓冲和传输相关的延迟。您可以在下面文档中阅读更多信息:
www.ti.com/…/snla131a.pdf
通过启用AUTO ACK可以提高吞吐量,但这也意味着如果有一个真正的NACK,您将不会收到它。
user1210068:
回复 Amy Luo:
非常感谢您的回复。我想咨询以下,当需要启用AUTOACK时,是不是要把DS90UB914和DS90UB913的AUTOACK位都设置为1?
Amy Luo:
回复 user1210068:
您说的是DS90UB913的哪个寄存器的AUTOACK位?在数据手册中Table7是DS90UB913Q-Q1 Control Registers,Table8是DS90UB914Q-Q1 Control Registers表格。