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.
在我的应用中、F2812作为 SPI 从器件运行。、每4ms 一次主器件与它进行通信、交换6个字。F2812 SPI 的 FIFO 已启用以保存 CPU 的负载。每1ms 检查一次接收 FIFO、成功接收和传输后所有接收 FIFO 都将被读出 FIFO 被复位并重新载入1~6。字"0"作为第一个传输数据被写入 SPIDAT、它的工作正常、因为当 CPU 自由运行后、μ 1~5将被传输。当 代码被 USB 仿真器加载并 在之后执行时、 输出的数据为2~6。似乎数据是数据 当代码通过 USB 仿真器运行时从第二个 FIFO 传输。我的问题是什么?如何解决?
感谢您的观看!
您好、Allen、
当您提到"CPU 可自由运行"时、您是否意味着代码从闪存引导和运行?
当您复位并重新加载 FIFO 时、您的代码如何确保 SPI 不在事务的中间?
是的、"CPU 可自由运行"意味着代码从闪存运行。 每4ms 两个 CPU 交换一次数据、每1ms 检查一次接收 FIFO 以确保交换完完整数据、并且在成功交换后 FIFO 被复位。 我认为 它通过成功的接待确保了成功的过渡。 如果它恰好在瞬态过程的中间、它应该只偶尔发生、但是当 代码使用仿真器运行时、瞬态 FIFO 总是前面的一个字。
感谢您的回复!
是的、"CPU 可自由运行"意味着代码从闪存运行。 每4ms 两个 CPU 交换一次数据、每1ms 检查一次接收 FIFO 以确保交换完完整数据、并且在成功交换后 FIFO 被复位。 我认为 它通过成功的接待确保了成功的过渡。 如果它恰好在瞬态过程的中间、它应该只偶尔发生、但是当 代码使用仿真器运行时、瞬态 FIFO 总是前面的一个字。
感谢您的回复!
我不明白为什么数据交换成功后需要复位 FIFO、但这可能不是问题的根源。
[引用 userid="488089" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1168900/tms320f2812-spi-tansmission-fifo/4403535 #4403535"]当 代码使用仿真器运行时,瞬态 FIFO 始终是一个字前[/引用]您如何在数据中看到此错误? 您是否使用逻辑分析仪监控 SPI 总线? 您是否在 CCS 中使用监视窗口来查看一些 MCU 缓冲器内容? 症状描述不是很清楚。
请注意、在运行 CCS 时、诸如轮询内存、观察窗口、断点等的操作会暂时停止 CPU。 此 CCS 活动可能会影响您的应用程序的运行。 您可以尝试:
-在 SPIPRI 寄存器中启用自由运行
-在 CCS 中使用实时模式(视频)