ZHCUAN9C February 2013 – November 2023 TAS2505 , TAS2505-Q1
TAS2505 支持 I2C 控制协议,并会响应 I2C 地址 0011 000。I2C 是两线制开漏接口,支持单根总线上的多个器件和主器件。I2C 总线上的器件通过将总线接地只将其驱动为低电平;不会将总线驱动为高电平。总线由上拉电阻拉至高电平,因此当没有器件将总线驱动为低电平时,总线为高电平。这样,两个器件就不会发生冲突;如果两个器件同时驱动总线,不会发生驱动器争用。
I2C 总线上的通信始终在两个器件之间进行,一个器件用作主器件,另一个器件用作从器件。主器件和从器件都可以读取和写入,但从器件只能在主器件的指示下执行上述操作。一些 I2C 器件可用作主器件或从器件,但 TAS2505 只能用作从器件。
I2C 总线由 SDA 和 SCL 这两条线组成。SDA 传输数据,SCL 信号提供时钟。所有数据以八位一组的形式通过 I2C 总线进行传输。为在 I2C 总线上发送一个位,SDA 线将驱动至适当电平,同时 SCL 为低电平(SDA 低电平表示该位为 0,高电平表示该位为 1)。
SDA 线稳定后,SCL 线变为高电平,然后变为低电平。SCL 线上的这一脉冲会在时钟沿将 SDA 位输入到接收器移位寄存器中。
I2C 总线是双向的:SDA 线用于发送和接收数据。当主器件向从器件读取数据时,从器件驱动数据线;当主器件将数据发送到从器件时,主器件驱动数据线。
大多数时候,总线处于空闲状态,没有通信发生,两条线都处于高电平。当进行通信时,总线处于运行状态。只有主器件才能在总线上开始通信。通常,数据线只能在时钟线为低电平时改变状态。如果数据线在时钟线为高电平时改变状态,则它要么是开始条件,要么是与之对应的停止条件。开始条件是指时钟线为高电平,且数据线从高电平变为低电平。停止条件是指时钟线为高电平,且数据线从低电平变为高电平。
主器件发出开始条件后,它会发送一个字节来选择从器件进行通信。此字节称为地址字节。I2C 总线上的每个器件都具有一个等待响应的唯一 7 位地址。(从器件也可以具有 10 位地址;有关详细信息,请参阅 I2C 规范。)主器件在地址字节中发送地址,并一同发送一个位以表明它是否希望向从器件读取或写入。
在 I2C 总线上发送的每个字节无论是地址还是数据,都通过一个确认位进行确认。当主器件已完成向从器件发送一个字节(8 个数据位)时,它将停止驱动 SDA 并等待从器件确认此字节。从器件通过将 SDA 拉至低电平确认此字节。主器件随后发送一个时钟脉冲对确认位计时。同样,当主器件已完成读取一个字节时,它会将 SDA 拉至低电平以向从器件进行确认。然后,它发送一个时钟脉冲对此位计时。(请记住,主器件始终驱动时钟线。)
只需在确认周期内将 SDA 保持为高电平即可执行非确认。如果总线上没有器件,而主器件尝试对其进行寻址,则将收到非确认,因为该地址上没有器件将线路拉至低电平。
当主器件完成与从器件的通信时,它可能会发出停止条件。发出停止条件时,总线再次变为空闲状态。主器件也可能发出另一开始条件。当在总线处于运行状态下发出开始条件时,这称为重复开始条件。
TAS2505 还可以响应和确认通用广播(即主器件利用从器件地址字节 00h 发出命令)。此功能在默认情况下处于禁用状态,但可通过页 0 寄存器 34 位 D5 启用。
对于 I2C 寄存器写入,如果主器件未发出停止条件,则器件将进入自动递增模式。因此在接下来的八个时钟内,SDA 上的数据将被视为下一增量寄存器的数据。
同样,对于 I2C 寄存器读取,在器件从寻址到的寄存器发送出 8 位数据后,如果主器件发出确认,从器件将接管 SDA 总线的控制权,并在接下来的 8 个时钟内发送下一增量寄存器的数据。