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.

[参考译文] TMS320F28388D:使用2个 DMA 通道连续发送和接收4个 SPI 模块的数据

Guru**** 2609895 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1072649/tms320f28388d-send-and-receive-data-from-4-spi-modules-continuously-by-using-2-dma-channels

部件号:TMS320F28388D

大家好!

我要设置一个 DMA 通道,以从4个 SPI 模块发送数据,并使用另一个 DMA 通道从4个 SPI 模块接收数据。

要发送,我将连拍大小设置为4,连拍目的地 步长设置为 (SPIB_BASE-SPIA_BASE),传输大小设置为1,传输目的地步长设置为(3*(SPIB_BASE-SPIA_BASE)。

目标 地址为 (uint16_t *)(SPIA_BASE + SPI_O_TXBUF)

以及 用于以相同逻辑接收的类似设置。

然后,我使用 DMA_TRIG_SPIATX 事件和 DMA_TRIG_SPIDRX 来触发 TX DMA,以用于 RX_DMA。 所有五分位 SPI 级别都设置为1。

当我运行代码时,它工作正常,但 RRX_DMA 从某些 SPI 读取旧数据,并且无法正常工作。

是否可以使用1个 DMA 从所有4个 SPI 发送数据,并使用另一个 DMA 接收数据?

如果是。 如何设置 DMA 和 SPI。

我要提前表示非常感谢。

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

    您好,

    请告诉我你的问题是否正确。 您有一个要使用4个不同的 SPI 传输的数据数组。 示例:数组={1,2,3,4,5,6,...}。 您希望 DMA 传输1到 SPIATX,2到 SPIBTX,3到 SPICX,4到 SPIDTX,5到 SPICX 等。  RX 端也是如此。 我的理解是否正确?

    我在这里看到的一个问题是,DMA 的触发器是 SPIATX,这种触发器写入所有3个 SPI。 但是,当 SPIA 就绪时,其他3个 SPI 是否可以用于 TX?

    您是否正在以环回模式配置 SPI 以进行测试? 如果没有,是否所有这些 SPI 都配置为主控制器?

    如果您可以访问 SPI 引脚,最好探测线路并查看数据传输是否按正确的顺序进行。

    此致,

    维纳

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

    你好,维纳!

    太多泰国人了。 我通过根据 SPI 基本地址之间的差异调整突发量步长来解决问题。