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中的每个通道读取数据

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

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/976622/ads112c04-how-to-read-the-data-from-each-channel-in-the-ads112c04

器件型号:ADS112C04

你好。。。

我想知道如何从 ADS112C04 ADC 读取数据。 首先、我将从器件地址指定为0x80、然后在 START/SYNC 命令指定为0x08。 执行此操作后、我应该做什么、我想从 ADC 通道连续读取数据。  在给出 启动/同步之后、我应该向 ADC 发送什么内容来读取连接到 ADC 的每个通道的16位值。

此致、

Nareyreddy

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

    您好、Naresh、

    实际上有许多方法可以实现这一点、因此了解您打算如何配置 ADS112C04以及要测量的值将会有所帮助。  默认配置将输入置于 AIN0和 AIN1输入、在单次模式下运行、转换速率为20sps、使用增益为1的内部基准。

    发出 START 命令后、大约50ms 后、转换将完成、DRDY 引脚会发出从高电平状态变为低电平状态的信号。  此时、ADC 将停止转换、并通过发出 RDATA 命令等待您读取结果。  读取转换数据后、您可以将输入多路复用器更改为其他通道、并按照与之前相同的过程再次发出 START 命令。

    此致、

    Bob B   

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

    Bob b.、您好。

    感谢您重放我的问题。

    如果我选择对话模式作为连续对话、则 ADS112C04是否会连续发送通道 AIN0至 AIN3数据(如自动扫描模式)。

    如果我向 ADS112C04写入0x80、0x40、0x00 --configure 寄存器0x00h

    如果我向 ADS112C04写入0x80、0x44、0x08 --configure 寄存器0x01h

    如果我使用{0x81、0x10、---、---}来读取 ADS112C04 、则 ADS112C04将提供通道 AIN0数据、然后是其余通道。

    此致、

    Nareyreddy

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

    您好、Nareyreddy、

    ADS112C04没有自动扫描功能、也没有 FIFO 存储器。  每个输入通道必须:

    • 首先选择、
    • 检测到转换结束、
    • 以及从器件读取的转换数据。  

    所需的每个输入通道都需要执行此操作。  

    此致、

    Bob B

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

    你好。。。

    如果 ADS112C04中没有自动扫描功能 ,那么什么是连续对话模式和单次转换模式?

    此致,

    Nareyreddy

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

    你好。。。

    如果希望单独读取每个通道、我需要向 ADC 发送哪些数据。

    AIN0--

    AIN1----

    AIN2----

    AIN3 --

    此致、

    Nareyreddy

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

    您好、Nareyreddy、

    有关连续转换和单冲运行模式的详细信息、请参阅 ADS112C04数据表。  基本上、连续模式是指所选多路复用器通道的连续转换。  一旦转换完成、另一个转换将自动启动。  对于单次模式、所选多路复用器通道的一次转换仅完成、然后 ADS112C04将进入低功耗状态。

    此致、

    Bob B

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

    您好、Nareyreddy、

    我之前已经解释过这个过程、并将再次尝试做一些更详细的说明。  我假设当您说要测量 AIN0时、您确实需要测量 AIN0到 AVSS 作为多路复用器选择。  在本次讨论中、我们将对寄存器0以外的所有寄存器设置使用默认寄存器设置。  要进行以 AVSS (AGND)为基准的单端测量、需要禁用并绕过寄存器0中的 PGA (位0应设置为1)。

    • 必须首先在配置寄存器0中选择 AINP= AIN0和 AINN= AVSS。  多路复用器选择位(MUX[3:0])是寄存器0的位7-4。  AIN0至 AVSS 为1000b、寄存器0的值为10000001b 或0x81。  您需要为寄存器0发送 WREG 命令、该寄存器为0x40 0x81
    • 写入 START 命令0x08
    • 监控 DRDY 从高电平状态变为低电平状态、
    • 以及使用 RDATA 命令从器件读取的转换数据、方法是写入0x10、然后读取2个字节的数据。  

    您可以对其他通道重复此过程:

    • 通过 WREG 0x40 0x91将多路复用器设置为 AIN1
    • 通过 WREG 0x40 0xA1将多路复用器设置为 AIN2
    • 通过 WREG 0x40 0xB1将多路复用器设置为 AIN3

    有关如何完成各种操作的具体详细信息、请查看 ADS112C04数据表。

    此致、

    Bob B

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

    Bob B,您好。

    我根据数据表编写代码。 如果我需要在连续对话模式下读取数据、我有疑问、我需要监控 DRDY 输入。

    请告诉我是否可以开始读取数据。 在数据表中、他们提到、每当 DRDY 变为低电平时、都会指示可用的新数据。  

    当 DRDY 处于低电平时、是否需要仅在 DRDY 发送 START 和 RE关注 命令?  

    高电平的时间? 因为在数据表中、它显示了 RDATA "A"位 DRDY 变为高电平状态。

    如果我按如下方式写入  

    • 通过 WREG 0x40 0x91将多路复用器设置为 AIN1
    • 通过 WREG 0x40 0xA1将多路复用器设置为 AIN2
    • 通过 WREG 0x40 0xB1将多路复用器设置为 AIN3
    • 通过 WREG 0x40 0x81将多路复用器设置为 AIN3

    如果我被写入 WREG 0x40 0x81并且我停止。 现在、我需要等待 DRDY 变为低电平、以测量 CH0数据、从而提供命令0x80 0x10 0x81{---} ,{--------} 对于数据对应的 CH0。

    如果 DRDY 变为低电平、我如何才能提供读取命令?

    再次读取一个通道数据后,我需要再写入一个通道,然后等待 DRDY 变为低电平?

    此致、

    Nareyreddy

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

    您好 、Nareyreddy、

    尽管您可以在连续转换模式下运行、但如果您使用单次模式、则可能更容易避免转换重叠。  在连续转换模式下、写入新的多路复用器配置将使用新配置重新启动转换、但使用此模式时、您需要确保跟踪转换以及转换准备好读取的时间。

    在单次模式下、您可以控制何时开始转换以及何时读取结果。  这样、对环路进行编程会更容易一些。

    在采用单冲模式的伪代码中、代码流将显示如下所示:

    while (.t)

    1. 发送 WREG 命令以将多路复用器设置为 AIN0-AVSS
    2. 发送 Start 命令以开始 AIN0的转换
    3. 针对 DRDY 处于高电平的 while 循环、并在 DRDY 变为低电平时退出循环
    4. 发出 RDATA 命令并读取 AIN0的结果
    5. 发送 WREG 命令以将多路复用器设置为 AIN1-AVSS
    6. 发送 Start 命令以开始 AIN1的转换
    7. 针对 DRDY 处于高电平的 while 循环、并在 DRDY 变为低电平时退出循环
    8. 发出 RDATA 命令并读取 AIN1的结果
    9. 发送 WREG 命令以将多路复用器设置为 AIN2-AVSS
    10. 发送 Start 命令以开始 AIN2的转换
    11. 针对 DRDY 处于高电平的 while 循环、并在 DRDY 变为低电平时退出循环
    12. 发出 RDATA 命令并读取 AIN2的结果
    13. 发送 WREG 命令以将多路复用器设置为 AIN3-AVSS
    14. 发送 Start 命令以开始 AIN3的转换
    15. 针对 DRDY 处于高电平的 while 循环、并在 DRDY 变为低电平时退出循环
    16. 发出 RDATA 命令并读取 AIN3的结果
    17. 回退到开始(1)

    这是基本流程。  为了加快环路速度、可以执行一些变体、但这种单次模式非常适合确保在适当的时间读取每个转换。

    此致、

    Bob B

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

    您好 Bob。

    感谢您回复我的查询。

    我编写的代码如下所示  

    1. 发送 WREG 命令将多路复用器设置为 AIN0-AVSS 0x80 0x40 0x81,并指定停止 。 我是否应等待 DRDY 变为低电平以发送开始、然后等待命令0x80 0x10 0x81{_________________} ,{_________________} 数据读取?

    此致、

    Nareyreddy

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

    您好 、Nareyreddy、

    我现在可以看到这可能有点令人困惑的原因。  有 I2C 通信 S (I2C 通信的开始条件)、SR (I2C 通信的重复开始条件)和 P (I2C 通信的停止条件)。

    还有针对 ADS112C04本身的命令、其中包括 START/SYNC 命令(该命令将在单次模式下启动转换或在连续模式下重启转换)、WREG (写入 ADC 寄存器)、RREG (读取 ADC 寄存器)和 RDATA 命令(读取上次完成的转换结果)。

    每个 ADC 命令都必须由 I2C 通信进行构建。  例如:

    0x80 0x40 0x81

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

    0x80 0x08

          // ADC START/SYNC 转换命令

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

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

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

    我希望这能使它更加明确一点。

    此致、

    Bob B

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

    Bob B.、您好。

    感谢您重放回我的电子邮件。

    现在,我能够从 ADS112C04获取 ACK。 我编写的每个命令。

    我正在执行的步骤:

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

    0x80 0x06

    我正在单次模式下进行控制、它被设置为扩散。

    我将通过以下方式写入 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 引脚不会变为高电平至低电平。 它始终只有高电平。


    此致、

    Naresh Reddy