该事务用于从 LM94 读取数据块。以下是该事务中发生的事件序列:
- 主器件将一个启动条件置为有效。
- 主器件发送 7 位从器件地址,后跟写入位(低电平)。
- 被寻址的从器件将 ACK 置为有效。
- 主器件发送一个命令代码,该代码告知从器件等待块读取 (F1h),从器件将 ACK 置为有效。
- 主器件发送该写入的字节计数,其值为 2,从器件将 ACK 置为有效。
- 主器件发送块读取的起始寄存器地址,从器件将 ACK 置为有效。
- 主器件发送块读取过程调用的字节计数 (1-32),从器件将 ACK 置为有效。
- 主器件将一个重复的启动条件置为有效。
- 主器件发送 7 位从器件地址,后跟读取位(高电平)。
- 从器件将 ACK 置为有效。
- 主器件接收一个字节计数数据字节,该字节告知它将接收多少个数据字节。该字段反映被发送到 LM94 的字节计数所请求的字节数。SMBus 规范允许在一次块读取中最多接收 32 个数据字节。然后主器件将 ACK 置为有效。
- 主器件接收字节 1,然后将 ACK 置为有效。
- 主器件接收字节 2,然后将 ACK 置为有效。
- 主器件接收 N-3 个数据字节,并针对每个字节将 ACK 置为有效。
- 主器件接收数据字节 N 并将 NACK 置为有效。
- 主器件将一个停止条件置为有效,以结束事务。
| 1 | 2 | | 3 | 4 | | 5 | | 6 | | 7 | | 8 | 9 | | 10 | ∼ |
| S | 从器件 地址 | W | A | 块 读取 命令 代码 (F1h) | A | 字节 计数 (2h) | A | 起始 寄存器 地址 | A | 字节 计数 (1-20h) (N) | A | S | 从器件 地址 | R | A |
| ∼ | 11 | | 12 | | 13 | | 14 | 15 | 15 | 16 |
字节 计数 (1-20h) (N) | A | 数据 字节 1 | A | 数据 字节 2 | A | ∼ | 数据 字节 N | /A | P |
特别说明:
- 当读取正常地址空间之外的地址位置时,LM94 返回 00h。
- 块读取不会从地址 FFh 绕回到 00h
- 如果主器件确认的字节数超过其请求的字节数,则 LM94 将继续提供数据,直到主器件不再确认字节。
- 如果主器件没有确认字节以提前中止块读取,则 LM94 脱离总线以允许主器件发出停止信号。