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

TMS320C6678: EDMA只能进行一次数据搬移

Part Number:TMS320C6678

CSL_edma3Init(&context);
chAttr.regionNum = CSL_EDMA3_REGION_GLOBAL;
chAttr.chaNum = 0;
hChannel = CSL_edma3ChannelOpen(&chObj,0,&chAttr,&status);
CSL_edma3HwChannelSetupParam(hChannel, 0);
CSL_edma3HwChannelSetupQue(hChannel,CSL_EDMA3_QUE_0);

hParam = CSL_edma3GetParamHandle((CSL_Edma3Handle)hChannel, 0, &status);
myparamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_EN, \
CSL_EDMA3_TCCH_DIS, \
CSL_EDMA3_ITCINT_DIS, \
CSL_EDMA3_TCINT_EN, \
0, \
CSL_EDMA3_TCC_NORMAL,\
CSL_EDMA3_FIFOWIDTH_NONE, \
CSL_EDMA3_STATIC_DIS, \
CSL_EDMA3_SYNC_AB, \
CSL_EDMA3_ADDRMODE_INCR, \
CSL_EDMA3_ADDRMODE_INCR);
myparamSetup.srcAddr = (uint32_t)src1;
myparamSetup.aCntbCnt = CSL_EDMA3_CNT_MAKE(4, 16); // (acnt, bcnt)
myparamSetup.dstAddr = (uint32_t)dstbuf1;
myparamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(4, 16*4); // (src, dst)
myparamSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(CSL_EDMA3_LINK_NULL, 0);
myparamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(16*4, 4); // (src, dst)
myparamSetup.cCnt = 16;
CSL_edma3ParamSetup(hParam, &myparamSetup);
CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);

上面为EDMA的配置,目前一个函数内多次调用可以完成数据搬移,但是放在大工程里的for循环里,第一次循环是可以成功搬运的,然后第二次就搬运不成功了。想问一下是哪里配置错误了吗?谢谢。

Vivian Gao:

您好

在您的另一个帖子中进行讨论

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6678: EDMA只能进行一次数据搬移
分享到: 更多 (0)