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.

[参考译文] TM4C123BH6PM:如何确认所有进程都已完成 UDMA?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/991577/tm4c123bh6pm-how-to-confirm-all-processes-are-complete-of-udma

器件型号:TM4C123BH6PM

大家好、

 

客户使用 UDMA 的 CH11和初级侧(SSI0TX)。 在 PeripheralScatterGather 模式下运行。

是否有方法可以验证所有流程都已完成?

他们尝试了以下方法、但不起作用。

-使用 uDMAChannelModeGet 函数进行检查

- HWREG 的确认状态寄存器(UDMA_STAT)

 

谢谢、此致、

Kuerbis

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

    Kuerbis、您好!

    如果他们正确配置了代码、那么他们应该得到一个针对这个的中断:

    当 μ μDMA 控制器检测到来自外设的请求时、将使用主控制结构体从列表中拷贝一个数据单元到副控制结构体中、然后执行相应的传输。 传输结束后、只有当外设再次产生 μ μDMA 请求时、才会开始下一个传输。  μ μDMA 控制器仅在外设发出请求时才会继续执行列表中的传输、直到最后一次传输完成。 只有在最后一次传输结束后才会产生一个完成中断。

    此外:

    当某个外设使能 μ μDMA 后、μ μDMA 控制器会停止某个外设的正常传输中断到达中断控制器(中断仍在该外设的中断寄存器中报告)。 因此、当使用 μ μDMA 传输大量数据时、中断控制器不会随着数据流从外设接收多个中断、而是在传输完成时仅接收一个中断。 未屏蔽的外设错误中断继续发送到中断控制器。

    当 μ μDMA 通道产生一个结束中断时、DMA 通道中断状态寄存器(DMACHIS)(见623页)中与外设通道相对应的 CHIS 位置位。 外设中断处理程序代码可以使用该寄存器来确定中断是由 μ μDMA 通道引起的、还是由外设中断寄存器报告的错误事件引起的。 当中断处理程序被激活时、μ μDMA 控制器发出的完成中断请求将自动清零。

    他们在这里寻找的是什么、还是有什么不同? 它们是否为 DMA 配置了中断?  

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

    你(们)好

     

    感谢您的回复。

    客户不想使用中断、也不想使用多项运算。

    DMACHIS 寄存器中的 CHIS 位是否仍是进行插值的解决方案?

    在本例中、我们需要屏蔽中断。 对吧?

    如何操作?

     

    谢谢、此致、

    Kuerbis

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

    Kuerbis、您好!

    轮询 DMACHIS 在这里没有太大意义、因为你会看到 UDMA 已经完成、但不一定 SSI 已经完成。 我真正能想到的唯一使用 uDMA + SSI +轮询的情况是、当他们想要返回检查 SSI 传输是否完成时、 为此、您需要检查 SSI 状态寄存器并查找 BSY 位以查看它是否仍在发送。

    如果他们的想法不同、请说明客户希望如何使用轮询。