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.

CCS/MSP432P401R: UDMA_MODE_PER_SCATTER_GATHER

Part Number: MSP432P401R


Tool/software: Code Composer Studio

Dear Forum. I have Problem with Scatter-Gather DMA Mode from MSP432P401R.

I have to sent four Buffers over UART0 in scatter-gather mode.  In some Steps i tested UART: simple string  transfer over UART to be sure, that UART

configured OK. After seeing String output on my PC, I started with scatter gather transfer. Some relevant parts of code is hier.

/* DMA Control Table */
#if defined(__TI_COMPILER_VERSION__)
#pragma DATA_ALIGN(MSP_EXP432P401RLP_DMAControlTable, 1024)

#elif defined(__IAR_SYSTEMS_ICC__)
#pragma data_alignment=1024
#elif defined(__GNUC__)
__attribute__ ((aligned (1024)))
#elif defined(__CC_ARM)
__align(1024)
#endif
static DMA_ControlTable MSP_EXP432P401RLP_DMAControlTable[1024];

DMA_ControlTable g_TaskTableSrc[4] =
{
 
    //
    // Task: copy fragment buffer 1 to UART
    // arb size is 8
    //
 DMA_TaskStructEntry(256, UDMA_SIZE_8,
                        UDMA_SRC_INC_8, FirstBufferTx,
                        UDMA_DST_INC_NONE,
                        &EUSCI_A0->TXBUF,
                        UDMA_ARB_8, UDMA_MODE_PER_SCATTER_GATHER),

    //
    // Task : copy fragment buffer 2 to UART
    // arb size is 8
    //
 DMA_TaskStructEntry(256, UDMA_SIZE_8,
                    UDMA_SRC_INC_8, SecondBufferTx,
                    UDMA_DST_INC_NONE,
                    &EUSCI_A0->TXBUF,
                    UDMA_ARB_8, UDMA_MODE_PER_SCATTER_GATHER),

    //Task  : copy fragment buffer 3 to UART


 DMA_TaskStructEntry(256, UDMA_SIZE_8,
                   UDMA_SRC_INC_8, ThirdBufferTx,
                   UDMA_DST_INC_NONE,
                   &EUSCI_A0->TXBUF,
                   UDMA_ARB_8, UDMA_MODE_PER_SCATTER_GATHER),

    //
    // Task : copy fragment buffer 4 to UART
    // arb size is 8
    // mode is basic since this is last task
    //
 DMA_TaskStructEntry(256, UDMA_SIZE_8,
                    UDMA_SRC_INC_8, FourtBufferTx,
                    UDMA_DST_INC_NONE,
                    &EUSCI_A0->TXBUF,
                    UDMA_ARB_8, UDMA_MODE_BASIC)
};

/* Configuring DMA module */
    MAP_DMA_enableModule();
    MAP_DMA_setControlBase(MSP_EXP432P401RLP_DMAControlTable);

//Configuring UART TX DMA channel for scatter-gather
    MAP_DMA_setChannelScatterGather(DMA_CH0_EUSCIA0TX,4,(void*)g_TaskTableSrc,1);

/* Assigning interrupts */
       MAP_DMA_assignInterrupt(DMA_INT1, DMA_CHANNEL_0);
       MAP_DMA_clearInterruptFlag(DMA_CHANNEL_0);
       MAP_DMA_enableInterrupt(DMA_INT0);
       MAP_DMA_enableInterrupt(DMA_INT1);

 /* Enable DMA Tx channel */
   MAP_DMA_enableChannel(DMA_CHANNEL_0);
   /* Forcing a software transfer on DMA Channel 0 */
       MAP_DMA_requestSoftwareTransfer(0);

After last command I can see on my Terminal only two Charakters. But my FirstBufferTx and also another Buffers are 256 Byte long and full of Data.

Is somebody know Solution?

**Attention** This is a public forum