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.

[参考译文] LAUNCHXL-F28379D:2 LAUNCHXL-F28379D 之间的 SPI 通信

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/755890/launchxl-f28379d-spi-communication-between-2-launchxl-f28379d

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件: C2000WARE

尊敬的 TI 官员:

我正在研究一个项目、其中2 个 LAUNCHXL-F28379D 以40Mbps 全双工速率通过 SPI 相互通信。 我已经了解了 SPI 上 C2000Ware 的多个示例、现在我的程序使用带有 DMA 的 SPI (每个通道一个用于从 SPIRXBUF 到存储器的 SPI 读取以及从存储器到 SPITXBUF 的 SPI 写入)和 FIFO 来将一个包含1280个字的块从主器件传输到从器件、 反之亦然。

问题是、当我尝试运行程序时、有时工作正常、接收到的数据都是正确的、如果我在一侧更改了发送数据、另一侧则会获得该数据。 但是、有时、当程序运行时、一切都运行得非常疯狂。 所有接收到的数据都是错误的、并且在不断变化。

具体而言、我始终首先运行从器件、以便 DMA 首先将数据加载到 SPITXBUF、并打开分配给 SPI 接收的 DMA 以准备好接收任何传入数据。 我可以在"寄存器"中看到正确的数据被加载到 SPITXBUF 中。 然后、我运行主器件侧、接收到的所有数据都是错误的。 我尝试停止主 MCU、以便在每次传输后停止。 我看到的是、在主器件端、DMA 始终完成其 transfer_count、这是预期的。 但在从 MCU 上、它并非始终如此。 仍然需要完成一些 transfer_count、但尚未完成。 然后、在下一次传输时、主器件发送数据、从器件从最后一次 DMA 传输发送冗余数据、并为新的传输发送大量新数据。 换言之、从器件发送的数据被移位、导致整个通信错误。

此致、
一个

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

    您是否检查了是否在 SPI 中检测到溢出情况? 我想知道 SPI 是否在接收/传输比 DMA 在时间段内可以处理的数据更多的数据。

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