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.

[参考译文] TMS320F28P550SJ:SPI FIFO 问题

Guru**** 2519580 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1555641/tms320f28p550sj-spi-fifo-problem

器件型号:TMS320F28P550SJ


工具/软件:

尊敬的专家:

我使用的是 SPI、并启用了 FIFO 增强功能。 我同时使用来自外部源的接收和发送、即交替使用传入和传出 16 位字。 SPI 处于从模式、从外设接收 SPICLK 和 SPIPTE 信号。 我不使用中断、因为接收和发送都与外部 SPIPTE 信号同步。 我之前在不使用 FIFO 缓冲器时成功地完成了此设置、因此我首先从 SPIRFBUF 读取传入字、然后在观察 SPIPTE 状态时立即将发送字写入 SPITXBUF 缓冲区。 但是、然后我尝试利用 FIFO、以便只有其他所有读取/写入都与 SPIPTE 同步、所有其他读取/写入都将由 FIFO 处理。 调试代码时、我会丢失 TX 数据、相应地看到发送 FIFO 状态为 16、即缓冲器立即填满、而接收 FIFO 正常。 发送的数据通过两次连续写入 TXBUF 的方式写入、因此第一个数据同步输出、并假定第二个主器件等待下一个 PTE 信号以便将其移动到 SPIDAT。 我想、从 FIFO 和 TXBUF 到 SPIDAT 的第二次传输会以某种方式被阻止、从而导致 FIFO 溢出。 在文档第 22.3.3 章中、有一个提到“...该字符必须在 SPICLK 信号开始之前写入 SPITXBUF “但我假设这不适用于 FIFO 情况? 在 FIFO 设置中、TXDLY 设置为零、这样应该允许根据文档进行背靠背传输。 接收和传输数据的数量完全相等。

请帮助、

Jouko

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

    您好、

    我注意到 Rx 和 TX 操作的时序错误、这可能是 FIFO 差异的原因所在。 读取操作来得太早、因此自然无法加载 Rx FIFO。 我认为这个问题已解决、如果还有其他问题、我会再回来。