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.

[参考译文] TM4C129EKCPDT:有关 UART 发送器的问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1108722/tm4c129ekcpdt-question-about-uart-transmitter

器件型号:TM4C129EKCPDT

你(们)好

如何理解数据表中有关 UART 的陈述:

'所有发送数据的最后一位何时离开串行器'(当 UART 控制寄存器中的 EOT 位置位时)? 这是否意味着一旦 EOTRIS 置位、 UART 标志(UARTFR)寄存器中的 BUSY 标志将被清零?  

我要求的原因是、我正在尝试通过具有 DMA 的 UART 发送数据包、一旦数据包传输完成、我希望发送一个特殊字符9位模式。 我正在使用 TivaWare 中的函数 UART9BitAddrSend()函数。 此函数将等待 FIFO 为空、发送器不忙、然后才能发送特殊字符。  

我正在使用 DMATX 触发 UART 中断。 在 ISR 中、调用此函数以发送特殊字符。 我注意到的是,该中断在较早的时候被触发,因此 UART9BitAddrSend()必须等待一段时间才能发送字符。 该功能等待发送器的空闲状态。 我想发生的情况是、当触发 DMATX 时、它只意味着所有数据都已发送到 FIFO。 仍然需要一段时间来清空 FIFO。

我尝试使用 TX (EOT 设置为1)作为中断源、而不是 DMATX、希望当所有数据和最后一位离开串行器时、可以发生中断。 这应避免 UART9BitAddrSend()等待时间。 但这对我没有帮助。  在发送特殊字符之前,UART9BitAddrSend()仍然浪费了大约40us (UART,250kbps)。

我想知道我是否正确理解了这样的说法:"TXRIS 置位、此时所有传输数据的最后一位离开序列化"。 这是否意味着当中断触发时,发送器应该已完成所有作业并变为空闲状态,以便函数 UART9BitAddrSend()可以立即发送字符?

谢谢、

天列

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

    刚才已经弄清楚了、延迟是由特殊字符本身的传输引起的、因为该函数还会等待发送器再次空闲以返回。