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.

[参考译文] ADS1220:ADS1220 -模拟输入电压-读取值

Guru**** 1810550 points
Other Parts Discussed in Thread: ADS1220, ADS131M02, ADS127L11
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1427198/ads1220-ads1220--analog-input-voltage---read-value

器件型号:ADS1220
主题中讨论的其他器件: ADS131M02ADS127L11

工具与软件:

你好

我将根据以下内容配置 ADC 、以读取 AIN0提供的输入电压:

配置寄存器0:0xA4

配置寄存器1:0x44

配置寄存器2:0x10

配置寄存器3:0x00

这些是我尝试保存在寄存器中的值。 我有3个问题。

问题1:

        在写入寄存器后,当我尝试读取他们刚刚设置后,我得到了一半的我已经设置到寄存器,即右移1 (0xA4>>1 = 0x52 )。 我不知道它的行为原因(我使用 stm32l0系列 MCU (stm32cubeIde 中)进行 SPI 通信)

问题2:

         我已经为 AIN2提供了' 0V '的直流电源、并且开始从寄存器中读取值 、从输出值中获取的值也会递增。 位0x8xxxxx。 向 AIN2和 GND 提供正电源时、会得到这样的值。 当我开始增加电压时、输出值也会增加、比如0x9xxxxx 或0xAxxxxx。 但根据数据表、它应该是反向的。 我们将获得反相输出。 如何可能以及如何解决该问题。  

 

问题3:

       在输入侧进行一些友好的更改后、我们确保 输入直流电压和输出直流电压 匹配。 现在、实际问题来了、当 我尝试在输入端提供模拟信号时、没有得到相同的信号、与输入信号相比输出幅值太低、我们尝试将 SPS 从20SPS 更改为1000SPS、频率从1000更改为100Hz、幅值为100mV。 输入信号的振幅、则输出值没有变化。 为什么输出信号的幅度与输入信号不匹配(信号之间没有分压器)直接被提供给 AIN2 串联寄存器。 我们得到的波形 与 输入不同。

如果有人知道这些问题的原因或解决方案、请提供您的建议。

提前感谢您。

此致

Sai Krishna P

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

    嗨、Sai、

    [报价用户 id="627640" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1427198/ads1220-ads1220--analogue-input-voltage---read-value ]]配置寄存器2:0x10[/QUOT]

    您将向此寄存器中的"50/60"字段写入"01"。 请记住、对于除20SPS 之外的任何数据速率、应向此字段写入"00"。

    [报价用户 id="627640" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1427198/ads1220-ads1220--analogue-input-voltage---read-value "]

    问题1:

            在写入寄存器后,当我尝试读取他们刚刚设置后,我得到了一半的我已经设置到寄存器,即右移1 (0xA4>>1 = 0x52 )。 我不知道它的行为原因(我使用 stm32l0系列 MCU (stm32cubeIde 中)进行 SPI 通信)

    [报价]

    您能否使用逻辑分析仪探测 SPI 数字通信线路、以验证 SDO 实际上是什么样的? 代码/MCU (而不是右移数据的器件)可能未正确解释数据。 使用逻辑分析仪探测通信线路将有助于验证来自器件的通信是什么样的以及是否只是解释错误。 是否使用 SPI 模式1 (其中 CPOL = 0且 CPHA = 1)?

    [报价用户 id="627640" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1427198/ads1220-ads1220--analogue-input-voltage---read-value "]

    问题2:

             我已经为 AIN2提供了' 0V '的直流电源、并且开始从寄存器中读取值 、从输出值中获取的值也会递增。 位0x8xxxxx。 向 AIN2和 GND 提供正电源时、会得到这样的值。 当我开始增加电压时、输出值也会增加、比如0x9xxxxx 或0xAxxxxx。 但根据数据表、它应该是反向的。 我们将获得反相输出。 如何可能以及如何解决该问题。  

    [报价]

    我不确定这句话是什么意思。 您能否分享一下其中提到"根据数据表、应反转"这一表述的位置? 输入端电压的增加应与 ADC 的数字输出代码/二进制值的增加相对应。

    数据表中的第8.5.2节详细介绍了数据格式:

    请记住、数据以二进制补码表示、因此以"1"开头的二进制输出对应于负值。  

    [报价用户 id="627640" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1427198/ads1220-ads1220--analogue-input-voltage---read-value "]

    问题3:

           在输入侧进行一些友好的更改后、我们确保 输入直流电压和输出直流电压 匹配。 现在、实际问题来了、当 我尝试在输入端提供模拟信号时、没有得到相同的信号、与输入信号相比输出幅值太低、我们尝试将 SPS 从20SPS 更改为1000SPS、频率从1000更改为100Hz、幅值为100mV。 输入信号的振幅、则输出值没有变化。 为什么输出信号的幅度与输入信号不匹配(信号之间没有分压器)直接被提供给 AIN2 串联寄存器。 我们得到的波形 与 输入不同。

    [报价]

    您要尝试测量的输入信号是什么?

    输入端是否有可能衰减信号的 RC 滤波器元件?

    在20SPS 下测量1000Hz 信号毫无意义、因为每50个交流正弦波周期就只有1个 ADC 样本。 即使数据速率为1000SPS、信号频率为100Hz、但情况更好、每周期只有10个样本。  

    如果要采集频率更高的交流信号(如 ADS131M02、ADS127L11或 SAR ADC)、可能需要考虑使用具有更高数据速率的器件。 ADS1220通常用于测量直流或缓慢移动的信号、例如热电偶、RTD 温度测量、电阻式电桥输出等  

    此致、

    天使

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

    首先感谢天使的 帮助。

    查询1:

           如您所说、我将使用逻辑分析仪探测信号、并正确检查数据线。 就 SPI 通信而言、我已正确配置了 SPI、并且我正在使用 SPI 模式1 而变化。 以下是我使用的配置。 消息流

    hspi1.instance = SPI1;

    hspi1.Init.Mode = SPI_MODE_MASTER;

    hspi1.Init.direction = SPI_DIRECTION_2LINE;

    hspi1.Init.DataSize = SPI_DATASIZE_8bit;

    hspi1.Init.CLKPolarity = SPI_POLARIT_LOW;

    hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;

    hspi1.Init.NSS = SPI_NSS_soft;

    hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;

    hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;

    hspi1.Init.TIMode = SPI_TIMODE_DISABLE;

    hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;

    hspi1.Init.CRCPolynomial = 7;

    查询2:

    我的疑问是、每当我为 ADS1220提供+V DC 电源作为输入时。 当我尝试读取1220中的数据时、我读取到的数据具有负电压、即

    假设使用我应该获得的1V 输入 0x3E8000 但我将看到的表1220是 0xBE7FFC . 最大值 0x7FFFFF 然后、我将获得数据表中提到的预期输出。

    我不明白为什么会这样发生。

    查询3:

    我们正在尝试测量0至100Hz 的信号范围。 信号之间没有 RC 电路、信号与1220通道之间只有1个100 Ω 寄存器。

    在您做出响应后、我们现在将针对给定的频率范围使用600SPS。

    查询4 (新):

     

    我们尝试在单次转换模式和连续模式下读取数据。 设置如所示 PGA_1、AIN2_AVSS 、带有 600SPS .

    单次模式: 在单次模式下、我们将获得中所述的输出 查询2. . 在这里我不等 单调 变为低电平、我正在使用 RDATA 命令来读取数据。

    连续模式: 这里、我们得到的是我在 Query2中提到的正确值和值。 也就是说,如果我提供0.5V 直流电源,我将得到0.5V 仅(转换后).

    当我将电压增加到0.52V 时、如果我从输出中减去8388607、我将获得一些 X 值、那么我将获得0.52V。

    它仅在我在连续模式下启动转换时发生。 在这里不等 单调 变为低电平、我正在使用 RDATA 命令来读取数据。

    谢谢、此致

    Sai Krishna。

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

    嗨、Sai、

    我明天会给您回复。

    此致、

    天使

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

    嗨、Sai、

    您提到、在写入寄存器和执行读回时、数据似乎是右移的。 这可能是读取 ADC 转换数据时遇到的相同问题、因为您提到过数据中存在特定的偏移。 使用 MCU 捕获 SPI 数据的方式可能存在问题。

    验证的最佳方法是使用逻辑分析仪检查数字通信。 如果您可以提供从器件寄存器进行写入/读取以及执行 ADC 转换数据读取的捕获数据、将会更有帮助。  

    您是施加负电压还是正电压? 您的信号是单端还是差动信号? 如需显示原理图以及有关如何/在输入中应用什么的更多详细信息、将会有所帮助。

    这里我还没有在等什么 单调 引脚变为低电平[/报价]

    DRDY 指示新转换数据何时可用。 如果在新数据可用之前进行数据读取、则会接收到上次转换的 ADC 数据。  

    此外,在你的帖子似乎你的句子被切断,所以我不确定是否有其他信息,我缺失:

    此致、

    天使

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

    嗨、Angel、

    感谢您在我们处于艰难时期时提供的帮助。 我们得到了结果、符合我们的需求。 现在、我们能够正确采集数据、如数据表中所述。

     我们所面临问题的解决方案:

       **第一件事是 SPI 模式确保正确配置 SPI 模式、如1220数据表中所述。

       **确保您是否根据您的设置或条件正确配置了寄存器。

       **对、现在我们不使用 DRDY 引脚、而是从 RDATA 命令读取数据。

      为了获取正确的输出、我们遵循了这些原则。

    感谢为我们提供支持的每个人。

    谢谢、此致

    Sai Krishna P.