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.

[参考译文] TMS320F28P650DK:通过 DMA 从 UART FIFO 发送奇数个字节

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1459272/tms320f28p650dk-transmit-odd-number-of-bytes-from-uart-fifo-by-dma

器件型号:TMS320F28P650DK
Thread 中讨论的其他器件:C2000WARE

工具与软件:

尊敬的专家:

我的客户希望使用 DMA 从 UART FIFO 传输奇数个字节的数据(例如9个字节)。

我发现 DMA 必须以2字节的倍数传输数据。 对于 UART、FIFO 触发级别为2、4、8、12、14字节。

我参考此链接、发现有一种方法可以解决此问题。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/967094/tms320f28388d-no-clear-path-to-achieve-efficient-data-handling-with-cm-uart

方法是、用户可以在触发 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 数据寄存器、则时序可能会发生变化。

    其他一些建议:

    1. 使用 DMA 使用 UART 触发器移动前8个字节(或除1个字节外的所有字节)、并  在传输结束 DMA 中断中将最后一个字节写入 CPU 中的 UART 数据寄存器。 这将增加一点点额外的 CPU 使用率、但是大部分的操作将由 DMA 完成。
    2. 发送偶数个字节并将接收器件配置为忽略接收到的最后一个字节(如果可能)。
    3. 切换到在 SCI 模式下使用 LIN 外设。 这个外设出现在 F28P65x 上、具有 DMA 访问权限、并且可以用单个字节触发 DMA。 C2000ware 中有2个示例、展示如何使用 LIN SCI 模式+ DMA 进行发送和接收(lin_ex3_sci_dma -使用多缓冲模式(与 FIFO 类似)和 LIN_EX7_sci_dma_single_buffer -使用单缓冲模式(与非 FIFO 类似)。

    请告诉我、这些其他解决方案中的任何一种对客户来说是否可行。 如果没有、我将联系设计团队研究 CPU 计时器解决方案。

    此致、

    Delaney