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/TM4C1292NCPDT:SPI - UDMA 操作 clarifact

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/618932/rtos-tm4c1292ncpdt-spi---udma-operation-clarifiaction

器件型号:TM4C1292NCPDT

工具/软件:TI-RTOS

您好!

我想将 SPI 配置为主全双工模式、并尝试使用 uDMA  同时从内部存储器接收/发送数据到具有相同时钟的 SPI 接口。 在这种情况下、请澄清以下问题。

UDMA 是否会同时工作? 假设 SPI 主器件提供32个时钟、是否可以同时发送32位和接收32?

2.我认为单个 uDMA 是在外设之间共享的,如果是,DMA 如何同时发送和接收数据?

3.如果 DMA 同时配置为针对 TX 和 Rx 的乒乓模式、则 Rx 数据和 TX 数据之间是否存在任何时钟延迟?

此致

巴拉

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SSI (SPI)可以同时发送和接收数据。 它串行传输数据。 您可以对发送和接收使用 uDMA。 您使用两个通道。 SSI 具有发送和接收 FIFO。 SSI 同时传输数据、每次一位。 UDMA 通道不是同步的、但它们一次传输高达16位的数据、并且速度要快得多。 您设置 SPI 和 DMA 通道。 TX DMA 开始填充 TX FIFO、直至 FIFO 已满或待传输的数据单元数已加载。 SPI 会将 TX 数据移出并将 RX 数据移入。 一旦 RX 项目被完全接收(高达16位)、RX DMA 就会从 RX FIFO 中读取它。 TX FIFO 中现在还有另一个空间。 如果 TX 数据还未完全载入到 TX FIFO 中、TX DMA 通道将载入另外一个项目。 由于 SPI 传输是串行的、TX 数据开始输出到 RX 数据完成输入之间始终存在延迟。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:
    感谢您的详细解释。

    因此、我可以同时将 UDMA 用于 SPI Tx 和 Rx、而不会丢失任何 SPI 主器件时钟。 即、如果 SPI 主器件发出1024个时钟、那么我将能够使用 UDMA 毫不延迟地发送1024位并接收1024位。

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

    是的、使用 SPI、发送和接收同时发生。 无论是否使用 uDMA、都是如此。 当然、从器件必须在传输开始前将其传输到主器件的数据加载到其传输缓冲区中。 您所使用的从器件可能是如此、也可能不是如此。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:
    当 SPI 用作从器件时、您能否确认同样的适用性?

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

    是的、作为主器件或从器件、数据会同时移出和移入。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    应该注意的是、当被用作"从器件"时- SPI 数据速率大大降低了?