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.
工具与软件:
尊敬的专家:
我的客户希望使用 DMA 从 UART FIFO 传输奇数个字节的数据(例如9个字节)。
我发现 DMA 必须以2字节的倍数传输数据。 对于 UART、FIFO 触发级别为2、4、8、12、14字节。
我参考此链接、发现有一种方法可以解决此问题。
方法是、用户可以在触发 DMA 以生成延迟时启动计时器计数。 该延迟应为 DMA 发送的时间和剩余的1字节数据传输的时间。 延迟后、用户可以获取最后1字节数据。 但需要 CPU。
是否有其他方法可以 通过 DMA 从 UART FIFO 传输奇数个字节?
谢谢!
LEO
尊敬的 Leo:
同时使用 DMA 和 UART 的关键是、DMA 通道的突发大小需要等于 FIFO 触发级别(因为当 UART FIFO 中有 x 个空间可用/满时、您希望触发 DMA 移动 x 个字节)。 事实上、UART 没有1/16 FIFO 触发电平、这是一个我们计划在 UART 外设中为未来器件解决的已知问题。 客户是否只是尝试使用 UART 发送奇数个字节(不接收)?
CPU 定时器方法可以使用、但我对此犹豫一下:DMA 不确定 TX FIFO 中是否有足够的可用空间(如果它没有由 UART 本身触发)。 这还假设 UART 传输的时序是确定的、但我知道对于 SCI 外设而言、情况并非如此。 对于 UART 外设、这是我必须向设计团队确认的问题。 如果时序是确定的、这可能会起作用。 它们还需要确保仅使用一个 DMA 通道、因为如果通道优先级导致 UART TX DMA 通道必须等待其他通道完成事务、然后再将数据移入 UART 数据寄存器、则时序可能会发生变化。
其他一些建议:
请告诉我、这些其他解决方案中的任何一种对客户来说是否可行。 如果没有、我将联系设计团队研究 CPU 计时器解决方案。
此致、
Delaney