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.

EDMA3多通道设置,手动触发的通讯无法连接

两个通道,一个使用GPIO进行触发,并连接了一个PARAM进行自我连接,运行正常。连接是可以触发的。

另一个通道,方式为:TRIG_MODE_MANUAL,其他配置都是一样的,也连接了一个PARAM,但是连接到的PARAM没有运行,原本的那个运行到了。

手动触发 的在CC0与CC1两个DMA中都是无法连接。

  • starterware里有edma手动触发例程OMAPL138_StarterWare_1_10_04_01\examples\lcdkOMAPL138\edma
  • 就是根据这个做的,是无法连接,并不是DMA无法运行。
    是连接到的PARAM没有执行。

  • user3688025 说:
    另一个通道,方式为:TRIG_MODE_MANUAL,其他配置都是一样的,也连接了一个PARAM,但是连接到的PARAM没有运行,原本的那个运行到了

    Link不同于Chain,Link后的PARAMSET需要触发才会启动(新的事件或者新的手动触发)

  • 一个通道默认是要设置一个PARAM0的,但是这个PARAM0连接到PARMA1,PARAM1不再连接:
    param1.linkAddr = (unsigned short) 0xffffu;

    这时,手动通过EDMA3EnableTransfer进行触发一次,这时,PARAM0消耗完了,但是PARAM1一次也没有运行,这是正常的么?
    不应该是把所有的PARAM都消耗完后才会结束么?
    还是说,手动触发一次消耗PARAM0,再手动触发第二次才会消耗PARMA1.
    手动触发第三次时呢,消耗PARAM0么?第四次再消耗PARMA1,这样的循环?
  • user3688025 说:
    一个通道默认是要设置一个PARAM0的,但是这个PARAM0连接到PARMA1,PARAM1不再连接:
    param1.linkAddr = (unsigned short) 0xffffu;

    这时,手动通过EDMA3EnableTransfer进行触发一次,这时,PARAM0消耗完了,但是PARAM1一次也没有运行,这是正常的么?
    不应该是把所有的PARAM都消耗完后才会结束么?

    这是正常的结果,param0消耗完后,通过link地址把link的param1拷贝到param0的位置,等待下一次触发。

    user3688025 说:
    还是说,手动触发一次消耗PARAM0,再手动触发第二次才会消耗PARMA1.

    是的,要再手动触发。

    user3688025 说:
    手动触发第三次时呢,消耗PARAM0么?第四次再消耗PARMA1,这样的循环?

    每次都要触发。你在用GPIO时看到消耗了,是因为不停的有GPIO信号进来。 

  • 在edma例程里也有说明:手动触发需要多次使能EDMA3EnableTransfer
    /*
    * Since the transfer is going to happen in Manual mode of EDMA3
    * operation, we have to 'Enable the Transfer' multiple times.
    * Number of times depends upon the Mode (A/AB Sync)
    * and the different counts.
    */