例程中有一个非猝发的传输方式,直接McBSP中读取数据,我没有用MCBSP,而是用别的CPU触发的方式,用for循环向同一个地址写入数据,模拟一个和例程相似的环境,按照例程给的PARAMset进行配置,但是只能进行一次EDMA的操作,EDMA的完成中断也触发了,数据也搬运正常,但之后程序就跑死了,不能正常触发下一次EDMA,而且就算重新加载程序也不行,必须把DSP复位才可以
noaming:
你好,可以考虑在程序中添加上,EDMA完成搬运之后重置PARAMset参数的代码。
cong li:
回复 noaming:
试了一下还是不行,使用这个例程时,都需要对那些寄存器进行配置,我是不是少配置了什么,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;
noaming:
回复 cong li:
你好,EDMA第一次能够成功,不少别的配置,建议你在触发EDMA的时候,单步运行,检查EMDA触发后Param set里面的值是否和预期一致。