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.

[参考译文] TMS320F28377S:读取 RXFFST 以获取读取的数据数量时出错

Guru**** 2463330 points
Other Parts Discussed in Thread: TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/627312/tms320f28377s-error-reading-rxffst-to-get-number-of-data-read

器件型号:TMS320F28377S

您好!

从 Rx 中断中的 RXFFST 读取的值似乎有问题。

我在 FIFO 模式下使用 TMS320F28377S SPIA 进行中断。 我正在使用 launchpad XL。

我正在尝试从 SPIRX 中断中的 SPIRXBUF 填充接收缓冲区。

为了能够知道从 RX FIFO 中复制多少数据、我将 RXFFST 值存储到一个局部变量中、然后在 SPIRXBUF 上进行循环以读取数据。

我的问题是局部变量中的值与调试视图中显示的 RXFFST 不同。

我的示波器显示我收到了3个16位数据(这是我想要接收的数据)。

"Variables"视图告诉我 RXFFST 等于3。

我的局部变量等于2 ( U16_receivedWords = pst_spiXRegs->SPIFFRX.bit.RXFFST;)

实际上、我的变量似乎等于 RXFFIL。 我尝试将 RXFFIL 从2更改为3、我的变量的值设置为3。

我的问题的屏幕截图:

我做了些什么不对吗?

此致

Gaël μ A

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

    您好、Gael、

    这是有道理的。 调试视图偶尔会刷新、更新速度会变慢、以便在第3个字复制到 FIFO 缓冲区后访问存储器。 在接收完第3个字之前执行中断。

    要确认这一点、请在中断开始时切换 GPIO、同时监控示波器上的 RX 数据。 我希望您在接收第三次传输之前或期间看到 GPIO 切换。 请记住、在从 SPIRXBUF 接收并复制整个字之前、不会增加 FIFO 水平的值。

    另一种确认方法是在访问状态之前在 ISR 开始处放置一个大延迟循环。

    此致、

    Kris

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

    您好、Kris、

    我进行了测试。 是的、在接收下一个字时计算中断。

    实际上、我的问题是接收3个字、而每2个字生成一个 Rx 中断。 因此、将 TXFFIL 设置为1可以解决我的问题