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.

[参考译文] ADS1281:如何校准 ADS1281?

Guru**** 2765795 points

Other Parts Discussed in Thread: ADS1281, ADS1282

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/774165/ads1281-how-to-calibrate-ads1281

器件型号:ADS1281
主题中讨论的其他器件: ADS1282

我们使用 stm32f103 SPI 来控制和读取 ADS1281。 当使用短接模拟输入校准 ADS1281 ofc 寄存器时、我发送以下命令系列、然后开始读取数据。 它似乎扩散到 ADS1281 EVM。

SDATAC RDATAC SDATAC OFSCAL RDATAC


现在我的问题是:

1.请提供 ADS1281的示例程序吗?

2.如何校准 ADS1281以及如何读取 ADC 数据?

谢谢。

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

    欢迎访问 TI E2E 论坛!

    您显示的是在 ADS1281EVM 上观察到的命令序列、还是您当前在 STM MCU 中使用的命令序列?

    如果您参考 ADS1281数据表中的图51、校准命令序列应为:
    SDATAC、SYNC、RDATAC、(等待/DRDY)、SDATAC、 OFSCAL、RDATAC、(等待/DRDY)

    我并不完全确定器件需要处于 RDATAC 模式的原因、但 SDATAC 命令当然是退出 RDATAC 模式所必需的、这样才能发送 SYNC 和 OFSCAL 命令。 首次等待数据就绪时、您将确保数字滤波器在执行校准之前已稳定。

    或者、您可以在输入短接的情况下轻松读取读数(或多个读数的平均值)、并将此结果写入 OFC[2:0]寄存器。 OFSCAL 命令是可选的。

    遗憾的是、我没有 ADS1282的任何示例代码;但是、如果您有其他编程问题、我们将尽力为您提供帮助!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Chris:

    感谢您的回复!
    首先、下面提到的命令序列是我正在使用 STM MCU。 我们无法知道 ADS1281EVM 的校准过程。

    在此命令序列中、"SDATAC、SYNC、RDATAC、(等待/DRDY)、 SDATAC、OFSCAL、RDATAC、(等待/DRDY)"、在发送 SYNC 命令后、/drdy 保持高电平的时间是多久? 如果不是中断模式,则延迟??? MS 发送 RDATAC?

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

    大家好、W1、

    数据表第6页上有一个 ADS1281的时序图、如下所示。  请参阅圈出的部分。

    如图51所示、在发出 SYNC 命令后、DRDY 会在64个数据转换周期内保持高电平。  校准命令之后、DRDY 在16个数据转换周期内保持高电平。  转换周期将与所选数据速率和所使用的振荡器频率相关。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bob、您好!
    首先感谢您!
    我尝试了您提到的方法。 例如、如果 MCU 读取0xFFA0437、则设置 OFC[0]= 0x04、OFC[1]= 0xfa、OFC[0]= 0xff。 对吗?
    但是、我读取输入数据、它大约为+-50000。
    如果我将模拟输入+连接到2.5V、将模拟输入-连接到 GND、则得到0x7ffffffff。 如果我将模拟输入-连接到-2.5B、将模拟输入+连接到 GND、我将得到0x80000。
    看起来是对的。

    那么、我很困惑导致这种结果的原因是什么?

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

    您所做的事情有点令人困惑、因为您已经显示了 OFC[0]两次。 要进行手动偏移计算、您必须按照 ADS1281数据表第29页的用户校准部分中的说明进行操作。 偏移校准要求将 AINP 和 AINN 输入短接在一起。 您还需要验证或设置 OFC 寄存器值、以便它们在转换序列开始时都为0。 进行多次转换并将这些值平均在一起。 然后、您将结果复制到 OFC 寄存器中。

    OFC 寄存器为24位、而不是32位。 OFC 寄存器中的值与32位值左对齐。 在 OFC 寄存器中设置值时、从 MSB 值 OFC[2]开始。 下一个字节是 OFC[1]、字节3是 OFC[0]。 您忽略 LSB 字节。

    如果我们使用0xFFA0437示例、则 OFC[2]将为0xff、OFC[1]将为0xfa、OFC[0]将为0x04。 您将忽略最后一个字节(0x37)。 该值表示负偏移。 将从转换结果中减去 OFC 值。

    转换结果现在变为0xXXXXXXXX (其中 XXXXXXXX 表示转换输出值)- 0xFFA0400。 因此、在测量短路输入时、您应该会看到接近于零的东西加上噪声。

    请记住、输出代码是二进制补码、因此如果您要将值转换为十进制、则为负数。 然后、转换结果-(-offset)、这实际上会将 OFC 值添加到转换结果中。

    此致、
    Bob B