1.总线上的数据传递时序 I²C 总线上数据传递时序如图 4-2 所示,具体步骤如下。
• 首先主节点器件发送一个起始信号。
• 接下来主节点器件发送从节点地址和读写方式,一共 8 位。其中从节点地址 7 位,读写方式 1 位。
• 与传输地址一致的从节点器件应答(即 ACK)。
• 开始数据传输,传输数据数量不限。每个字节(八位)后面跟接收数据方的应答位。例如主节点器件读取从节点数据,从节点发送数据,主节点应答;主节点器件写数据到从节点,主节点发送数据,从节点应答。
• 数据传输结束,主节点器件发送一个终止信号结束整个过程。
采用 I²C 总线后对传送的字节数没有限制,只要求每传送一个字节后对方回应一个应答位。在发送时首先发送的是数据的最高位(MSB,Most Significant Bit)。每次传送开始有起始信号,结束时有停止信号。在总线传送完一个字节后,可以通过对时钟线(SCL)的控制使传送暂停。例如当某个外围器件接收 N 个字节数据后需要一段处理时间以便继续接收以后的字节数据,这时可在应答信号后使 SCL 变为低电平控制总线暂停。如果主节点要求总线暂停也可使时钟线保持低电平控制总线暂停。
2.总线上的时序信号
I²C 总线为同步传输总线,总线信号完全与时钟同步。 I²C 总线上与数据传送有关的信号有起始信号 S、终止信号 P、应答信号 A 以及位传送信号。下面将对这些信号一一介绍。
(1)起始信号
起始信号(Start Condi
tion)如图 4-3 所示。当时钟线 SCL 为高电平时,数据线 SDA 从高电平向低电平变化将形成起始信号,启动 I²C 总线。
(2)终止信号
终止信号(Stop Condition)如图 4-3 所示。当时钟线 SCL 为高电平时,数据线 SDA 从低电平向高电平变化将形成终止信号,停止 I²C 总线。
(3)应答信号
如图 4-3 所中 ACK 第 9 个时钟脉冲对应应答位,相应数据线上低电平时为应答信号,高电平时为非应答信号。
(4)位传送信号
在 I²C 总线启动后或应答信号后的第 1~8 个时钟脉冲对应于一个字节的 8 位数据传送。脉冲高电平期间,数据串行传送;低电平期间为数据准备,允许总线上数据电平变换。