TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP432E401在使用uDMA的pingpong模式传输时调试发生错误

我在使用uDMA的pingpong模式来传输ADC采样数据时,为了更好的观察采样数据,我选择通过调试来观察相应地址。但是在我调试时,每次程序跑到暂停点,再次恢复运行时,程序就停止运行,并且编译器显示程序一直不断在中断处循环,这个可能比较难形容。编译器显示如下图

 一开始我认为是我程序问题,但是在使用官方的例程验证时,也存在同样问题,不知道是什么原因

Susan Yang:

请问您测试使用的是哪个例程?

“为了更好的观察采样数据,我选择通过调试来观察相应地址。”

能否详细说明一下步骤或者给出截图?

关于您给出的调试器的截图,这严格说不是一个错误,只是在该位置没有找到源码,所以编译器给出了该提示

,

user6378692:

例程是使用的gpt_32bit_periodicmode_dmareq;
关于我自己的程序,我是这样的:
首先我配置了定时器触发AD采样通过uDMA传输,然后再main函数的主循环里通过串口发送到电脑,由于发送的效果不是很理想,主函数一直在执行发送代码,后面的代码没有执行,于是我想通过调试实际观察一下数据和程序运行。在调试时我发现,一旦设置一个断点在中断函数里,程序运行到断点后暂停然后继续运行时,uDMA就不再运行,但中断却在不断的进入。最直观的感受就是接收数据的数组一直为0,且进入中断后getDMAStatus = MAP_uDMAChannelModeGet(UDMA_CH18_TIMER0A |UDMA_ALT_SELECT)
函数一直返回的不是STOP(0x0),而是pingpong(0x3)
在官方例程里也设置断点,暂停后继续uDMA也停止运行,直观的感受就是LED不在闪烁,但主程序内K值还在增加(K值是我自己为了判断程序是否运行而增加的)
刚刚测试了一下,只要是存在断点,不论是在哪,uDMA都会停止

,

Susan Yang:

抱歉,我找了一下,手边只有MSP432P系列的板子,没有MSP432E401的开发板,所以不太好测试。
建议您将贴子发至英文论坛:

e2e.ti.com/…/166

,

user6378692:

好的,我还有一个问题,如果像我这样进入了uDMA的pingpong模式,那么我该怎么退出这个模式了?具体的流程是怎样的

,

Susan Yang:

您可以看一下下面链接的函数的详细说明

7.3.3.26 void DMA_setChannelTransfer

software-dl.ti.com/…/MSP432_DriverLib_Users_Guide-MSP432P4xx-3_21_00_05.pdf

This function is used to configure the parameters for a DMA transfer. These parameters are typically changed often. The function DMA_setChannelControl() MUST be called at least once for this channel prior to calling this function.

赞(0)
未经允许不得转载:TI中文支持网 » MSP432E401在使用uDMA的pingpong模式传输时调试发生错误
分享到: 更多 (0)