Part Number: MSP432P4111
We're using DMA for our transmit buffers on a few different ports, including UARTs and I2C. We're monitoring current to the board, and we're finding that when DMA is initialized on either of two of the UART ports the current increases by about 200 micro-amps, which is significant compared to the baseline 500 micro-amps. Using the DMA on I2C has no effect on the current.
I can keep the current low by not using DMA, sending bytes out through the port in a loop, but then there's a performance hit.
Is there any reason using the DMA would increase the current draw to the board? I cannot think of any explanation hardware wise.
The code for invoking the DMA looks like this:
DMA_disableChannel(DMA_CHANNEL_0);
DMA_assignChannel(DMA_CH0_EUSCIA0TX);
DMA_disableChannelAttribute(DMA_CH0_EUSCIA0TX,UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST |UDMA_ATTR_HIGH_PRIORITY |UDMA_ATTR_REQMASK);
DMA_setChannelControl(DMA_CHANNEL_0| UDMA_PRI_SELECT, UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_1);
DMA_setChannelTransfer(DMA_CH0_EUSCIA0TX| UDMA_PRI_SELECT, UDMA_MODE_BASIC, (void *)rs485Env.u32MsgBufAddr, RS485_UART_TX_DMA_BUF_ADDR, u16TxSize);
DMA_assignInterrupt(DMA_INT0, DMA_CHANNEL_0);
DMA_enableChannel(DMA_CHANNEL_0);