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
I2C 写入从 START 条件开始。SDA 被设置为低电平,然后 SCL 被设置为低电平。然后写入 I2C 地址。在 A0 引脚连接到 VDD 的情况下,DAC80501 会响应地址 100 1001(或 49h)。读/写 (R/W) 位设置为低电平,表示控制器正在写入设备。
地址字节完成后,DAC80501 通过下拉地址帧最后一位的 SDA 来对地址进行 ACK。控制器向总线上的所有目标器件发送地址和读取或写入信息。如果目标 DAC80501 具有匹配的地址,器件会发送一个 ACK 以向控制器指示接收到有效地址,从而器件已准备好接收信息。
控制器发送写入 DAC80501 的地址后,控制器会告知器件正在写入哪个寄存器。发送至目标器件的第二个字节是 DAC 数据寄存器的寄存器指针。这里,将 0000 1000 发送到 DAC80501。作为响应,DAC80501 将 SDA 设置为低电平以进行 ACK。同样,目标器件向控制器指示器件已接收到地址指针数据以及正在写入哪个寄存器。
现在,DAC 数据寄存器值每次发送到目标器件一个字节。对于此字节,发送 DAC 数据的第一字节。位 0100 1100 发送到 DAC80501。DAC80501 会对第一个字节进行 ACK。
最后,配置寄存器的最后一个字节发送到目标器件。这里,将 1100 1101 发送到 DAC80501。DAC80501 会对第二个数据字节进行 ACK。最后,SCL 被释放为高电平,然后 SDA 被释放。在此操作中,控制器通过发出 STOP 条件来释放总线。
将这些帧放在一起后,I2C 写入显示为图 4-2。在这里,该图显示了针对所有帧采用正确位设置的整个通信。如果示波器绘制了 SDA 和 SCL 的 I2C 通信图,则可以直接将此图与该图进行比较以进行调试。