器件 ID 是一个 24 位(3 字节)只读值,包含以下字段:
- 12 位:制造商标识符(每个制造商唯一,例如 TI)
- 9 位:器件型号(由制造商分配)
- 3 位:芯片版本(由制造商分配)
器件 ID 为硬接线,可通过以下步骤访问:
- 发送 START 命令。
- 控制器在 R/W = 0(写入)的情况下发送保留的器件 ID I²C 地址 (1111 1000)。
- 控制器发送目标器件地址,LSB 视为“无关”。仅匹配的器件确认。
- 发出重复的 START 条件。
- STOP 命令后跟 START 命令会复位目标状态机,此时无法执行器件 ID 读取。此外,STOP 命令或 Re-START 命令后跟对另一个目标器件的访问会将目标状态机复位,此时无法执行器件 ID 读取。
- 控制器在 R/W = 1(读取)的情况下发送保留的器件 ID I²C 地址 (1111 1001)。
- 器件按以下顺序发送器件 ID:•
- 第一个字节 + 第二个字节的 4 个 MSB:制造商 ID(12 位)
- 第二个字节的 4 个 LSB + 第三个字节的 5 个 MSB:器件标识(9 位)
- 第三个字节的 3 个 LSB:芯片版本(3 位)
- 控制器通过在最后一个字节之后发送 NACK 来完成读取,复位器件的内部状态机,然后发出 STOP 命令。
如果控制器在第三个字节之后发送额外的确认,则器件会从第一个字节重新开始数据序列。