ZHDA159 June 2025
PRODUCTION DATA
ADC810-Q1 通过 I2C 接口进行通信。I2C 是一种两线制开漏接口,支持单个总线上的多个器件和控制器。I2C 总线上的器件仅通过将总线接地来将总线驱动为低电平;这些器件永远不会将总线驱动为高电平。相反,总线被上拉电阻器拉至高电平,因此当没有器件将总线驱动为低电平时,总线始终为高电平。由于该配置,两个器件不可能发生冲突。如果两个器件同时驱动总线,则不会发生驱动器争用。
I2C 总线上的通信始终在两个器件之间进行,一个器件用作控制器,另一个器件用作目标。控制器和目标都可以进行读取和写入,但目标只能在控制器的指示下执行上述操作。一些 I2C 器件可用作控制器或目标,但 ADC810-Q1 只能用作目标器件。
I2C 总线由两条线组成:SDA 和 SCL。SDA 传输数据;SCL 提供时钟。所有数据以八位一组的形式通过 I2C 总线进行传输。要在 I2C 总线上发送一个位,应将 SDA 线驱动至适当的电平,同时 SCL 为低电平(SDA 为低电平表示该位为零,高电平表示该位为一)。SDA 线稳定后,SCL 线变为高电平,然后变为低电平。SCL 上的该脉冲会在时钟的控制下将 SDA 位输入到接收器移位寄存器中。如果 I2C 总线保持空闲状态的时间超过 30ms,则总线超时。
I2C 总线是双向的;即 SDA 线同时用于发送和接收数据。当控制器从目标读取数据时,目标驱动数据线;当控制器向目标写入数据时,控制器驱动数据线。控制器始终驱动时钟线。ADC810-Q1 无法用作控制器,因此永远无法驱动 SCL。
大多数时候,总线处于空闲状态;没有通信发生,两条线均处于高电平。当进行通信时,总线处于运行状态。只有控制器器件可以启动通信并在总线上发起 START 条件。通常,仅当时钟线为低电平时才允许数据线改变状态。如果数据线在时钟线为高电平时改变状态,则该改变是 START 条件或 STOP 条件。当时钟线为高电平且数据线从高电平变为低电平时,产生启动条件。当时钟线为高电平且数据线从低电平变为高电平时,产生停止条件。
控制器发出 START 条件后,该控制器会发送一个字节来指示要与哪个目标器件进行通信。此字节称为地址字节。I2C 总线上的每个器件都具有一个器件要响应的唯一 7 位地址。控制器在地址字节中发送地址,并一同发送一个位以表明控制器是否希望对目标器件进行读取或写入。
在 I2C 总线上发送的每个字节(地址和数据)都会通过一个响应 位进行响应。当控制器完成向目标发送一个字节(八个数据位)时,控制器停止驱动 SDA 并等待目标响应该字节。目标通过拉将 SDA 拉至低电平来响应该字节。控制器随后发送一个时钟脉冲对响应位计时。同样,当控制器完成读取一个字节时,控制器将 SDA 拉至低电平以向目标响应此完成。控制器随后发送一个时钟脉冲对该位计时。控制器始终驱动时钟线。
如果总线上没有器件,而控制器尝试对器件进行寻址,则控制器会收到无应答,因为该地址上没有器件将线路拉至低电平。只需在确认周期内将 SDA 保持为高电平即可执行无应答。
当控制器完成与目标的通信时,控制器可以发出停止条件。发出停止条件时,总线再次变为空闲状态。控制器还可以发出另一个启动条件。当在总线处于运行状态下发出 START 条件时,该条件称为重复启动条件。
时序要求 部分提供 ADC810-Q1 I2C 通信的时序图。