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.

[参考译文] CCS/TMDXRM57LHDK:SCI DMA 通知问题

Guru**** 2465890 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/664227/ccs-tmdxrm57lhdk-sci-dma-notification-problem

器件型号:TMDXRM57LHDK

工具/软件:Code Composer Studio

您好!

我正在从事一个项目、该项目接收和处理大量传感器数据(每60ms 2k 字节)。 我已经成功找到并执行了 SCI DMA 的示例代码。 因此、我遇到的问题不是实际接收数据、而是通知。

理想情况下、对于每个完全接收到的封装、我需要收到一次通知、因此每~60ms 收到一次通知。 现在、我正在使用一个每1-2ms (每 µC 周期)调用一次的函数、如果接收到新的封装、该函数应返回 true、并且两者之间应返回 false。 在我当前的实施中、它总是返回 true。 该准则如下:

bool DMATransfer()
{ 
if (dmaGetInterruptStatus (DMA_CH1、LFS)) { //重新启动 sciREG4->CLEARINT |= SCI_SET_RX_DMA | SCI_SET_RX_DMA_ALL; dmaSetChEnable (DMA_CH1、DMA_HW); sciREF4->SETINT |= SCI_SET_RX_DMA | SCI_SET_RX_DMA_ALL; 返回 true; } 返回 false; }

如果有任何建议可以解决这个问题、我将不胜感激。

此致、

Lars

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

    从 LFS 中断标志寄存器中读取的值不会清除该寄存器。 如果要清除该寄存器、请读取 LFSAOFFSET 寄存器或向该标志寄存器写入1。

    例如、
    dmaREG->LFSFLAG =(1 <<通道);或

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

    您好、CJ、

    您的解决方案工作得非常完美。 谢谢!

    此致、

    Lars