例程中有一个非猝发的传输方式,直接McBSP中读取数据,我没有用MCBSP,而是用别的CPU触发的方式,用for循环向同一个地址写入数据,模拟一个和例程相似的环境,按照例程给的PARAMset进行配置,但是只能进行一次EDMA的操作,EDMA的完成中断也触发了,数据也搬运正常,但之后程序就跑死了,不能正常触发下一次EDMA,而且就算重新加载程序也不行,必须把DSP复位才可以
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.
例程中有一个非猝发的传输方式,直接McBSP中读取数据,我没有用MCBSP,而是用别的CPU触发的方式,用for循环向同一个地址写入数据,模拟一个和例程相似的环境,按照例程给的PARAMset进行配置,但是只能进行一次EDMA的操作,EDMA的完成中断也触发了,数据也搬运正常,但之后程序就跑死了,不能正常触发下一次EDMA,而且就算重新加载程序也不行,必须把DSP复位才可以
试了一下还是不行,使用这个例程时,都需要对那些寄存器进行配置,我是不是少配置了什么,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;