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.

[参考译文] TMS320F280049C:使用 DMA 在 SPIA 和 SPIB 之间进行 SPI 数据传输、而无需处理数据

Guru**** 2465700 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1494608/tms320f280049c-using-dma-for-spi-data-transfer-between-spia-and-spib-without-data-processing

器件型号:TMS320F280049C
Thread 中讨论的其他器件:C2000WARE

工具与软件:

大家好

我正在开发一个项目、需要通过 SPIA (控制器模式)从外部外设读取数据、并通过 SPIB (控制器模式)将该数据直接转发(无需任何处理)至另一个外设。 数据大小在100到19000字节之间变化。

我想知道是否可以使用 DMA 实现本次数据传输、以确保高效、快速的传输。 目标是从 SPIA 接收数据并将其发送至 SPIB、而不会造成延迟或进行手动处理。

任何人是否有类似实施的经验、并且可以提供有关为此类数据传输配置 DMA 的提示? 为了确保平稳高效的传输、我还应该考虑其他因素吗?

我期待着你的建议和经验。

提前感谢您。

此致、

Thao Truong

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

    您好、Thao、

    是的、使用 DMA 模块应该可以实现此功能。 下面的一个好示例是 C2000ware 中的 spi_ex5_loopback_dma 示例(路径:[C2000ware 路径]/driverlib/f28004x/examples/spi/.) 我们还有一个 TRM 部分、其中详细介绍了如何使用 DMA 正确配置 SPI ( 此处提供了链接)。 根据您的说明、我认为您希望使用一个 DMA 通道、其源地址有 SPIA RX 数据寄存器的源地址和 SPIB TX 数据寄存器的目标地址。

    将 SPI 与 DMA 一起使用时需要记住的最重要的一点是 DMA 突发大小始终需要匹配 SPI FIFO 级别。 如果您的数据包大小不同、我建议使用最高的 FIFO 级别、该级别应平均分为每个可能的数据包大小(我认为在您的情况下应为2个)。

    此致、

    Delaney

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

    尊敬的 Delaney:

    感谢您的答复。  

    我将在 C2000ware 中尝试示例。

    另外、提升 TXFFIL/RXFFIL 是否会提高数据传输速度?

    例如:

    NUM_WORD = 200

    RXFFIL = 4

    DMA_TRANSFER_SIZE =(NUM_WORD / RXFFIL)–1 =(200 / 4)–1 = 49 (50个传输)

    DMA_BURST_SIZE = RXFFIL–1 = 3 (每个突发4个字)

    DMA-TX 和 DMA-RX 中断何时发生? 是否在传输全部200个字之后?

    谢谢你。

    此致、

    Thao

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

    您好、Thao、

    TXFFIL/RXFFIL 是我在前面提到过的 FIFO 级别。 具有更大的 FIFO 级别不一定会提高数据传输速率(如果您讨论的是 DMA 传输速率)、但它允许您一次临时存储更多数据、以便通过 SPI 进行发送/接收。 因此、使用更高的 FIFO 电平将允许您使用更高的 SPI 波特率而不会丢失数据(而不会快速覆盖 FIFO)。

    DMA 中断可以配置为在传输开始或传输结束时触发。 在来自 TRM 的本例案例中、如果配置了传输结束 DMA 中断、那么是、DMATX 中断将在200个字被传输到 TX 缓冲区(然后被传输)之后触发、DMARX 中断将在200个字被接收和传输之后触发。

    此致、

    Delaney