主题中讨论的其他器件: 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 传输发送冗余数据、并为新的传输发送大量新数据。 换言之、从器件发送的数据被移位、导致整个通信错误。
此致、
一个