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.

[参考译文] CCS/MSP430F1611:TX 缓冲器为空-未完成

Guru**** 2391415 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/598419/ccs-msp430f1611-tx-buffer-empty---not-done

器件型号:MSP430F1611

工具/软件:Code Composer Studio

我正在使用 ISR 中的发送缓冲区空标志来发出传输完成时的信号。  这是在使用两根线485的系统中、因此使用一个额外的 IO 来设置485驱动器芯片的方向。  我发现、如果在检测到发送缓冲区为空后不插入延迟、则方向控制被设置为在最后一位实际完成之前接收。  实际上、如果我应用任何 UART 控制位来使串行通信在 MSP 内部进行接收、例如使用 SWRST 将 UART 置于复位状态或更改 ME 位、则数据不会完成。  我发现、在执行任何操作以转到接收条件之前、我必须为循环执行至少10次计数。  MSP 以7.3MHz 运行、波特率为230400。

这是 MSP430的典型情况、还是我应该在 UART 状态机内部查看其他内容、以保证所有数据都已清除端口、包括停止位?  (8N1)。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如用户指南中所述、当 UxTXBUF 准备好接收新数据时、UTXIFGx 被置位、但并不表示之前的字节已经从 MCU 发送完成。 因此、您不能依赖 UTXIFGx 位来确定何时切换方向控制。 相反、您可以尝试轮询 TXEPT 位来告知 UART 当前是否未发送数据、或者数据是否正在 UxTXBUF 中等待。

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

    我正在轮询 TXEPT 位。  用户手册中的说明缓冲区和移位寄存器都应该完成。  正是在这之后、我将 UART 转用于 Rx 操作。  如果 TXEPT 为1后没有延迟、则接收端不会获取所有数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的错误是、在这种情况下、您已经通过添加额外的延迟来实现了最佳解决方案。

    此致、
    Ryan