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.

[参考译文] MSP432P4111:TX 完成中断标志行为

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/906785/msp432p4111-tx-complete-interrupt-flag-behavior

器件型号:MSP432P4111

我有一位同事正在与我们一起处理 UART 通信、他对于传输完成中断标志的行为、尤其是它如何与 DMA 配合工作有一些疑问。  

引用他的问题:

手动表示当 TXBUF 为空且移位寄存器已发送最后一位(即传输已开始且 TXBUF 和移位寄存器为空)时产生中断。 这就告诉我、在 DMA 模式下、DMA 应该能够在移位寄存器被清空前用下一个字符将 TXBUF 归档。 实际上、我仍然必须在 UART_BUSY 上循环才能使 RS485正常工作。 因此、我会获取任何可用的信息、示例、DMA 交互、使用技巧等...

有人能否提供一些有助于回答他的问题的见解?

谢谢。

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

    BLT_Banger、您好!

    您非常接近自己的假设。  根据 用户指南、 看起来 DMA 由 UCTXIFG 标志选通、而 UCTXIFG 标志则只在发送移位寄存器为空且 UCAxTXBUF 寄存器中等待的字节在下一个 BITCLK 时被移入发送移位寄存器后才被置位。

    我不知道为什么这样建议 DMA 可以更快地将数据传输到 UCAxTXBUF 中。  如果这是您的问题、那么根据用户指南中的这些信息、我认为这是不可能的。

    您是否无法使 DMA 与 eUSCI_A 模块正常工作?

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

    >  当 TXBUF 为空且移位寄存器已发送最后一位时、会产生中断

    这描述了 UCTXCPTIFG、它是您用于 RS485以停用发送器的方法。 [参考 TRM (SLAU356I)表24-18和24-6]

    DMA 由 UCTXIFG 触发、UCTXIFG 是用于加载新字节进行传输的一个字节。 它表示保存寄存器为空、但本身并不意味着移位寄存器为空。 [参考 TRM 第24.3.16和24.3.15.1]节

    也就是说:勘误表 USCI42使得 UCTXCPTIFG 的使用相当棘手。 [请参考勘误表(SLAZ697F)第4页]您可能希望坚持使用轮询 UCBUSY。

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

    BLT_Banger、您好!

    感谢 Bruce 指出这一公式。

    我认为这些信息应该指向正确的方向。
    如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。