请问I2C在主接收模式下,如果这两个控制bit都置1,到接收数据接收,也就是内部计数器为0的时候,发送NACK信号和STOP信号那个优先,或者说接收模式下,两个能同时设置为1
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.
请问I2C在主接收模式下,如果这两个控制bit都置1,到接收数据接收,也就是内部计数器为0的时候,发送NACK信号和STOP信号那个优先,或者说接收模式下,两个能同时设置为1
NACK优先,请参考截图中的时序。
在 TRM 21.2.11.1 Configuring the I2C in Master Receiver Mode and Servicing Receive Data via CPU 中也有相关说明:
13. Configure the I2C controller not to generate an ACK on the next/final byte reception: set NACKMOD bit for the I2C to generate a NACK on the last byte received (set NACKMOD = 1 in ICMDR).
14. End transfer/release bus when transfer is done. Generate a STOP event (set STP = 1 in ICMDR).
如果是这样的话,如果接收数据完比产生的一个NACK信号,这个应该不会进入I2C中的NACK中断吧(这个中断条件就是接收不到从机的ACK信号),另外我想问一下,如何判断I2C已经发送完了
如果接收数据完比产生的一个NACK信号,这个应该不会进入I2C中的NACK中断吧
我的理解应该是会的。
如何判断I2C已经发送完了
可以通过传输中断Transmit-data-ready interrupt判断
抱歉看错了,当RM = 0时传输数据完成内部的计数器变为0,STP会置1,会进入SDC中断。
问题是,主机I2C接收数据的时候,只是发送从机地址,然后收到ACK后开始接收数据,发送地址后并没有发送STOP信号,这应该用什么机制判断发送从机地址是不是发送完了