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.

[参考译文] TM4C1294NCPDT:"peek"at DMA Buffer?

Guru**** 2526700 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1247297/tm4c1294ncpdt-peek-at-dma-buffer

器件型号:TM4C1294NCPDT

大家好、我将在 TM4C1294NCPDT 上通过 UART RX 使用 DMA、波特率为230400。   接收到的按键/值分隔的数据块大小可变、没有可预测的顺序。  有时、我接收的密钥/值对最短、只有几个字节、而其他时间、最长为50到60个字节。

我将在乒乓模式下使用 DMA 、其中的 主缓冲器和备用缓冲器的大小分别为64字节。  但是、我需要  尽快处理密钥/值数据、最好在收到每对想要处理的密钥/值后立即处理。   当然、如果我碰巧收到一系列的密钥/值对、而它们的每对只有几个字节长、那么在64字节 DMA 缓冲区 填满之前、就会花费许多 密钥/值对、这从根本上延迟了处理早期密钥/值对的速度。

我希望 在填充当前 DMA 缓冲区之前、能够通过某种方式 对其进行"查看"、并处理任何 可用的现有密钥/值对、 但是、详细查看"Tiva TM4C1294NCPDT 微控制器"数据表的第9章后、我没有看到在它完成之前可靠地"窥探"到 DMA 缓冲区的方法。

我 真正需要知道的是当前 DMA 写入指针指向接收到的下一个 RX 字节的位置、但我没有看到 这可用。

这 实际上是不可用的还是我遗漏了什么?

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

    您好、Terence:

    Unknown 说:
    我将在乒乓模式下使用 DMA 、其中 主缓冲区和备用缓冲区各为64字节。  但是、我需要  尽快处理密钥/值数据、最好在收到每对想要处理的密钥/值后立即处理。   当然、如果我碰巧收到一系列键/值对、而它们每对的长度只有几个字节、那么在64字节 DMA 缓冲区 填满之前、就会需要许多 键/值对、这大大延迟了我处理早期键/值对的速度。

    乒乓模式的作用是使您能够处理来自一个缓冲区的传入数据、同时将后续数据转移到另一个缓冲区。 我知道在将64字节填充到 DMA 缓冲区之前将需要许多密钥/值对、但这应该是您需要考虑应用程序的最坏情况。 如果您的应用无法容忍此情况、则需要减小缓冲区大小。 但减小缓冲区大小可能会遇到另一个问题、即在填满下一个缓冲区之前、您需要更长的时间来处理一个缓冲区、因为 UART 在  230400。  

    我希望 在填充当前 DMA 缓冲区之前、能够通过某种方式 对其进行"查看"、并处理任何 可用的现有密钥/值对、 但是、详细查看"Tiva TM4C1294NCPDT 微控制器"数据表的第9章后、我没有看到在它完成之前可靠地"窥探"到 DMA 缓冲区的方法。

    我 真正需要知道的是当前 DMA 写入指针指向接收到的下一个 RX 字节的位置、但我没有看到 这可用。

    [/报价]

    不可以、写入/读取数据指针不是存储器映射的指针、也无法查看 uDMA 的中间状态。 只有中断会指示传输已完成。  

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

    感谢 快速回答。