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.

[参考译文] TMS320F28388D:TMS320F2838x:使用 Lauterbach 脚本读取 SPIRXBUF 会递减 RXFFST

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1029721/tms320f28388d-tms320f2838x-reading-spirxbuf-with-lauterbach-script-does-decrement-rxffst

器件型号:TMS320F28388D

大家好、

我在 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、但这没有帮助。

有什么想法吗?

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

    dB、

    对 SPIRXBUF 寄存器的仿真读取不会改变 RXFFST 计数器的内容。 只有 CPU 读取 SPIRXBUF 寄存器内容会影响 RXFFST 计数器。

    我想知道您的脚本是否使用 Lauterbach 脚本进行仿真读取。

    此致、

    曼诺伊

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

    感谢您的回复。

    如何使用 Lauterbach 脚本正确使用 FIFO?

    我唯一能找到的方法是在每个字发送/接收后复位两个 FIFO、但它就像一个1字长 FIFO、这使得脚本速度要慢得多。

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

    我从未使用过 Lauterbach 脚本。 因此、我真的无法对此进行评论。

    实际上、您需要在循环中对 SPIRXBUF 寄存器进行 CPU 读取、以读取存储在 SPI RX FIFO 中的内容。

    此致、

    曼诺伊

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

    感谢您的回复。 在这种情况下、我只能使用 Lauterbach 脚本中的一个 FIFO 元素、然后重置 FIFO。