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
ADS1115 具有 16 位 ADC,因此可以进行 16 位数据转换。控制器器件从转换寄存器读取以获取 ADC 转换数据。转换寄存器地址指针为 00h。转换数据以 16 位结果形式显示为二进制补码。正满量程输入可生成输出代码 7FFFh,负满量程输入可生成输出代码 8000h。
当 ADDR 引脚连接到 GND 时,器件响应地址 48h。图 4-5 显示了从 00h 地址指针处的转换数据寄存器读取的示例。
I2C 写入从 START 条件开始。SDA 被设置为低电平,然后 SCL 被设置为低电平。然后,控制器写入 I2C 地址。同样,器件响应地址 100 1000(或 48h)。
控制器首先需要告诉器件要读取哪个寄存器。在此情况下,通信首先向器件发送 I2C 写入,以便设置从 ADS1115 的数据转换寄存器进行读取。此时,R/W 位被设置为低电平,表示通信从写入器件开始。
地址帧完成后,ADS1115 通过拉低地址帧最后一位的 SDA 来对地址进行 ACK。
指示控制器正在从 ADS1115 读取数据后,控制器会告知器件从哪个寄存器读取。第二个字节是数据转换寄存器的寄存器指针。在这里,将 00h 发送到 ADS1115。作为响应,ADS1115 将 SDA 设置为低电平以进行 ACK。最后,控制器发出 STOP 命令以释放总线。
现在控制器已通知器件访问数据转换寄存器,控制器随后发出从寄存器中读取的指令。控制器再次写入 I2C 地址。控制器已经指示要读取哪个寄存器,现在控制器向器件发送读取信息,以便可以读取 ADS1115 的数据转换寄存器。此时,R/W 位设置为高电平,表示读取。同样,地址帧完成后,ADS1115 会对地址进行 ACK。
接下来的两个数据字节用于读取寄存器。第一个字节是转换数据的最高有效字节,然后第二个字节作为对最低有效字节转换数据的读取。每个字节的控制器随后都有一个来自控制器的 ACK。最后,控制器发送 STOP 以结束 I2C 通信。
与上一个示例一样,图 4-5 是一个方便的图,显示了与器件的 I2C 通信。如果通信存在问题,可以使用 SDA 和 SCL 的示波器图与该示例写入进行比较。