大家好、
我在 MasterMode 下使用 SPI、在环回中关闭、16位宽度、启用 Tx 和 Rx FIFO。
当应用程序将 N 个字(N < 16)写入 TX FIFO (SPI_writeDataBlockingFIFO)、 然后一旦 RXFFST 为 N、 从 Rx FIFO (SPIRXBUF 寄存器)读取 N 次(SPI_readDataBlockingFIFO)时、数据将按照写入的相同顺序正确读取、 每次从 SPIRXBUF 寄存器中读取一个字时、SPIFFRx 中的 RXFFST 计数器也会按预期递减。
因此、一切都很好、如用户手册中所述: "如果启用 FIFO 模式、读取该寄存器也会使 SPIFFRx 中的 RXFFST 计数器递减。"
但是、如果我尝试使用 Lauterbach 脚本执行相同的操作、则不起作用。 RXFFST 计数器正确到达 N、但之后从 SPIRXBUF 寄存器中读取的值不会使 RXFFST 计数器递减、因此只有第一个字从 SPIRXBUF 中持续读取。 读取 SPIRXEMU 具有相同的效果。
请注意、对于 Lauterbach、我还尝试 在"Emulation Free Run"(SPIPRI 寄存器的 FREE 位)中配置 SPI、但这没有帮助。
有什么想法吗?