I2C 从设备中的确认
Acknowledgement in I2C slave
看了nxp.but提供的I2C规范,有些地方还是不太清楚。你能给我解释一下吗?
- 通常slave由I2C master控制。 I2C 主机启用确认,那么从机如何生成 I2C 确认?
- I2C从机地址和I2C数据字节都是1字节数据,那么I2C从机如何区分它们?
假设 nxp 的 i2c 规范与行业标准相同。
1) 我认为 "acknowledgement is enabled by Master" 在这里是不正确的。在主机发送每个(完整)字节后,它等待从机发回确认位(或不确认)。从机通过改变 SDA 线的电平来做到这一点。
2) 为了将数据从主机传输到从机(并返回),保持发送字节的顺序非常重要。一个典型的例子是这样的:
- 主人发出:开始信号
- 主机发送:从机地址+写位
- 从机发送:ACK
- 主机发送:主机要读取的寄存器地址
- 从机发送:ACK
- 主机发送:重复启动信号
- 主机发送:从机地址+读取位
- 从机发送:ACK
- 从机发送:主机要读取的寄存器寄存器地址的内容
- 主机发送:NACK
- 主人发出:停止信号
如果您正在寻找有关 I2C 的更多详细信息,互联网上有很多。对我来说,data sheet 的第 21 节对我的理解帮助很大。
看了nxp.but提供的I2C规范,有些地方还是不太清楚。你能给我解释一下吗?
- 通常slave由I2C master控制。 I2C 主机启用确认,那么从机如何生成 I2C 确认?
- I2C从机地址和I2C数据字节都是1字节数据,那么I2C从机如何区分它们?
假设 nxp 的 i2c 规范与行业标准相同。
1) 我认为 "acknowledgement is enabled by Master" 在这里是不正确的。在主机发送每个(完整)字节后,它等待从机发回确认位(或不确认)。从机通过改变 SDA 线的电平来做到这一点。
2) 为了将数据从主机传输到从机(并返回),保持发送字节的顺序非常重要。一个典型的例子是这样的:
- 主人发出:开始信号
- 主机发送:从机地址+写位
- 从机发送:ACK
- 主机发送:主机要读取的寄存器地址
- 从机发送:ACK
- 主机发送:重复启动信号
- 主机发送:从机地址+读取位
- 从机发送:ACK
- 从机发送:主机要读取的寄存器寄存器地址的内容
- 主机发送:NACK
- 主人发出:停止信号
如果您正在寻找有关 I2C 的更多详细信息,互联网上有很多。对我来说,data sheet 的第 21 节对我的理解帮助很大。