工具/软件:
尊敬的专家:
我使用的是 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