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.

[参考译文] Linux/ADS1299:ADS1299卡在 Raspberry pip3b 和 b+驱动下

Guru**** 2576215 points
Other Parts Discussed in Thread: ADS1299

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/741893/linux-ads1299-ads1299-get-stuck-driven-by-raspberry-pi3b-and-b

器件型号:ADS1299

工具/软件:Linux

尊敬的所有人:

我设计了 AD PCB 来连接 ADS1299与 Raspberry PI3 B

ADS 器件由 Raspberry SPI 通过 spidev 驱动程序正确驱动:我能够读取和写入寄存器、并通过高达 SCLK 8MHz 的 SPI 开始连续采集。

当 RPI3板上的 SCLK 小于或等于8MHz 时、一切正常:我能够读取和写入所有寄存器。 遗憾的是、在此频率下、由于检测 DRDY 信号的延迟很长、我无法正确采集@16kHz (连续采集)的样本。 为了消除此限制、我尝试增加 SCLK 频率。

方案是、如果我使用大于8MHz 的 SCLK 频率、比如10MHz、13MHz、那么我将无法正确读取/写入寄存器、ADS 会卡住:需要切断 ADS 的电源并将 SCLK 频率重置为8MHz。  

为什么 ADS1299器件在 SCLK 频率大于8MHz 时卡住? 数据表显示 ADS 支持高达20MHz @3.3V 的频率。

提前感谢、致以诚挚的问候。

Livio

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

    感谢您的发帖、欢迎加入论坛!

    您处于 RDATA 或 RDATAC 模式吗?

    更改频率时、是否会对发送的 SCLK 数量进行错误计算? 从数据表中:图1指定了绝对最大 SCLK 限制。 当使用 SCLK 移入命令时、请确保向器件发出整组 SCLK。 否则可能导致器件串行接口处于未知状态、需要将 CS 置于高电平才能恢复。

    您可能可以切换/CS、而不是切断电源并执行硬复位。

    遗憾的是、由于 PI3B 不是 TI 器件、我无法提供太多支持、但我很好奇 PI3B 无法在没有长延迟的情况下检测 DRDY。 您看到多长时间的延迟?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的回答!
    我使用的是连续采集、因此我使用的是 RDATAC。
    我使用示波器检查了 SCLK、因此我可以知道电流频率。
    当 ADS 卡死时、我可以发送数据(因此 CS 置为有效和置为无效)、但 ADS 不会通过 MISO 通道进行响应。

    检测 DRDY 的延迟可以是可变的(我正在用户空间而不是内核空间中对 RPI 进行编程):在 Che SCLK @8MHz 时、我估计它大约为10us。 问题在于、当我将通道采集设置为@16kHz 时、无法在下一次 DRDY 置位之前完成通过 SPI 进行的读取操作。 这种行为会产生错误的样本。

    再次感谢。
    Livio
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    欢迎您的 Livio、我很乐意为您提供帮助!

    对于 SCLK:我不是指频率、我是指发送了多少个方波? 如果发送的方波数量不正确、则可能会导致数据表中指出的错误。

    我不认为 ADS 在切换/CS 后通过 MISO 进行响应。

    我知道、很遗憾 PI3B 无法更快地检测/DRDY。 由于/DRDY 会根据输出数据速率以已知时间间隔切换、因此您可以更改代码、以便在不使用/DRDY 触发器的情况下发送 SCLK。 您的启动例程可能会等待几个/DRDY 脉冲来确认输出数据速率、然后以计算的时间间隔发送 SCLK 以开始检索数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Alex:

    您有用提示的容器!
    我将应用您的建议。

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

    根据您的建议、我通过加快 GPIO 读取速度来解决了这个问题:在 Raspberry I 中、我使用了另一个库(Pigio 库)、该库检测 DRDY GPIO 电平变化的速度更快。
    现在、我能够使用 SCLK @8MHz 和数据速率采集@16kHz 来采集所有数据、而不会出现错误。

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

    如果您有任何其他问题、请告知我们。