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.

[参考译文] AM5728:DMA 模式下的 UART FIFO 和移位寄存器空中断

Guru**** 2547150 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/604372/am5728-uart-fifo-and-shift-register-empty-interrupt-in-dma-mode

器件型号:AM5728

我将通过 EDMA 通过 UART 发送一些数据。 当所有数据都被提取并放入 UART FIFO 时、我将收到 EDMA 传输完成中断。 但我们使用的是 RS-485、我们需要开始侦听响应、并且必须仅在发送最后一个字节后切换方向引脚、而不是在所有数据都放入 FIFO 中时切换。

我知道、如果我们不使用 EDMA、而是直接写入 FIFO (UART_SCR 寄存器中的 TX_EMPT_CTL_IT 位)、这是可以实现的、但是否有方法使用 EDMA 实现相同的结果?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、当 TX FIFO 和 TX 移位寄存器为空时、TX_EMPTY_CTL_IT = 1应启用 THR 中断。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    似乎对我不起作用。 发生什么情况:
    一旦我启用该中断、它会立即关闭、很明显是因为 FIFO 和移位寄存器为空。 数据表显示、为了复位该中断、我必须"写入 UART_THR、直到中断条件消失"。 您不希望向 UART_THR 写入一个字节、并且中断被复位。 我的计数器说、只有在对 UART_THR 进行85次写入后中断才会消失。 但即使它仅在我手动写入 UART_THR 时才起作用。 如果 EDMA 写入它、中断仍然被视为挂起、即使在 EDMA 完成且所有字节都被物理传输后、新中断也不会触发。 这可能是因为我的 EDMA 传输小于85字节。
    我写入 UART_THR 的人工字节会被传输、并丢弃线路。

    似乎我必须在没有 EDMA 的情况下通过 FIFO 来实现它?