ZHCSU28D April 2006 – February 2024 LM94
PRODUCTION DATA
SMBus 2.0 规范为不同类型的读取和写入操作定义了特定的条件,但 SMBus 协议通常按以下方式运行:
主器件通过建立一个启动条件来启动数据传输,该启动条件被定义为串行数据线路 SMBDAT 上从高电平到低电平的转换,同时串行时钟线路 SMBCLK 保持高电平。这表示后跟一个数据流。连接到串行总线的所有从外设都会对启动条件做出响应,并移入接下来的 8 个位。这包含一个 7 位从器件地址(首先是 MSB)和一个 R/W 位,该位决定数据传输的方向,即数据是写入到从器件还是从从器件中读取(0 = 写入,1 = 读取)。
地址与发送的地址相对应的外设通过在第九个时钟脉冲(称为确认位)之前的低电平期间拉低数据线并在该时钟脉冲的高电平期间保持低电平进行响应。现在,总线上的所有其他器件都保持空闲状态,而所选器件等待从其中读取数据或向其中写入数据。如果 R/W 位为 0,则主器件向从器件中写入数据。如果 R/W 位为 1,则主器件在从器件中读取数据。
数据以 9 个时钟脉冲、8 位数据并后跟一个确认位的序列通过串行总线发送。数据线上的数据转换必须在时钟信号的低电平期间发生并在高电平期间保持稳定,因为时钟为高电平时从低电平到高电平的转换可能会被解释为停止信号。
如果该操作是写入操作,则从器件地址之后的第一个数据字节是命令字节。该字节告诉从器件接下来要做什么。这可以是一条指令(例如告诉从器件等待块写入),也可以只是一个寄存器地址,用于告诉从器件后续数据要写入的位置。
由于数据只能沿 R/W 位定义的一个方向流动,因此在读取操作期间无法向从器件发送命令。在执行读取操作之前,需要执行写入操作,以告诉从器件需要执行何种类型的读取操作和/或要读取数据的地址。
当所有数据字节都已被读取或写入时,便建立了停止条件。在写入模式下,主器件将允许在第 10 个时钟脉冲期间数据线变为高电平,以将停止条件置为有效。在读取模式下,从器件驱动数据,而非主器件驱动数据。对于有问题的位,从器件正在寻找确认,而主器件不会驱动为低电平。这称为“无应答”。然后,主器件在第 10 个时钟脉冲之前的低电平周期内将数据线设为低电平,然后在第 10 个时钟脉冲期间将数据线设为高电平以将停止条件置为有效。
请注意,只有在连续的写入和读取操作之间才能提供重复的启动条件。