你(们)好
如何理解数据表中有关 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()可以立即发送字符?
谢谢、
天列