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.

[参考译文] RTOS/TM4C1294NCPDT:从模式下的 SPI DMA 工作不正常

Guru**** 2445440 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/628961/rtos-tm4c1294ncpdt-spi-dma-in-slave-mode-not-working-properly

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

您好!

我将 SPI DMA 配置为从模式、如果我将器件配置为主模式、则其工作正常。

在从机模式下、传输在主机不提供时钟的情况下启动。

即使 SPI RX 缓冲区为空、空数据也会发送到 DMA RX 缓冲区并进行处理。

为什么会发生这种情况? 我无法在从模式下配置 SPI DMA?

此致、

Manohar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Manohar、
    可能发生的情况是、当您启用 DMARX 时、它会立即向 DMA 模块生成 DMA 请求、以启动传输。 UDMA 不知道 SSI 是否真正接收到数据。 它基于 SSI 的 DMA 请求。 我有一项建议是在启用 DMARX 之前尝试监控 EOT 位。 由于 SSI 是双工模式、因此它必须同时发送和接收。 如果在从主机接收 SSICLK 后完成发送、它将置位 EOT 位。 这也意味着它已从主器件接收到数据。 我希望你第一次只需要这样一次。 当数据被写入 SSI 接收缓冲区时、所有后续接收的数据都将产生 DMA 请求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    这种实现方式将用于首次数据传输、以正确接收和传输数据。 因为 RX 通道配置为 Ping Pong 模式作为从器件 SPI。 一旦启动、它就会继续从 SPI 接收器缓冲器中获取数据、即使缓冲器未接收到任何数据。

    从现在起、我可以从您的上述实施理念中正确接收到。 但它仅在首次数据传输时起作用。
    连续传输、我遇到了上述错误。



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

    您好!

    我 只是在 从模式下使用 SPI0 TX 通道进行乒乓传输。 如果 为控制器提供了外部时钟、则应将数据发送 出去。

    但如果不 提供时钟、TX 通道为何 继续替换 SPI 缓冲器中的数据。 如果我 读取数据、它 不会从头开始提供数据。

    始终读取一些随机启动数据。




    此致、
    Manohar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Manohar、
    我不知道该线程是否与您拥有 e2e.ti.com/.../2323040的另一个线程相关。 请参阅另一个线程以删除 system_printf()和 system_flush,并查看是否仍有问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    从器件中的持续数据传输是因为分析仪在时钟引脚中持续发送一些噪声。 这样、当我从从从器件读取数据时、数据就会交换。

    谢谢你。


    此致、
    Manohar