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.

使用C6455的EDMA时,手册中例程遇到的问题

例程中有一个非猝发的传输方式,直接McBSP中读取数据,我没有用MCBSP,而是用别的CPU触发的方式,用for循环向同一个地址写入数据,模拟一个和例程相似的环境,按照例程给的PARAMset进行配置,但是只能进行一次EDMA的操作,EDMA的完成中断也触发了,数据也搬运正常,但之后程序就跑死了,不能正常触发下一次EDMA,而且就算重新加载程序也不行,必须把DSP复位才可以

  • 你好,可以考虑在程序中添加上,EDMA完成搬运之后重置PARAMset参数的代码。

  • 试了一下还是不行,使用这个例程时,都需要对那些寄存器进行配置,我是不是少配置了什么,OPT的选项是不是也有问题,

    寄存器配置和Param set设置如下,请问有什么不对吗,用的是35通道

    DRAE0 = 0xFFFFFFFF;
    DRAEH0 = 0xFFFFFFFF;
    IECR = 0xffffffff;
    IECRH = 0xffffffff;
    ECR = 0xffffffff;
    ECRH = 0xffffffff;

    EESRH |= ((UINT32)1 << (35 - 32));
    IESRH |= ((UINT32)1 << (35 - 32));

    OPT = 0x00123000;
    SRC = (unsigned int)g_pui32_dmabuffer;
    BCNT_ACNT = 0x00100004;
    DST = (unsigned int)g_ui32_dmabuffer2;
    DSTBIDX_SRCBIDX = 0x00040000;
    BCNTRLD_LINK = 0x0000ffff;
    DSTCIDX_SRCCIDX = 0x00000000;
    Rsvd_CCNT = 0x00000000;

  • 你好,EDMA第一次能够成功,不少别的配置,建议你在触发EDMA的时候,单步运行,检查EMDA触发后Param set里面的值是否和预期一致。