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.

[参考译文] AM3359:UART DMA 触发电平

Guru**** 2589265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/637103/am3359-uart-dma-trigger-level

器件型号:AM3359

我正在使用 DMA 控制器将数据从 UART Rx 缓冲器传输到 RAM。  我遇到了 Rx 阈值(或触发电平)问题。  具体而言、即使 FIFO 级别已达到、它似乎也不会触发所设置级别的 DMA 请求。 例如、我知道我将通过 UART 接收18个字节、因此我将触发电平设置为18、并且永远不会收到事件请求。 但是、如果我将阈值降至15、则会提出请求。 问题在于、如果我在仅接收15个字节后处理请求、我会错过最后三个字节、因为处理器读取数据的速度更快、那么它将发送到 UART 通道。   

如果能在这一问题上提供任何帮助,将不胜感激。 谢谢你

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

    通常、对于 RX、当 FIFO 超过触发级别时、将生成中断/请求、因此您可以尝试将18个字节的级别设置为17。

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

    15字节级别是我能够设置的最高字节、在接收18个字节时仍会收到 DMA 请求。 但它看起来会有所不同、当我需要36个字节时、它将在35个字节处触发、而当需要54个字节时、它将在51个字节处触发。

    谢谢 Jake
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最接近裸机的是 Starterware 软件包、它是 AM335x RTOS 处理器 SDK 的一部分。 您可以将其作为参考进行检查:
    www.ti.com/.../PROCESSOR-SDK-AM335X
    processors.wiki.ti.com/.../StarterWare_02.00.01.01_User_Guide
    processors.wiki.ti.com/.../CIR
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Biser、

    作为指南、我一直在研究 Starterware 包、但启用 FIFO 时、触发级别仍然有问题。 但是、通过禁用 UART FIFO、进而为接收到的每个字节请求 DMA 传输、我能够使其正常工作。  这似乎是最好的方法,我可能应该从那里开始,但谁不喜欢在墙上敲头一周;)

    感谢您的回复。

    Jake