各位大神:
请教个DSP6713 I2C的问题,望不吝赐教,先行感谢!
DSP6713 I2C手册中33页描述了nonrepeat ,master-transimitter情况下的发送流程。如下,我理解的流程就是设置STT=1,STP=1,查询STR寄存器,如果没产生NACK,就判断ARDY是否为1(1表征可以写寄存器了,从而表征数据传送完成),如果为0,就判断是否可以继续向DXR写数。在ARDY为1时,发送完成,从而完成一次发送。不知道这一点我理解的对不对。
当我去查ARDY含义时,有些没读明白。下图红框处写出,“当STP=1时,ARDY是不被影响的,但当cnt计数到达零时,I2C模块会产生停止位”。它的含义是如果命令设置了stt=1,stp=1后,当cnt计数减为0后,ARDY会一直保持为1,不会被清零么,知道我再次启动发送,ARDY在发送过程中会变为0直至发送完成,是这个意思么?
另外,这段还描述当STP=0时,当cnt计数减为0时,ARDY会被值位,那么stp=1和stp=0时的ARDY表现是一致的,没有区别么?
还望赐教。

Shine:
对红框内的内容,我的理解是ARDY表示一个传输的结束,如果没有设置自动产生STOP位(STP=0),则需要将ARDY置位来表示一次传输结束。如果已经设置STOP位了(STP=1),则不需要ARDY位来表示一次传输结束,所以ARDY位不受影响。
user5157445:
回复 Shine:
谢谢您的回答。
那按照这样来理解的话,手册中给的发送流程图(上图)就不对了吧,流程图中命令寄存器中stp位是1,但后面又通过ardy位去判断传输执行完成没,是不是错了呢?
Shine:
回复 user5157445:
判断STP=1?, Yes的话,就退出流程了。
user5157445:
回复 Shine:
看流程图是只有在NACK为1,或者ARDY为1,才能走到判断stp=1的分支啊,如果设置mod时按照手册流程图描述0x2e20,那么ardy不会被置位啊,另外有没有相关的例程参考呢,谢谢。
Shine:
回复 user5157445:
可以参考下面帖子里的例程。
e2e.ti.com/…/73053
TI中文支持网