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/MSP430FR5847: How to transfer data from ADC12 sequence of channels using DMA

Part Number: MSP430FR5847

Tool/software: Code Composer Studio

HI all,

I'm oversampling and filtering ADC12's 4 analog inputs using 16-bit tables. Currently I'm doing all calculations using interrupt and the end of sequence. But now I want to transfer raw data form ADC to table using DMA and then do calculations only few times per second when needed.

My first idea is to use 2 DMA channels. First one will write data from ADC to table using Fixed Address To Block Of Addresses. Second DMA will modify first DMA's Source Address so in next DMA request it will copy next channel.

Result table will look like that: CH0_sample0, CH1_sample0, CH2_sample0, CH3_sample0, CH0_sample1, CH1_sample1, CH2_sample1, CH3_sample1, CH1_sample2,...

And table for second DMA: address of CH0, address of CH1, address of CH2, address of CH3

It should work but it seems a bit complicated.... Is there an easier way to do that?

  • Hi Tomasz,

    This appears to be a logical route with the limitations of the DMA. Due to the ADC43 errata you should expect a DMA transfer at the end of every ADC conversion (as compared to end of sequence) and will most likely need to use single transfer mode (instead of block transfer). Both will trigger from the ADC12IFG, the first DMA's size can be as long as possible but the second will be limited to 4 before you must repeat the source address.

    Regards,
    Ryan

**Attention** This is a public forum