I2C 从设备中的确认

Acknowledgement in I2C slave

看了nxp.but提供的I2C规范,有些地方还是不太清楚。你能给我解释一下吗?

  1. 通常slave由I2C master控制。 I2C 主机启用确认,那么从机如何生成 I2C 确认?
  2. I2C从机地址和I2C数据字节都是1字节数据,那么I2C从机如何区分它们?

假设 nxp 的 i2c 规范与行业标准相同。

1) 我认为 "acknowledgement is enabled by Master" 在这里是不正确的。在主机发送每个(完整)字节后,它等待从机发回确认位(或不确认)。从机通过改变 SDA 线的电平来做到这一点。

2) 为了将数据从主机传输到从机(并返回),保持发送字节的顺序非常重要。一个典型的例子是这样的:

  • 主人发出:开始信号
  • 主机发送:从机地址+写位
  • 从机发送:ACK
  • 主机发送:主机要读取的寄存器地址
  • 从机发送:ACK
  • 主机发送:重复启动信号
  • 主机发送:从机地址+读取位
  • 从机发送:ACK
  • 从机发送:主机要读取的寄存器寄存器地址的内容
  • 主机发送:NACK
  • 主人发出:停止信号

如果您正在寻找有关 I2C 的更多详细信息,互联网上有很多。对我来说,data sheet 的第 21 节对我的理解帮助很大。