我需要通过 SPI 接口将 TMS320F280025C 与另一个控制器连接。 280025C 配置为 SPI 从器件。 我使用了 SPI 示例4、该示例4使用具有 SPI TX 和 RX 缓冲器的 DMA 控制器。 DMA 的突发大小为8、传输大小为4。 因此、32个字进行一个完整的事务。 我已禁用内部回路、以便 SPI 从外部接收数据。 最初、我通过使用 SPIA 接口发送数据流(32个16位字)进行了测试。 控制器接收并打印数据、不会出现任何错误。 下一步、我修改了与 SPIB 接口相同的代码。 保持代码的其余部分不变仅更新了 SPIB 的 PinMux 设置、并将 DMA 通道分配给 SPIB 而不是 SPIA。 但是、SPIB 接口会在接收数据中产生大量错误。 例如、如果我重复发送2个32次的常量值、那么在 SPIB 缓冲区中接收到的数据如下所示:
DMA:2 2 2 258 2 1 2 2 2 0 2
2 2 2 0 2 258 2 2 2 2 2 2 2 2
2 258 1 7 2 2 2 0 2 2
2.
DMA:2 2 2 2 0 2 2 2 0 2 2
2 1 2 2 2 2 2 0 2 2
58 2 0 2 2 2 3 2 2 2 2 2 2 2 2
2.
DMA:2 2 6 2 2 2 2 0 2 2
6 1 2 2 2 0 2 2 2 2 2 2 2 2
0 2 2 2 6 2 2 2 2 2 0
2.
红色值为错误值。 SPIA 接口可正确读取数据、因此我不怀疑变速器控制器存在任何问题。 我已经使用 FIFO 中断测试了不带 DMA 的 SPIB 接口、但结果相同。 我花了2多天时间来解决这个问题,但都是徒劳的。 我怀疑 SPIB 中可能存在任何芯片问题? 请检查并告知我是否需要更正。