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.

[参考译文] ADS131M08-Q1:CS 永久保持低电平时的 SPI 通信

Guru**** 2489685 points
Other Parts Discussed in Thread: ADS131M08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1541014/ads131m08-q1-spi-communication-when-cs-is-permanently-held-low

器件型号:ADS131M08-Q1
Thread 中讨论的其他器件:ADS131M08

工具/软件:

您好:

我目前正在使用 ADS131M08、希望获得有关与该器件进行 SPI 通信的任何建议或提示。 我的应用需要以 16kHz 的速率读取数据。

在我的设置中、CS 线路一直保持低电平。 我能够成功读取 10 个字的完整帧、但前提是我等待 SPI 超时(约 4ms)。 如果我尝试在该超时窗口内读取数据、则会收到不正确或“垃圾“数据。

为了解决此问题、我将 DRDY 引脚配置为中断触发器。 当 DRDY 置为有效后、我通过 DMA 启动 SPI 读取、在这种情况下、一切都可靠地运行。

不过、我的目标是避免使用中断。 我尝试了轮询 DRDY、但在数据无效时遇到了相同的问题、除非我在 DRDY 生效时立即读取。

是否有办法在不依靠中断的情况下实现一致,正确的数据读取 — 可能是使用精确轮询或其他方法?

提前感谢您的支持。

此致

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

    尊敬的 Lukas:

    您能否澄清一下 “读取该超时窗口内的数据“? 您是指在 SPI 通信开始后 0~4ms 或长于 4ms 之间读取数据?

    BR、

    Dale

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

    我注意到器件始终遵循以下模式:

    • 一旦 SPI 事务开始、就 会打开 4ms 的“超时窗口“。 在该窗口内、我可以读取一个完整的帧、而不会出现问题。 如果我尝试在 4ms 过去之前获取第二个帧、则数据会损坏。 窗口关闭后、可以读取下一帧并重复该循环。
    • 禁用 MODE 寄存器中的 SPI‑TIMEOUT 位没有任何帮助、只有第一个帧是有效的;接下来的一切都是垃圾数据。
    • 每次都适用的一种方法是在时立即启动 SPI 读取 DRDY 置为有效。 立即启动传输(而不是等待)、可在每个帧上提供正确的数据。 此方法仅适用于中断。  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lukas:

    首先、ADS131M08 ADC 通常使用/CS 信号作为帧的开始和结束。 当/CS 接地时、 ADC 将计算 SCLK 的数量、以检查帧开始和结束的位置、从而正确解码命令并移出数据。 例如、一个帧需要一个状态字+8 通道数据+一个 CRC 字=240 SCLK、如果您发送的 SCLK 数量不正确、则下一帧中的数据将被弄乱。

    其次、如果您错过了读取数据、您正在读取的数据可能不是最新的数据。 这取决于您错过了多少个样本。

    最后、建议在数据就绪时读取数据、否则当转换正在进行时、数据可能会被弄乱。 当/DRDY 用作 MCU 读取数据的中断时、您不会错过读取数据、还可以 保持数据的完整性、 因此 始终建议使用/DRDY 来检索数据。

    对于您的配置、您 每 62.5us 从 16kHz 读取一次数据、我不确定您在 ADC 上设置的数据速率、但可能您错过了读取数据或您在转换期间读取了数据。 如果您可以将连续 SPI 时序与通过逻辑分析仪捕获的/DRDY 信号共享在一起、我可以为您进行检查。

    BR、

    Dale