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.

[参考译文] ADS7142:I2C 数据采集

Guru**** 2487425 points
Other Parts Discussed in Thread: ADS7142

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1258070/ads7142-i2c-data-acquisition

器件型号:ADS7142

大家好!

研究完数据表并实现了以单通道(带 AIN0)配置将 AIN1端接至 GND 的芯片后、我要通过 I2C 调试工具箱(例如 Aardvark)来设置芯片、以将其配置寄存器映射到数据表上。

我在每次写入之前正确写入0x08、并在读取寄存器之前写入0x10。

作为最后一次写入寄存器、我开始采集数据(0x1E、其中0x1作为数据)、 但我无法读取包含 ADC 读取的字和缓冲区中包含的数据的数据状态(寄存器0x01中的 DATA_BUFF_STATUS 为0x00)(我没有它的位置)。 我不需要阈值或故障警报、因此我将跳过这些器件。 此外、我的采样信号非常慢(大约几秒)。

我看到有一种从 C 语言开发的芯片页面下载的代码、该代码执行的步骤与我向芯片施加的步骤完全相同(ADS7142_ManualMode_CH0Scan.c)、但在配置(TM4C1294_ADS7142_Functions.c)结束并开始通道数据采集时发送某个命令。

是否可以通过我使用的工具读取 i2c 寄存器的包含内容? 也许必须设置另一个未指示的寄存器、才能读取转换结果值。

Br、

Mattia

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

    大家好、Mattia、

    您能否发送已在 Aardvark 工具中设置的命令缓冲区的详细信息?  使用 O'Scope"或"逻辑分析仪"捕获的任何屏幕也可能有用。

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

    您好、Tom。

    当然可以。

    以下是我在 Aardwark 中进行的写入/读取操作、以尝试读取 寄存器0x01 (DATA_BUFF_STATUS)。 在查找该数据之前、可能缺少要写入的寄存器:

    即使此代码与"ADS7142_ManualMode_CH0Scan.c"代码兼容。

    我想还需要考虑所有所需的延迟(每个命令后15ms、命令发送后250ms、写入 START_ACQ 位让它获取一些数据)

    在采集期间、我始终获得以下波形:

    其中、黄色迹线是在放置在 CH0前面的562R 输入电阻器上采样的波形(2.885V 作为值、 这在 ADC 范围内)、粉色的迹线为 Busy/#RDY、它应在采集和采样阶段根据数据表打开高电平。

    我认为我遇到的问题是由粉红色迹线高电平的泄露造成的...但我不知道如何通过手动调试芯片来修复它。

    Br、
    Mattia

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

    您好、Tom、

    在芯片内部、我注意到有一个周期为50ns 的内部振荡器(20MHz)、它与我对通道的手动设置(CH0的自主扫描)一起、 哪个命令 SAR-ADC、哪个将我的数据输入...这可从第19页的单元功能方框图中查看。 在我的应用中、LSB 分辨率是3.3/212、因此~0.8mV。

    我在芯片数据表中找到了两个图像(在第31页和33页)、其中说明了在将 START_BIT (0x1E)设置为1后、我应该提供许多 SCL 周期来进行采集。 在此采集周期之后、我必须将 START_BIT 设置为0以终止采集(如数据表中所述、这会将 BUSY 位恢复为低电平)、然后我可以开始以下采集。

    此外、在手动模式下、在自主扫描中将 I2C 通道设置为100kHz (对于 CH0)、根据图56的计算、我需要5.556MHz 的采样频率(7.4.2.2分段中数据表中的公式7)、 带有自主扫描的手动模式禁止使用 nCLK 寄存器)、该模式由主机为采集样本而发送的 SCL 连续读取命令给出。

    为此、我对命令使用了0x30操作码(第28页、连续块读取)、后跟56倍0x01寄存器、通过100kHz 的顺序 SCL 帧为芯片提供所需的采样频率、从而获得该采样频率。 我希望这是正确的。

    通过这样操作、我可以看到有时成功检索了 DATA_buff_status (0x01)中的值0x01、该值指示数据缓冲区中有器件、但我无法读取其值、因为该值没有寄存器位置。

    我附上检索到的图像:

    但在示波器上(相对于我的上一个回复)、我仍然看到逻辑低电平"0"上阻止的粉色波形。 我认为这仍然是个问题、比如如果芯片不将 START_BIT 应用于1、这会使该信号在逻辑电平中发生变化。

    解决此问题后、我当时想能够获得以十六进制格式存储的、相对于范围0-1的值。 将其除以分辨率、然后将其重新整理到3.3V、我就得到了在输入端看到的值。

    如果大家能告诉我、我遵循的是正确的继续操作方式、并且缺少一个用于读取 DATA_buff 值的寄存器、我将非常高兴您能操作。

    Br、

    Mattia

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

    您是否可以尝试按照图56进行操作、看看您是否可以在手动模式下读取 CH0?

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

    您好、Tom。

    我已尝试执行图56中所示的完整配置、但仍不成功。

    是否有任何寄存器可读取 DATA_BUFFER?

    韩语、

    Mattia

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

    您是否已查看第7.3.7.2节?

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

    我应该查找哪个寄存器? 我想我无法使用0x30和没有寄存器来读取 i2c 总线的16个连续字16位...我想我需要一个寄存器来进行读取...

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

    只需读取 ADS7142的 I2C 地址即可访问数据缓冲区。