大家好:
我用的EDMA传输McASP的数据。
以前的方案是乒乓缓存,DIT模式,反复发送,事件是AXEVT0。
现在我想用突发模式,但是发现数据总是重复发送,直到有新的数据,我想人工控制AXEVT0,请问如何解决?
代码如下:
EDMA乒乓发送:
//Set initial param for EDMA1 (Transmit on McASP0 dma 6) initial PING
EDMA6_PARAM_TABLE_ADDR[OPT] = 0x31160002; //TINT = 1, TCC = 6 modify by zdd
EDMA6_PARAM_TABLE_ADDR[SRC] = (unsigned)(&(OutBuf[0])); //Ping
EDMA6_PARAM_TABLE_ADDR[CNT] = 0x00000C00;//1 frame of 3072 samples
EDMA6_PARAM_TABLE_ADDR[DST] = 0x01B4C208; //XBUF2 on McASP0
//EDMA6_PARAM_TABLE_ADDR[DST] = 0xB0058800; //XBUF2 on McASP0//modify by cj
EDMA6_PARAM_TABLE_ADDR[IDX] = 0x00000000;
//Cnt reload = 3072, link to table 0x1B0
EDMA6_PARAM_TABLE_ADDR[RLD] = 0x0C0001B0;
//Set param table 2 for EDMA6 (Transmit on McASP0 dma 6) PONG
ADD_PARAM_TABLE2_ADDR[OPT] = 0x31160002; //TINT = 1, TCC = 6 modify by zdd
ADD_PARAM_TABLE2_ADDR[SRC] = (unsigned)(&(OutBuf[3072])); //Pong
ADD_PARAM_TABLE2_ADDR[CNT] = 0x00000C00; //1 frame of 3072 samples
ADD_PARAM_TABLE2_ADDR[DST] = 0x01B4C208; //XBUF2 on McASP0
//ADD_PARAM_TABLE3_ADDR[DST] = 0xB0058800; //XBUF2 on McASP0//modify by cj
ADD_PARAM_TABLE2_ADDR[IDX] = 0x00000000;
//Cnt reload = 3072, link to table 0x1C8
ADD_PARAM_TABLE2_ADDR[RLD] = 0x0C0001C8;
发送事件:
EDMA_ESEL1_REG |= (0x22<<16) //AXEVT0 mapped on EDMA6