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.

Problems of chaining in DM6437

EDMA3 Chaining cannot work
--------------------------
I config my EDMA3 chaining with following program,but it can not work.How to config the chaining of multiple channels correctly? Thanks!

EDMA3_DRV_ChainOptions chain = { EDMA3_DRV_TCCHEN_EN,
                                 EDMA3_DRV_ITCCHEN_EN,
                                 EDMA3_DRV_TCINTEN_EN,
                                 EDMA3_DRV_ITCINTEN_EN };

for( i = 0; i < 3; i++ )
{
    tcc[i] = EDMA3_DRV_TCC_ANY;
    chId[i] = EDMA3_DRV_DMA_CHANNEL_ANY;

    if ( EDMA3_DRV_requestChannel ( hEdma, &chId[i], &tcc[i],
                                    (EDMA3_RM_EventQueue)0,
                                    callback, &myCbData[i] )!= EDMA3_DRV_SOK )
 
    {
        fail = -2;
 return fail;
    }
}
myCbData[0].numTrs = 576;
myCbData[0].numTrCnt = 0;
EDMA3_DRV_setSrcParams( hEdma, chId[0], (capYbuffer + 1),   
                 EDMA3_DRV_ADDR_MODE_INCR,
                 EDMA3_DRV_W8BIT );
EDMA3_DRV_setDestParams ( hEdma, chId[0], (storeYbuffer1),
                   EDMA3_DRV_ADDR_MODE_INCR,
                   EDMA3_DRV_W8BIT );
EDMA3_DRV_setSrcIndex ( hEdma, chId[0], 2, 1440 );
EDMA3_DRV_setDestIndex ( hEdma, chId[0], 1, 784 );
EDMA3_DRV_setTransferParams ( hEdma, chId[0], 1, 720, 576, 720, EDMA3_DRV_SYNC_AB );
EDMA3_DRV_setOptField ( hEdma, chId[0], EDMA3_DRV_OPT_FIELD_TCINTEN, 1u );                         
EDMA3_DRV_setOptField ( hEdma, chId[0], EDMA3_DRV_OPT_FIELD_ITCINTEN, 1u ); 
EDMA3_DRV_setOptField ( hEdma, chId[0], EDMA3_DRV_OPT_FIELD_ITCCHEN, 1u );
EDMA3_DRV_setOptField ( hEdma, chId[0], EDMA3_DRV_OPT_FIELD_TCCHEN, 1u );
EDMA3_DRV_setOptField ( hEdma, chId[0], EDMA3_DRV_OPT_FIELD_STATIC, 0u );
            
myCbData[1].numTrs = 288;
myCbData[1].numTrCnt = 0;
EDMA3_DRV_setSrcParams ( hEdma, chId[1], (capYbuffer),
                  EDMA3_DRV_ADDR_MODE_INCR,
                  EDMA3_DRV_W8BIT );
EDMA3_DRV_setDestParams ( hEdma, chId[1], (storeCbbuffer1),
                   EDMA3_DRV_ADDR_MODE_INCR,
                   EDMA3_DRV_W8BIT );
EDMA3_DRV_setSrcIndex ( hEdma, chId[1], 4, 2880 );
EDMA3_DRV_setDestIndex ( hEdma, chId[1], 1, 392 );
EDMA3_DRV_setTransferParams ( hEdma, chId[1], 1, 360, 288, 360, EDMA3_DRV_SYNC_AB );
EDMA3_DRV_setOptField ( hEdma, chId[1], EDMA3_DRV_OPT_FIELD_TCINTEN, 1u );     
EDMA3_DRV_setOptField ( hEdma, chId[1], EDMA3_DRV_OPT_FIELD_ITCINTEN, 1u ); 
EDMA3_DRV_setOptField ( hEdma, chId[1], EDMA3_DRV_OPT_FIELD_ITCCHEN, 1u ); 
EDMA3_DRV_setOptField ( hEdma, chId[1],DMA3_DRV_OPT_FIELD_TCCHEN, 1u );
EDMA3_DRV_setOptField ( hEdma, chId[1], EDMA3_DRV_OPT_FIELD_STATIC, 0u );

myCbData[2].numTrs = 288;
myCbData[2].numTrCnt = 0;
EDMA3_DRV_setSrcParams ( hEdma, chId[2], (capYbuffer + 2),
                  EDMA3_DRV_ADDR_MODE_INCR,
                  EDMA3_DRV_W8BIT );
EDMA3_DRV_setDestParams ( hEdma, chId[2], (storeCrbuffer1),
                   EDMA3_DRV_ADDR_MODE_INCR,
                   EDMA3_DRV_W8BIT );
EDMA3_DRV_setSrcIndex ( hEdma, chId[2], 4, 2880 );
EDMA3_DRV_setDestIndex ( hEdma, chId[2], 1, 392 );
EDMA3_DRV_setTransferParams ( hEdma, chId[2], 1, 360, 288, 360, EDMA3_DRV_SYNC_AB );
EDMA3_DRV_setOptField ( hEdma, chId[2], EDMA3_DRV_OPT_FIELD_TCINTEN, 1u );      
EDMA3_DRV_setOptField ( hEdma, chId[2], EDMA3_DRV_OPT_FIELD_ITCINTEN, 1u );
EDMA3_DRV_setOptField ( hEdma, chId[2], EDMA3_DRV_OPT_FIELD_ITCCHEN, 1u );
EDMA3_DRV_setOptField ( hEdma, chId[2], EDMA3_DRV_OPT_FIELD_TCCHEN, 1u );
EDMA3_DRV_setOptField ( hEdma, chId[2], EDMA3_DRV_OPT_FIELD_STATIC, 0u );

// chaining channels
EDMA3_DRV_chainChannel( hEdma, chId[0], chId[1], chain );
EDMA3_DRV_setOptField ( hEdma, chId[1], EDMA3_DRV_OPT_FIELD_TCC,chId[0] );
EDMA3_DRV_chainChannel( hEdma, chId[1], chId[2], chain );     
EDMA3_DRV_setOptField ( hEdma, chId[2], EDMA3_DRV_OPT_FIELD_TCC,chId[1] );
              
EDMA3_DRV_enableTransfer ( hEdma, chId[0], EDMA3_DRV_TRIG_MODE_MANUAL );