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

TMS320C6747: EDMA传输问题

Part Number:TMS320C6747

提前对您的支持表示感谢,我还在尝试EDMA来搬运数据,现在我使用region的ESR和ICR可以实现触发,表现为运行的时候,相应的寄存器EDMACC0_CCSTAT 在0x00000110和ox0之间跳转,这说明TR已经传输,并且通道也开始工作,并且IPR = 0x00000001,这是否已经说明EDMA完成了传输的所有的流程,但是我在目标地址没有看到搬运来的数据,后面我将源地址进行修改,都在L2上进行搬运,目的地址还是没有对应的数据,我将代码附在下面,希望得到您的支持~

初始化代码

void COhwDMAInit(void)
{unsigned int count = 0;// General EDMA Initial  memory protection is unlockedMPPA0 = 0x000004B3;MPPAG = 0x000004B3;/* Step 1: EDMA initialization */QUEPRI	=	0x10;//芯片级设置  okQWMTHRA =(16<<8u)|(16 & 0xFF);//ok/* Clear the Event miss Registers*/EMCR =  0xFFFFFFFF;//事件丢失寄存器清除  NoEMCRH = 0xFFFFFFFF;//  NOQEMCR =  0xFFFFFFFF;//No/* Clear CCERR register*/CCERRCLR =  0xFFFFFFFF;//No/* FOR TYPE EDMA*//* Enable the DMA (0 - 64) channels in the DRAE and DRAEH registershadow region open */DRAE1 = 0xFFFFFFFF; //影子区域  如果配置了则需要操作影子区域的寄存器来实现控制YesDRAEH1 =0xFFFFFFFF;//NO/* Step 2: Programming DMA Channel (and Param set) *//* All events are one to one mapped with the channels  64个事件 64个通道 事件映射通道 */DCHMAP0 = 0 <<5;// 0 event mapped with the channelNoDCHMAP1 = 1 <<5;// 1 event mapped with the channelNODCHMAP2 = 2 <<5;// 1 event mapped with the channel  NoDMAQNUM0=0x0;//全部放在队列0中进行Yes


//EESR =0x20000000;//29
//COhwDMA_Disable();return;
}

参数集设置代码  其中up和down数据都在0x008位置内,

void COhwDMA_rxConfig()
{/*----------------------------------------------------------------------*//* Initialize EDMA for Receive Samples for RX0*/*(volatile uint32_t *) (EVENT1_PARAMS + EDMA_PARAMS_OPT )  = 0x0010000C; //| (1<<12) ;选择AB传输 防链接  Yes*(volatile uint32_t *) (EVENT1_PARAMS + EDMA_PARAMS_SRC )  =(uint32_t)&COexEmOutPktBuf.up;		//L2的0xyes(uint32_t)COexSqInputPtr*(volatile uint32_t *) (EVENT1_PARAMS + EDMA_PARAMS_CNT )  = (0x00120000 | 0x00000002);  			// in bytesBCNT ACNTyes  2A*(volatile uint32_t *) (EVENT1_PARAMS + EDMA_PARAMS_DST )  =  (uint32_t)&COexEmInPktBuf.dn;		// DstYes(uint32_t)&COexEmInPktBuf.dn;*(volatile uint32_t *) (EVENT1_PARAMS + EDMA_PARAMS_IDX )  = (0x00020000 |0x00000002);//dstcidx  srccidxyes*(volatile uint32_t *) (EVENT1_PARAMS + EDMA_PARAMS_LNK )  = 0x0000FFFF;// null//Bcntrldyes*(volatile uint32_t *) (EVENT1_PARAMS + EDMA_PARAMS_CIDX)  = 0;//*(volatile uint32_t *) (EVENT1_PARAMS + EDMA_PARAMS_CCNT)  = 0x00000001;// Important!!!


}

采用CPU手动触发

Nancy Wang:

EDMA访问L2需要从以下地址进行访问,改一下再试试看。

,

jie wang:

非常感谢您的支持,现在已经可以正常传输,但是我看传输成功但是为什么ERRSTART错误标志位还是显示错误?这个是什么原因呀?还有我将EDMA的手动触发放在中断中进行,结果发现传输之后,EDMA始终都在运行,这个会不会对整体程序造成很大影响

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6747: EDMA传输问题
分享到: 更多 (0)