ZHDA297 November 2022 ADC081C021 , ADC081C027 , ADC101C021 , ADC101C027 , ADC121C021 , ADC121C021-Q1 , ADC121C027 , ADC128D818 , ADS1000 , ADS1000-Q1 , ADS1013 , ADS1014 , ADS1015 , ADS1015-Q1 , ADS1100 , ADS1110 , ADS1112 , ADS1113 , ADS1114 , ADS1115 , ADS1115-Q1 , ADS7823 , ADS7827 , ADS7828 , ADS7828-Q1 , ADS7830 , ADS7924 , AFE539A4 , DAC081C081 , DAC081C085 , DAC101C081 , DAC101C081Q , DAC101C085 , DAC121C081 , DAC121C085 , DAC43204 , DAC43401 , DAC43401-Q1 , DAC43608 , DAC43701 , DAC43701-Q1 , DAC53002 , DAC53004 , DAC53202 , DAC53204 , DAC53204W , DAC53401 , DAC53401-Q1 , DAC53608 , DAC53701 , DAC53701-Q1 , DAC5571 , DAC5573 , DAC5574 , DAC5578 , DAC60501 , DAC60502 , DAC63002 , DAC63004 , DAC63202 , DAC63204 , DAC6571 , DAC6573 , DAC6574 , DAC6578 , DAC70501 , DAC70502 , DAC7571 , DAC7573 , DAC7574 , DAC7578 , DAC7678 , DAC80501 , DAC80502 , DAC8571 , DAC8574
地址 7C 至 7F 均为器件 ID 保留。控制器首先发送保留的器件 ID 地址,后跟写入位。然后,控制器发送它想要识别的器件地址。然后,控制器发送一个重复的 START 条件,后跟保留的器件 ID 地址,后跟一个读取位。
器件 ID 由目标器件通过三个 I2C 数据帧中的字节发送。此数据从 12 位制造商 ID 开始,接着是 9 位器件标识,最后是 3 位芯片版本。图 5-4 展示了到器件 ID 的数据传输。
控制器先发送一个 START 条件。第一个字节与器件 ID 的保留地址一起发送,后跟一个 0 用于写入。此时,可以有多个目标对器件 ID 做出响应,因此多个器件可以对该地址进行 ACK。
然后,控制器发送目标器件的地址。该目标地址字节的最后一位是“无关”,后跟一个 ACK。此时,只有一个器件对该地址进行 ACK。
然后,控制器发送一个重复 START 条件。之后,控制器发送保留的器件 ID I2C 总线地址,后跟读取位。目标器件对该保留地址进行 ACK。请注意,第三个字节的开头必须是重复的 START。STOP 后跟 START 条件,或 STOP 后跟重复 START 条件,然后访问不同的目标器件,都会使目标器件状态机复位,因此无法执行器件 ID 读取。
然后,目标器件发送三个字节作为器件 ID。图 5-5 展示了有关如何从支持 I2C 器件 ID 的器件读取器件 ID 的详细图。
控制器会对最后一个字节进行 NACK,并以 STOP 结束器件 ID 读取。通过发送 NACK,可以随时停止读取器件 ID。如果控制器在第三个字节之后继续对这些字节进行 ACK,则目标会回滚到第一个字节并持续发送器件 ID 序列,直到检测到 NACK。