This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1015:I2C 协议问题

Guru**** 2524550 points
Other Parts Discussed in Thread: ADS1015

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/764170/ads1015-i2c-protocol-questions

器件型号:ADS1015

我正在为 TI ADS1015模数转换器构建 LabVIEW 接口。  这是一个教学项目、因此硬件成本很低。  LabVIEW 使用 Arduino 作为 ADS1015的 i2c 接口。  LINX LabVIEW 模块通过 Arduino Uno 的内置 SCL 和 SDA 引脚提供基本的 i2c 通信功能。  

我在 Adafruit 的分线板上使用 ADS1015。  该器 件的 i2c 地址为1001000_2=0x48=72_10 (LabVIEW 将字节地址指定为无符号整型)。

LabVIEW (图形)代码如下所示:

此程序运行时没有错误、但结果对我来说还没有意义。  上面的代码启动 i2c 接口、然后发送一系列 i2c 命令(数据表第8页 的"快速启动"系列、cdn-shop.adafruit.com/.../ads1015.pdf):)

I2C 写入0b10010000

I2C 写入0b00000001

I2C 写入0b00000100

I2C 写入0b10000011

 

I2C 写入0b10010000

I2C 写入0b00000000

 

I2C 写入0b1000001

I2C 读取  

I2C 读取  

LabVIEW 程序在程序序列结束时从两个 i2c 读取命令返回133_10。

133_10=0b10000101=0x85

因此,从 ADS1015返回的总数据将是0b1000 0101 1000 0101 = 0x8585?

这是12位 ADC、因此我认为(再次根据数据表) i2c 信号的相关部分为0b1000 0101 1000 0101、即 ADC 读数为-2^11 + 64+16+8 =-2048+88 =-1960_10、可能+/- 2048?  假设没有缩放(电路板连接到5V 电源),则读数大约为5V*(1960/2048)~=-4.78v?

0.是否应该担心返回(读取) i2c 信号(转换寄存器)的"保留"部分是0101?  规格表中的"0h"是什么意思?  转换寄存器的这一部分是否意味着特殊的东西?  

1.我对 ADC 信号的分析是否看起来是合理的结果?  我是否以正确的方式考虑了返回的信号?  

2.在快速入门演示中、我从四个模拟引脚中的哪个引脚读取数据?  我是否在使用放大、单端与双端等?  我仍然对数据表的这一部分感到困惑。

感谢您对我所做的错误的评论!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nathan、


    在调试数字通信时、我认为您首先应该做的是获取示波器或逻辑分析仪、并查看器件和微控制器之间的线路。 对于 ADS1015、我发现最好查看这些线路、并将其与数据表第20和21页的图15和16中显示的通信数字进行比较(请注意、TI 网站上的数据表有更新版本: www.ti.com/.../ads1015.pdf )。 这些将是如何与器件通信的最佳示例。

    在您的数据表版本中、写入配置寄存器的 MSB 字节存在差异。 在该数据表中、MSB 字节为0b00000001、在较新的数据表中、这是0b10000100。 在较新版本中、这将启动转换、设置 PGA[2:0]= 010、使输入范围为±2.048V、并将器件设置为连续转换模式。 我可能会从该设置开始、除非您需要从更大的输入范围开始。

    在回答您的问题时、下面是我的答案:

    0、此时、我认为您在读取转换时遇到了一些问题。 您可能正在读取配置寄存器、而不是转换寄存器。 配置寄存器的默认值为8583h。 请注意、我们通常使用 h 表示十六进制符号(0h 与0x0相同)。 此外、您可能正在读取器件、但会在 GUI 中两次报告第一个字节。 同样、您应该会得到一个示波器并直接检查通信。

    ADC 只使用内部基准作为基准、从不使用电源(5V)作为基准。 如果要测量5V 的输入电压、则需要使用±6.144V 范围。 这将给出一个值1667作为正数结果、或以十六进制表示为683h。

    2.在快速入门指南中、您首先要写入配置寄存器。 第一个字节是地址。 第二个字节是0b00000001、作为到配置寄存器的指针。 第三个和第四个字节是配置寄存器。 这些是您要为 ADC 设置的值。 这些设置了增益、数据速率和所有功能。 在新版本的数据表中、请查看图21和表6。


    吴约瑟