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.

[参考译文] ADS112C04:ADS112C04单次模式读取问题#39;s

Guru**** 2587275 points
Other Parts Discussed in Thread: ADS112C04

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/985682/ads112c04-ads112c04-single-shot-mode-read-issue-s

器件型号:ADS112C04

你好  

如果写入从器件地址和 ADS112C04中的任何其他命令、我就能够获得 ACK。 我编写的每个命令。

我正在执行的步骤:

通过发出以下命令来复位 ADS112C04

0x80 0x06

2.我正在单次模式下尝试将其设置为默认值。

我将通过以下方式写入 ANI0

0x80 0x40 0x81

 // WREG 命令用于设置多路复用器

0x80 0x08

      // ADC START/SYNC 转换命令

监视 DRDY 并等待 DRDY 从高电平转换为低电平

0x80 0x10 0x81{MSB 字节}{LSB 字节}

 //从 ADC 返回的 RDATA 命令和数据

在执行读取命令后、我将为 AIN1发送

0x80 0x40 0x91

 // WREG 命令用于设置多路复用器

0x80 0x08

      // ADC START/SYNC 转换命令

监视 DRDY 并等待 DRDY 从高电平转换为低电平  

在执行读取命令后、我将为 AIN2发送

0x80 0x40 0xa1

 // WREG 命令用于设置多路复用器

0x80 0x08

      // ADC START/SYNC 转换命令

监视 DRDY 并等待 DRDY 从高电平转换为低电平  

6.读取命令后、我将为 AIN3发送

0x80 0x40 0xb1

 // WREG 命令用于设置多路复用器

0x80 0x08

      // ADC START/SYNC 转换命令

监视 DRDY 并等待 DRDY 从高电平转换为低电平  

在最后一个频道之后,我再次重复步骤3。

但对于我来说,DRDY 引脚不会变为高电平至低电平。 2或3秒后、如果我同时应用0 v、则读取数据为 alwasy 高电平。

请帮助我解决此问题?


此致、

Naresh Reddy

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

    您好、Naresh、

    代码中的通信流看起来是正确的。  您是否验证了寄存器设置在寄存器写入后是否正确写入?  您是否有可以共享的示波器或逻辑分析仪通信画面?

    您如何监控 DRDY?  使用20sps 的默认数据速率、DRDY 将在发出 Start 命令大约50ms 后从高电平转换为低电平。  这可能会显示为脉冲、因此您可能需要使用逻辑分析仪的示波器进行采集。  我建议尝试连续转换模式、只是为了验证每次转换完成后 DRDY 脉冲。

    此外、AVDD 和 DVDD 均处于标称工作电压吗?  复位引脚是否拉高?

    假设转换输出代码为二进制补码。  对于0V 输入、看到0xFFFF (十进制-1)并不是不合理的。

    此致、

    Bob B

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

    Bob B.、您好。

    我尝试了连续对话模式、写如下所示。

    1、0x80 0x06

    2.no、我将配置寄存器写入如下

    0x80 0x40 0x81

    0x80 0x44 0xCA

    3.now 我发送了 START/SYNC 命令  

    0x80 0x08

    4.现在我等待 DRDY 从高电平变为低电平以发送 RDATA 命令

    0x80 0x10 0x81{_________________} {_________________}

    我遵循的这个流程将把 DRDY 作为 FPGA 的输入信号。

    每当 DRDY 变为高电平至低电平时、我都会开始发送 RDATA 命令

    天空蓝颜色信号为 DRDY。 另一个是 SDA。

    DRDY 信号如下所示、请找到所附图像。

    我不想在单次对话模式下尝试相同的操作。 我没有时间对此进行实验。

    请告诉我如何在此持续对话模式下切换到其他通道。

    我需要通过写入来获取 ANI1的数据  

    0x80 0x40 0x91

    0x80 0x40 0xa1

    0x80 0x40 0xb1

    对于剩余的通道。 在连续模式下、如何停止当前对话以及如何切换到其他后续通道。 如 ANI 1、ANI 2、ANI 3、ANI 0重复出现。

    此致、

    Nareyreddy

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

    您好 、Nareyreddy、

    通信现在似乎在工作。  从一个通道读取数据后、您将写入下一个通道的多路复用器更改。  写入寄存器后、转换将自动重启、以便多路复用器更改后的转换(DRDY 从高电平下降到低电平)对新通道数据有效。   

    不过、SCL 速度似乎约为50kHz。  在之前所选通道的转换结束之前、多路复用器写入命令可能尚未完成。  因此、您需要确保在新选择的通道的转换完成之前不会读取通道数据。  防止这种重叠的一种方法是加快 SCL 时钟的速度、以便 RDATA 和 WREG 命令都能在转换的1ms 时间内执行。

    代码流将与单次模式相同、只是在每次通道更改后无需传输 START 命令。  发送 START 命令不会影响任何操作、因为转换将再次重新启动、但会延迟转换结束。

    此致、

    Bob B

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

     Bob B.、您好。

    现在、我能够以连续对话模式从所有通道接收数据。

    我向所有通道施加了3.3V 电压。 为此、我将得到0xAB9C 或43932十进制值。 我想知道如何将该值转换为电压、以验证我们提供的任何东西是否正确。

    我选择 了使用 REFP 和 REFN 输入作为基准的外部基准。

    增益为1。

    请查找所附的 ADS112C04连接。

    请告诉我将这些值转换为电压的公式。

    对于 ANI 0、我将应用3.3V 电压

    此致、

    Nareyreddy

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

    您好、Nareyreddy、

    请记住、ADS112C04的输出代码采用二进制补码。  0xAB9C 不是正值、而是负值。  正值范围为0x0000到0x7FFF (+FS)、负值范围为0xFFFF (十进制-1)到0x8000 (-FS)。  最大正代码为32、767、因此43932不是有效代码。

    我对您的输入电路感到困惑、因为我没有地方实际输入电压。  我假设输入连接到 U64以获得-1/2的增益、然后连接到 U45以获得-1的增益。  对于3.3V 输入、如果我对电路正确、则输出将为1.65V。

    您使用模拟电源作为5V 基准的基准电压。  数据表中给出了1个代码或 LSB 的值、分别为(+/- VREF/增益)/2^16。  在您的配置中、增益为1时为10V/2^16、或每个代码约为152.6uV。  将这个数字分成1.65V 是10813个代码(0x2A3D)。

    我在您的原理图中注意到了一些问题。  AVSS 通过 FB22连接到-2.5V。  但您还通过 R76将 AVSS 接地。

    我还注意到运算放大器的输出直接连接到模拟输入。  由于运算放大器由+/- 5V 电压供电、因此必须非常小心地保护输入、并且如果输出应该轨到 ADS112C04的输入将超过绝对最大输入电压、并且很可能会损坏 ADS112C04。  我建议确保从运算放大器流经 ADS112C04输入的最大电流保持在小于10mA 的水平。  这可以通过使用串联电阻来实现。  您可能还需要添加一些电容器以创建低通滤波器。

    此致、

    Bob B

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

    你好。。。

    我将使用写入配置寄存器1、如下所示

    0x80 0x44 0xCA

    对于 ANI 0、我设置如下  

    0x80 0x40 0x81

    我将获取 SDA 数据,如下所示。

    Yello One 是 SDA

    天空蓝是 SCL

    最后的对话结果是、我得到的结果是  

    如果我将 ANI0应用为3.3V (3、3V 除以增益、ADS112C04获得1.65V)、则十进制为0x6A86 27270

    如果我对 ADC 通道 ANI 0到 ANI 3应用0V、我将得到十进制的0x3FBF 16369

     对于3.3V 输入、如果我对电路正确、则输出将为1.65V。 是您在 ADS112C04中的正确答案 ANI 0我获得1.65V .R76是 DNM (它未安装在 PCB 中)

    AVDD 为0+2.5V

    AVSS 为-2.5V

    请告诉我如何测量负电压。

    我在这方面做了另一项测试。 如下所示

    0x80 0x40 0x01

    我尝试读取数据、现在我获得了0x2A3C 十进制(10812)。

    对于该 ANI 0、我施加了3.3V (增益后为1.65V)、而 ANI 1 I 施加了0V

    请告诉我出错的地方。

    此致、

    Nareyreddy。

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

    您好、Nareyreddy、

    当您使用双极模拟电源(+/- 2.5V)并为 AINP = AIN0、AINN = AVSS 选择多路复用器设置时、请注意、测量不是相对于 AGND、而是相对于 AVSS。  因此、如果您的输入相对于 AGND 为1.65V、则输出代码将反映相对于 AVSS (-2.5V)的结果。  代码27270相当于测得的电压高于 AVSS (-2.5)约4.16V。  要查看与 AGND 相关的结果、您需要减去2.5V。 4.15 - 2.5 =相对于 AGND 的1.66V。

    对于0V 输入(代码16369)、您可以看到输出代码计算为大约2.5V。  当您减去2.5V 时、您得到0V (2.5 - 2.5 = 0V)。   

    当相对于 AVSS 进行测量时、您将仅使用满量程范围的1/2、因为 AINP 永远不会低于 AINN、并且您永远不会看到负输出代码。  如果要测量 AGND 上下的电压、则需要将其中一个输入设置为 AGND (0V)、并相对于该输入进行测量。   

    例如、如果您将 AIN3设置为 AGND、则会有3个输入可相对于 AGND 进行差分测量(AIN0/AIN3、AIN1/AIN3和 AIN2/AIN3)。  通过这种方法、您可以测量高于和低于 AGND 的值。

    此致、

    Bob B

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

    Bob B.、您好。

    如果我想测量(+/- 2.5V)之间的电压 (如果我将 AVSS 接地),它是否会提供负电压和正电压范围?

    如果 ANIP 与 ANI0 (-1.0V)和 ANIN (AVSS (接地))配合使用。 它是否会提供负电压范围?

    此致、

    Nareyreddy

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

    您好、Nareyreddy、

    ADS112C04的输入范围将由电源电压决定。  该器件的输入范围是 AVDD+300mV 至 AVSS-300mV 的绝对最大值。  如果将 AVSS 连接到 GND、则会受到输入范围的限制、无法测量低于 GND 的电压。

    您可以 使用电流设置、只需在每次测量中添加2.5V 电压即可。  但是、使用此方法会将您限制为15位、因为您无法在负范围内进行测量。

    您可以使用单极电源并将输入电压偏移2.5V、但这将具有与双极电源相同的效果、因为您只能在正范围内进行测量。

    如果您想测量+/-电压、您需要使用我在上一篇文章中描述的方法。

    此致、

    Bob B