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.

[参考译文] MSP430FR5964:在 EUSCI 中断周期中、UCTXIFG 被清除的位置?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/981361/msp430fr5964-where-in-the-eusci-interrupt-cycle-is-uctxifg-cleared

器件型号:MSP430FR5964

FR5xx 处理器的 EUSCI 用户指南在 UCTXIFG 标志清零方面存在一些不一致之处。

描述 UCAxTXBUF 的第30.4.7节包括以下内容:

写入发送数据缓冲器会清除 UCTXIFG

这是我所期望的、但这不是我所看到的行为。 但是、在之前关于 UCAxIV 中断向量发生器的30.3.15.4节中、它包括以下内容:

对 UCAxIV 寄存器的读取访问会自动复位最高优先级的挂起中断和标志

这与我看到的行为相匹配。 产生一个 TX 中断、一旦处理程序读取 IV 以确定中断、TXIFG 就会被清除。

我正在从较旧的 USCI 移植一些代码、从我可以看到的读取该用户指南中、写入 TXBUF 是清除 TXIFG 的唯一机制。  由于 TXIFG 清零、逻辑错误地假定 TXBUF 没有处于待写入的状态。 是否有人可以确认我看到的是应该工作的方式- TXIFG 会立即被清除、IV 会被访问。

无论采用哪种方法、都应调整文档以使其更清晰。 我假定写入 TXBUF 仍将确保 TXIFG 被清除、但是如果在一个中断模型中运行、在访问 IV 时已经完成了

谢谢、此致- Andrew

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

    在进一步播放之后、我很确定上面的情况是发生的-读取 IV 寄存器将清除 TXIFG 标志、并有效地将其与 TXBUF 的写入断开。

    我在这个论坛中找到了另外一个主题、建议使用 IFG 寄存器来解码中断、而不是直接使用 IV 来避免这种断开。 这是有道理的、它是一个微不足道的变化。 我看不到这会有什么其他影响吗?

    Andrew

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

    我不会将 IV 用于 xUSCI (UART 或 SPI),因为 TXIFG 是一个相当珍贵的状态,所以它需要被存储--如果不在 IFG 寄存器中,那么在其他地方。

    我只通过读取/写入 RXBUF/TXBUF 来清除 RXIFG/TXIFG、如果我没有发送数据来清除 TXIE。

    其他人使用这种方法的变体、但它们都需要在某个地方保存(显式或隐式) TXIFG 值。

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

    尊敬的 Andrew:

    感谢您进行详细的测试和说明。 实际上、我使用 IFG 寄存器来解码中断、就在示例代码之后。 我没有看到任何同事或客户使用 UCAxIV 来检查中断源。

    伊斯天

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

    感谢您的评论。 我一直将 IFG 和 IV 寄存 器视为完全可互换(用于解码中断)、但这确实使得使用 IFG 更加明智。 使 TXIFG 与 TXBUF 的状态有效断开绝对不是最佳选择。 我认为他们有很好的理由这样做!

    有趣的是、我面前的 eUSCI 用户指南(2020年4月修订)在其解码中断的示例中使用了 IV。

    我已经调整了代码以使用 IFG、它的行为立即发生。

    再次感谢、我将关闭这个

    Andrew