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:在 SPI+DMA ADS131m08 32KSPS 条件下会发生一些错误

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1378232/ads131m08-some-error-happen-at-condition-that-spi-dma-ads131m08-32ksps

器件型号:ADS131M08

工具与软件:

我在读取 ADS131m08时遇到一些问题、我的工程设计和配置是这样的:我使用 STM32H743作为主设备。 SPI 时钟设置为20M、ADS131mM08时钟设置为8.192M。 采样率设置为32KSPS。 设置为 SPI+DMA 模式以与 ADS131M08进行通信、ADS131M08的 DRDY 线路会触发中断以通知 STM32H743读取数据、在 STM32H743的中断功能中启用 DMA 传输、并启用 DMA 中断。 每次读取27个字节的数据(每个字长为24位、总共8个字)、每次启用 DMA 传输数据时、都会确定是否已发送最后一次 DMA。 当启用 DMA 以传输数据时、将标志设置为 false、然后在 DMA 中断函数中将该标志设置为 true、指示读取当前数据。 现在我的问题是 DMA 使用 DRDY 外部中断概率发送障碍无序传输数据。 这意味着有时数据传输会与 DRDY 中断同步、如下面的图1所示。 其中红线为 DRDY、黄线为 SPI CLK、可以看出 DRDY 的周期为32k。 我在程序中记录了 DRDY 中断和 DMA 中断完成的时间、发现这两个计数在1秒内约为32K、两个计数相等。 有时数据传输会出现问题、如下面的图2所示。 DRDY 是红线、因此为什么涡周期的中间会出现脉冲凸点? 此脉冲可能会引起 STM32H43外部中断、因为上面提到的两个计数不再相等、1秒内的 drdy 中断数大约为40K、而 DMA 传输完成中断大约为31K。 造成此问题的原因是什么以及如何解决或避免此问题? 谢谢你。

图1:

图2:

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

    尊敬的 用户4637774:

    您能否确认实际发送到 ADC 的时钟数量以及每帧中读出的数据数量? 您曾提到"每次读取27个字节的数据(每个字长为24位、总共8个字)"、但它会导致混淆、因为8个24位字与27个字节不匹配。

    出现这种现象是因为您的微控制器未读取所有数据、即丢失了一些数据。 您可以在 ADS131M08数据表的第8.5.1.9.1节中找到更多详细信息。 您可以在观察到/DRDY 的第一个窄脉冲的前一帧中检查或共享时序。

    BR、

    戴尔

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

    至于 ADC 芯片的时钟、我们通过外部时钟源输入芯片的第23个引脚、时钟大小为8.192M、也将介绍。
    至于帧长度、之所以是27字节、是因为我们认为、首先我将字长设置为24位、27字节的前三个字节是响应、因为没有 CRC、因此接下来的24个字节是8个数据通道。 这增加了多达27个字节。 音频正常吗?
    事实上、我还参考了第8.5.1.9.1节、例如、在我的程序中、当 drdy 中断数远远大于 DMA 中断数时、它将触发 SYNC/RESET 低电平脉冲、但没有任何效果。
    此外、我发现如果我使用较低的采样率、没有问题、只有32Ksps。

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

    尊敬的 用户4637774:

    我要求的时钟是 SPI 时钟、而不是主时钟。  感谢您的澄清。  

    您在一个帧中设置的27个字节(9个字) 是正确的。

    ADC 无法根据数据速率输出不同的行为、这可能是其他原因造成的。 下面的线程应该有助于您检查微控制器中的软件。

    ADS131M08:ADS131M08 DRDY 出现异常行为

    同时、如果您能 分享以下信息、将会很有帮助。

    • 捕获并共享 上一帧和当前帧中观察到/DRDY 的第一个窄脉冲的时序。
    • 您的布局和原理图、以便我了解是否有不正确的地方或是否可能产生干扰。

    BR、

    戴尔

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

    我今天修改了该工程、发现可以将 DMA1_stream0和 DMA1_stream1分别用作 SPI Rx 和 Tx 请求、而不是 DMA1_stream4和 DMA1_stream5、DMA2_stream4和 DMA2_stream5。 我们希望您查看我们提供给 ADC 的时钟波形是否存在问题。

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

    尊敬的 用户4637774:

    感谢您的更新。 我很高兴看到您已通过更改微控制器中的软件来解决此问题。

    如果您可以正确读取/写入寄存器、还可以正确读取数据、那么您的设计将会很好。 您的时钟有点过冲、这可能是由您的 PCB 布局引起的、您是否有任何与时钟和 SPI 数字信号串联的电阻器?

    BR、

    戴尔