如图红色箭头,ack是slave发出给master 意思是master必须接受到这个ack才能发送下面的数据吗?还是它只是一个指示的信号,不影响后面数据的发送?
yuezhiheng yue:
顶下
step by step:
回复 yuezhiheng yue:
你好,
ACK表示从机的I2C模块接收到了主机发来的数据,主机可以依此判断从机是否接收正确。但是主机下面的数据发不发送都是主机决定的,即使受到了NAK,主机想继续发送数据也可以。
Triton Zhang:
回复 step by step:
虽然理论上是这样,但是如果适用的I2C的硬件模块,由于发送的数据先写入TXBUFF,所以如果主机没有接受到SLAVE发送的ACK信号,主机不会把TXBUFF的数据放入I2C的FIFO.也就不会产生TXBUFF为空的中断标志,要手动去填。