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.

MSPM0G1106: MSPM0G1106 read GPIO with DMA

Part Number: MSPM0G1106

Tool/software:

I want to use the DMA to read in the PORTA on a rising edge from a GPIO.

To do this, I have configured the DMA as follows:

  uint32_t testSource = 1553;
  /* Configure DMA source, destination and size */

  DL_DMA_setSrcAddr(DMA, DMA_CH0_RX_CHAN_ID,
                    (uint32_t)&GPIOA->DIN31_0); // DIN31_0 = DIN pin 31 bis pin0
  // DL_DMA_setSrcAddr(DMA, DMA_CH0_RX_CHAN_ID,    (uint32_t)&testSource);
  // // DIN31_0 = DIN pin 31 bis pin0
  DL_DMA_setDestAddr(DMA, DMA_CH0_RX_CHAN_ID, (uint32_t)&gDesRxDmaData[0]);
  DL_DMA_setTransferSize(DMA, DMA_CH0_RX_CHAN_ID,
                         sizeof(gDesRxDmaData) / sizeof(uint32_t));
  DL_DMA_enableChannel(DMA, DMA_CH0_RX_CHAN_ID);

  test = DL_DMA_getSrcAddr(DMA, DMA_CH0_RX_CHAN_ID);
  __BKPT(0);
However, with this code I always read back the value 0. Although some pins are always high (and are also set correctly when reading back registers with the debugger).
If I set the source addr to a test variable, the value of the variable is also read correctly with the DMA.

Therefore the DMA initialization actually works, but something is wrong with the Source Addr on GPIOA->DIN31_0.
Is there something wrong with this Addr?