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.

[参考译文] ADS1257:与多个 ADS1257通信并同步

Guru**** 2551110 points
Other Parts Discussed in Thread: ADS1257, ADS1256

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/752500/ads1257-communicating-with-and-synchronizing-multiple-ads1257s

器件型号:ADS1257
主题中讨论的其他器件: ADS1256

您好!

我想知道是否有更快的方法来设置 ADC 以与微控制器(ESP32)通信。 通常、我们是否必须根据 ADC 的数据表手动设置计时、寄存器脉冲?  

此外、当我查看此器件的数据表时、有几个引脚、即使在我浏览了它们的说明之后、我仍然无法完全理解这些引脚。

同步引脚的用途是什么? "SYNC 命令同步模数转换。" 但是、SCLK 是否用于该目的? 我假设 SCLK 同步微控制器和 ADC

如果每个 微控制器有3个 ADS1257 (我使用 SparkFun 的 ESP32器件)、我是否需要3个能够进行硬件中断的独立 DRDY 输出引脚?

3.由于我有3 个 ADS1257,如何修改伪代码以容纳更多的2个广告?

     答:从开始到循环前一行、我们将为 所有 ads1257执行此操作

     b.如果我在 ads1257之间切换、我不需要关闭它们的电源、对吧? 我将返回到环路并将下 一个 ads1257的 CS 引 脚置为低电平吗?

4、DRATE 和 PGA 增益在此伪代码中设置在哪里? 它是我们发送 SDATAC 命令后的 WREG 命令、对吧?

5.如果我测量单端信号而不是差分模式、在性能方面是否有差异? 每个 AD 将从2次测量中收集样本、因此我们还必须对每个 ADC 进行多路复用

6.这可能是一个天真的问题,通常数字差分信号需要2个引脚,一个 P 和一个 N (与 USB 连接器类似)。 DIN 和 DOUT 的时序图表明它们是差分信号、但我只看到一个用于 DIN 的引脚和一个用于 DOUT 的引脚。 我想知道这是如何工作的?

最后一个天真的问题是、如果我将 ADC 采样率设置为1kHz、但我进行了2次测量、那么每次测量的采样率是否为1kHz? 伪代码中的环路频率是否必须与 ADC 的采样率匹配? 换句话说、我如何以1kHz 的速率收集6次测量(每个 ADC 2次测量)到我的微控制器?

非常感谢您的支持、我期待很快收到您的回复、

Khoi Ly

机械工程博士  

科罗拉多大学博尔德分校

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

    您好、Khoi、

    如果您使用的是 SPI 外设、则设置 MCU 的 SPI 外设不应是一个完全手动的过程。 是的、您需要注意一些时序要求(例如在设置/CS 为低电平后或在 SPI 命令之间添加延迟);但是、一旦正确设置 SCLK 频率和 SPI 模式、您应该能够相当快速地开始与器件通信。 要回答您的问题...

     

    1. SYNC 引脚重新启动 ADC 转换。 它通常用于同步多个 ADS12S、以便可以及时关联来自多个源的转换结果。 或者、如果您知道您的输入信号发生了显著变化(即阶跃变化)、则重新启动 ADC 转换会更快地获得稳定结果、因为它会取消当前转换(这将提供不稳定结果)。
    2. 不一定。 如果您同步全部三个 ADS1257、则只需监控一个/DRDY 信号。 否则、如果您没有监控所有/DRDY 信号或同步 ADC、您可能需要轮询每个 ADC 以确定数据何时就绪。

    3. 在这两种情况下都正确...配置所有三个 ADC、然后当您转到就绪数据时、只需循环读取每个 ADC 的数据即可。 除非您只想读取一个读数(针对每个 ADC)、然后进入低功耗模式一段时间、否则我不会关闭 ADC 的电源。 将 ADC 置于断电状态将停止转换。

    4. 应在 SDATAC 命令之后、校准之前对寄存器进行编程(即、如果您执行此步骤)。

    5. 可能...您正在测量什么? 如果您可以差分测量信号、我建议这样做。 请记住、对于 ADC、一切都是差分测量;因此、这些配置之间的主要差异仅与连接负输入引脚时有关。

    6. DIN 和 DOUT 是以 DGND 为基准的 SPI 信号。 SPI 能够进行全双工(尽管 ADS1257仅为半双工)、但在其他情况下、您可以在读取 DOUT 上的数据时在 DIN 上发送命令。

    7. 请看表12中显示的稳定时间。 另外请记住、由于这是一个(多路复用)Δ-Σ ADC、因此输入采样率和输出数据速率是不同的! 当您更改输出数据速率时、不会以任何较慢的速度对信号进行采样、而是更改数字滤波器的抽取率。

      此外、由于您正在进行多路复用、因此只能以稳定时间(即在通道上获取第一个转换结果所需的时间)的速度检索数据。 因此、要至少读取1kHz 的每个通道、您需要将输出数据速率设置为3750SPS。 由于数字滤波器对许多样本求平均值、因此必须累加一定数量的样本以提供"稳定"输出(即所有滤波器抽头都有数据时) 输出数据速率必须设置为高于2kHz 的值、以便以至少1kHz 的频率对每个通道进行采样。

    我希望这会有所帮助!

     

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

    非常感谢您的详细答复。 我想就以前的答复与你联系。

    "如果您同步所有三个 ADS12Y、则只需监控一个/DRDY 信号。"
    我的 SYNC 引脚 GPIO 是否可以来自 uC? 我是将三个 ADS1257同步引脚连接到 uC 的一个 GPIO、还是应将它们全部分开?
    如果我使用 SYNC 功能、每个 DRDY 是否有一个硬件中断引脚? 您的回复不一定是这样、因此我假设我们仅对全部三个 DRDY 使用一个 uC 引脚

    我意识到其堂兄 ADS1256拥有完善的 Arduino 微控制器库。 除了具有更多通道之外、它与 ADS1257相比是否有显著差异? 您是否有 ADS 1256和/或 ADS1257的库文件可用于适应 ESP32? 我正在尝试找出在 ESP32和 ADS 之间建立 SPI 连接的最有效方法、但不确定如何建立。 如果你有任何建议,我将不胜感激。

    谢谢、

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

    我将使用来自 MCU 的单个 GPIO 引脚连接到所有三个同步引脚、使每个 ADC 的布线长度大致相同。 这样、您就可以同时保证所有三个 ADS12S 的同步脉冲。

    如果您将每个 ADC 配置为以相同的数据速率运行、则对所有三个 ADC 使用相同的时钟、并同时同步它们、 然后、来自所有三个 ADC 的/DRDY 中断将同时发生、您无需单独监控每个/DRDY 信号。 但是、如果您有备用 GPIO 引脚、则将所有三个/DRDY 输出连接到 MCU 不会有任何影响、从而使您能够以不同的数据速率操作每个 ADC。

    从编程的角度来看、接口是相同的、唯一的区别是寄存器映射设置。 例如、多路复用器寄存器和 IO 寄存器选项更少、但在其他情况下、这两个选项可以使用相同的软件。 遗憾的是、我们没有为 ADS1256或 ADS1257器件提供太多示例代码、但您可以参考此 E2E 主题以获取另一个示例 :e2e.ti.com/.../1182307