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.

[参考译文] 编译器/TM4C1290NCZAD:TM4C1290NCZAD

Guru**** 2511985 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/856482/compiler-tm4c1290nczad-tm4c1290nczad

器件型号:TM4C1290NCZAD

工具/软件:TI C/C++编译器

使用 uDMA 时,通过 EPI 的 SDRAM 工作正常,但我注意到可以获得 DMA 中断的结束。

我使用的代码与 KrishnanCIT_UDMA_EPI.zip 类似

以启用中断 I add

EPIIntEnable (EPI0_BASE、(EPI_INT_DMA_TX_DONE | EPI_INT_TXREQ);

写入时来自 FIFO 的 EPI 中断工作正常!!!

但是、我不接收来自 DMA 终端的中断

只有 EPI_INT_TXREQ 工作正常

  1. 当发送 FIFO 低于触发深度时、EPI_INT_TXREQ 中断。
  2. 当读取 FIFO 高于触发级别时、EPI_INT_RXREQ 中断。
  3. 发生错误时、发生 EP_INT_ERR 中断。
  4. 发送 DMA 完成时、发生 EP_INT_DMA_TX_DONE 中断。
  5. 读取 DMA 完成时、发生 EP_INT_DMA_RX_DONE 中断。

请帮助我解决此问题。。

此致、

 

哈姆

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

    EPI 被视为外设、因此 TivaWare 外设驱动程序库用户指南中的以下段落 适用。

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

    我们需要一个指示来完成从 CPU 之外通过 EPI 的慢速存储器读取数据

    根据用户指南中的报价、无法实现

    我认为无法在 DMA 的末尾获得中断是毫无意义的

    您知道如何在通过 DMA 从 EPI 读取数据的末尾实现中断吗?

    谢谢

     

    哈姆

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

    让我尝试更加明确。 在代码中、您需要为 EPI_DMA_TX_DONE 和 EPI_DMA_RX_DONE 启用 EPI 中断。 代码中的第297行是添加它的好地方。

    EPIIntEnable (INT_EPI0、EPI_INT_DMA_TX_DONE | EPI_INT_DMA_RX_DONE | EPI_INT_ERR);
    IntEnable (INT_EPI0);
    

    然后在 EPIIntHandler 例程中,当您调用 EPIIntStatus()时,请在返回状态下检查 EP_INT_DMA_TX_DONE 或 EP_INT_DMA_RX_DONE。 我建议您使用屏蔽的值、因为现在您已经启用了这两个中断源。  

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

    我按照您的说明操作、但仍然没有获取终端 DMA 接口

    附加我的文件

    如果您可以查看代码、会很高兴

    谢谢你

     

    Haime2e.ti.com/.../EPI_5F00_UDMA.c

    e2e.ti.com/.../EPI_5F00_TEST.zip

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

    我从您的第一个帖子中获取了示例、并对其进行了修改、使其正常工作。 由于 EPI 采用16位数据总线、因此我将阵列和传输更改为16位宽。 请注意 initdma()中的函数 uDMAChannelAssign()的用法。 当 UDMA 读取256个16位半字时、您会得到一个 EPI 中断、该中断在 屏蔽状态寄存器中设置了 EPI_INT_DMA_RX_DONE 位。 我没有看到 TivaWare 函数来清除该中断位、因此我使用 HWREG 写入操作。 然后、我开始另一个256半字读取。 CCSv8项目位于随附的.zip 文件中。

    /cfs-file/__key/communityserver-discussions-components-files/908/6201.CIT_5F00_UDMA_5F00_EPI.zip