USER GUIDE / PERIPHERALS / I2C / OPERATION FLOW

操作流程

本节提供以下主题信息:

  • “从机模式操作”

  • “主机模式操作”

  • “禁用I2C”

  1. 需要注意的是,I2C 只能设置为 I2C 主机或 I2C 从机,而不能同时设置为二者。这是通过确保 I2C_CON 寄存器的第 6 位(SLVDIS)和第 0 位(MD)永远不会分别设置为 0 和 1 来实现的。

  2. 当使用中断时,需要在 CPU 中启用中断。

  3. 默认情况下,SDA 和 SCL 应被拉起,因此对应的 GPIO 也应被拉起。如果没有,应手动更改它。

I2C 行为

I2C 可以通过软件被控制为:

  • 仅 I2C 主机,与其他 I2C 从机通信。

  • 仅 I2C 从机,与另一个 I2C 主机通信。

或

主机负责生成时钟和控制数据的传输。从机负责向主机发送或接收数据。接收数据的设备,可以是主机也可以是从机,发送数据响应。如前所述,I2C 协议还允许多个主机驻留在 I2C 总线上,并使用仲裁过程来确定总线所有权。

每个从机都有唯一的地址,这个地址是由系统设计者确定的。当一个主机想要与一个从机通信时,主机会发送一个 START/RESTART 条件,之后是从机地址和一个控制位(读/写),以确定主机是想要传输数据还是从从机中接收数据。然后从机在地址之后发送一个响应(ACK)脉冲。

如果主机(主机—发送器)向从机(从机—接收器)写入数据,接收端获得一个字节的数据,该传输继续,直到主机以 STOP 条件终止传输。如果主机(主机—接收器)正在从从机(从机—发送器)读取数据,从机向主机发送一个字节的数据,且之后主机以 ACK 脉冲响应该传输,该传输继续,直到主机在接收到最后一个字节后通过不响应(NACK)终止传输,然后主机发出一个 STOP 条件,或者在发出 RESTART 条件后向另一个从机发出地址。image.png