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.

MSP432E411Y-BGAEVM: The phenomenon that DMATXRIS is set when uDMAChannelAssign is called

Guru 12115 points

Part Number: MSP432E411Y-BGAEVM

Hi,

I ran the sample code below.

DMATXRIS is set when uDMAChannelAssign is called.

So If I call IntEnable, an interrupt occurs even though the DMA transfer is not yet complete.

Why DMATXRIS is interrupted after Assign and is there any workaround?

The evaluation board is MSP42E411Y-BGAEVM Rev A.

==========================================================

#include "ti/devices/msp432e4/driverlib/driverlib.h"

uint8_t pui8ControlTable[1024] __attribute__ ((aligned(1024)));

 

#ifdef DEBUG

void __error__(char *pcFilename, uint32_t ui32Line)

{

}

#endif

 

int main(void)

{

                     // Set System Clock

                (void)SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |

                                             SYSCTL_OSC_MAIN |

                                             SYSCTL_USE_PLL |

                                             SYSCTL_CFG_VCO_480), 120000000);

 

  // Enable UDMA

   SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);

   SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA);

   uDMAEnable();

 

                     // Enable SSI2

                     SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);

                     SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_SSI2);

                    

                     // Set Parameter SSI2

                     SSIConfigSetExpClk(SSI2_BASE, 120000000, 3, 0, 25000000, 8);

                    

                     // Enable DMA Rx and DMA Tx

                     SSIDMAEnable(SSI2_BASE,(UART_DMA_RX | UART_DMA_TX));

                    

                     // Enable SSI2 Operation

                     SSIEnable(SSI2_BASE);

                    

                     // Channel Assign

                     uDMAChannelAssign(UDMA_CH13_SSI2TX);

  

                while(true) {

                        // Do Nothing

                }

}

===================================================================

Thanks,

Koki