Other Parts Discussed in Thread: SYSCONFIG
部件号: TMS320F28379D
主题: SysConfig 中讨论的其他器件
大家好:
我正在处理一个项目、希望 通过 SPI 将 F28379D 用作外设。 为此、我们要尝试配置器件以使用 DMA。 我们当前的测试设置是 Raspberry Pi 作为控制器、F28379D 作为外设。 目前、我们正在对内核 1 进行所有测试、以避免出现内存/外设所有权问题。
我们已通过使用写入/读取阻止命令验证此设置是否有效、并已成功完成具有当前设置的事务。 首先、我们使用了 TI 提供的 SPI 和 DMA 示例来指导我们的实施。
附件给出了一个使用 driverlib 和 SysConfig 的最小示例、其中、如果我们传输到内部缓冲区(使用#define ALT_EXAMPLE)、则 DMA 传输将处理从 SPI TX 中断触发的情况、但当我们尝试传输到 SPI TX FIFO 缓冲区时、我们会得到垃圾数据。 此外、我们在 DMA 事务完成后设置了中断、可以确认在任何一种情况下都发生了中断。
就 我们可以看出这表明触发条件正确(由于 TX 未填充、我们反复触发 DMA、直到其完全传输到 ALT_EXAMPLE 中的 example_buf)。 该命令还指示 SRC 指针正确、因为 example_buf 中显示了正确的数据。
此外、我们还遵循使用带 DMA```的 SPI 接收数据的```18.2.8.2 指导、并将 RXFFIL 设置为 8 个样本、 将 DMA_BURST_SIZE 设置为 7。
希望我们的配置出现小问题、因为我们不确定应从何处调试该问题。 感谢您的帮助。
系统配置中的 SPI 配置:

DMA 配置:

DMA 的 SRC 和 Dest 在代码中配置(从 empty_driverlib_main.c 中配置):
#ifdef ALT_EXAMPLE
DMA_configAddresses(example_spi_TX_DMA_BASE, example_buf, test_buf);
DMA_configBurst(example_spi_TX_DMA_BASE, 8, 1, 1); // Burst Size, Src step, dest step
DMA_configTransfer(example_spi_TX_DMA_BASE, 16, 1, 1); // Transfer Size, Src Step, dest step
#else
DMA_configAddresses(example_spi_TX_DMA_BASE, example_spi_TX_DMA_ADDRESS, test_buf);
DMA_configBurst(example_spi_TX_DMA_BASE, 8, 1, 0); // Burst Size, Src step, dest step (Notice how dest step is zero)
DMA_configTransfer(example_spi_TX_DMA_BASE, 16, 1, 0); // Transfer Size, Src Step, dest step (Again, notice step is zero)
#endif
DMA_startChannel(example_spi_TX_DMA_BASE);
Driverlib 空 CPU1 示例 CCS Project.zip
