本人最近在调试一个EDMA(SDRAM->L2)的乒乓结构,遇到一点麻烦,希望高人指点,选取的是TI提供的例程,乒乓结构源代码在test_PingPong.c中。遇到困惑如下:
1、之前理解pingpong结构是在处理ping的时候传输pong,在处理pong的时候传输ping。但是我调试的结果是当相关参数设置完成,并且两个通道link和chain后,当使能发起第一个传输时:EDMA3_DRV_enableTransfer ( hEdma, chId[0],
EDMA3_DRV_TRIG_MODE_MANUAL ) ,ping和pong缓冲区的数据会相续到达,chid[0]对应着ping缓冲区(L2中),很明显这是EDMA Chain Transfer的作用。那么如何做到,在传输pong的时候去处理ping呢,因为当ping的数据传到后,pong的数据是自动触发的。这个处理的时间点给如何选取。
2、由于我采取的是2D —2D传输,对应的参数myCbData.numTrs = 1;myCbData.numTrCnt = 0;numTrs是需要收到的中断,numTrCnt是已收到的中断。在使能(上面的)发起第一次传输完成后,就会收到触发中断调用callback函数。由于我只有一次传输(2D)在我的第一次传输完成后数据应该就传完了,我发现后面还是不断的在收到中断来调用callback,应该说收到一次中断就OK了。难道是EDMA link的作用??这个不断的中断直到释放了EDMA句柄。
3、可不可以做一个通用的pingpong缓冲模型,能很方面的移植到不同的工程上(不同的算法处理)。