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.

MSP432 DMA IO



I want to set up an IO pattern in memory and then have DMA stream it out over the GPIO lines at a fixed data rate.

What is the best way to achieve this and what are the best IO lines to use for this?

Example:

I have 4 IO lines and 4 independent waveform patterns that I want to output on the IO lines. I would like to set up a large region of memory that contains the waveform patterns and then configure the DMA to go until it hits the end of the region of memory.

Generally, how should I interleave the waveforms and what DMA resources should I use to achieve this? I would like to do this via DMA in order to avoid interrupt overhead due to the output data rate. Also I want the CPU to be managing an ADC acquisition process.

  • David,
    I think either the basic or ping-pong modes of the dma would be the most straight forward application. Is the waveform patterns are continuous, then the ping-pong would be preferred to the basic. Additionally the cycle size is 1024, so if you have more than that number of datapoints in your pattern the ping-pong would be better.

    The port output register (pxOUT) is the destination. This would be analogous to writing to the TX register of the eUSCI and you can find examples of this in the driver lib DMA examples (dev.ti.com/.../.

    The piece that is not straight forward is the storage of the waveforms. The DMA would be setup for byte transfers and byte increments of the source memory location. This would mean that you would need to store the data appropriately in memory: LSB->Px.0, LSB+1->Px.1, etc.

    Hope that helps,
    Chris

**Attention** This is a public forum