ZHCSNZ0C November 2022 – January 2025 TCAL6408
PRODUCTION DATA
双向 I2C 总线由串行时钟 (SCL) 线和串行数据 (SDA) 线组成。当连接到器件的输出级时,两条线都必须通过上拉电阻器连接到正电源。只有当总线不忙才能启动数据传输。
当 SCL 输入为高电平时,控制器发送启动条件(SDA 输入/输出上由高电平到低电平转换)启动与该器件的 I2C 通信(请参阅图 7-4)。在发送启动条件之后,会发送器件地址字节,首先发送最高有效位 (MSB),包括数据方向位 (R/W)。
接收到有效地址字节后,该器件以应答 (ACK) 响应,在 ACK 相关时钟脉冲的高电平期间,SDA 输入/输出为低电平。目标器件的地址输入不得在启动条件和停止条件之间更改。
在 I2C 总线上,在每个时钟脉冲期间仅传输一个数据位。在时钟周期的高脉冲期间,SDA 线上的数据必须保持稳定,因为此时数据线上的变化会被解释为控制命令(开始或停止)(请参阅图 7-5)。
控制器会发送停止条件,即当 SCL 输入为高电平时,SDA 输入/输出由低电平到高电平转换(请参阅图 7-4)。
在开始和停止条件之间,可以将任意数量的数据字节从发送器传输到接收器。每个八位字节后跟一个 ACK 位。发送器必须先释放 SDA 线,接收器才能发送 ACK 位。做出应答的器件必须在 ACK 时钟脉冲期间下拉 SDA 线路,这样,在 ACK 相关时钟周期的高脉冲期间,SDA 线路稳定为低电平(请参阅图 7-6)。当目标接收器被寻址时,它必须在接收到每个字节后生成一个 ACK。类似地,控制器必须在从目标发送器接收到每个字节之后生成一个 ACK。必须满足设置和保持时间才能正常运行。
控制器接收器通过在目标发送器在时钟沿输出最后一个字节后不进行应答 (NACK),来向目标发送器发送数据结束信号。控制器接收器通过将 SDA 线保持为高电平来实现该目的。在这种情况下,发送器必须释放数据线,才能使控制器生成停止条件。
图 7-4 启动和停止条件的定义
图 7-5 位传输
图 7-6 I2C 总线上的应答| 字节 | 位 | |||||||
|---|---|---|---|---|---|---|---|---|
| 7 (MSB) | 6 | 5 | 4 | 3 | 2 | 1 | 0 (LSB) | |
| 器件 I2C 地址 | L | H | L | L | L | L | ADDR | R/W |
| I/O 数据总线 | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |