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.

请教McASP的AXEVT0问题



大家好:

    我用的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