Part Number: MSP432P401R
My Customer is having trouble hitting the 1 msps (actually needs 600khz) rate over 3 channels using the DMA.
I’m working to get the ADC14 running at 200 kSPS per channel, alternating between 3 channels for a total of 600 kSPS. I’m running at 48 MHz, have the ADC samples being triggered by TIMER_A, cycling between 3 analog channels. I’m close to 600 kSPS rate using just using ADC interrupts & no DMA, but am missing samples, as expected. I started this way (without DMA) to get my input lines, clocks, & ADC doing what I want. Now, I’m trying to fold DMA into the mix.
I need DMA to handle 2 transfer scenarios: (1) Directly into the SPI TX, and (2) Directly into a local RAM array (for pre-processing steps before SPI transfer).
I have scoured the Project|Examples|Resource Explorer, and don’t see anything this complex. Are there other sources of examples?
Apparently, there’s only 1 DMA channel that supports being triggered by the ADC (DMA Channel 7). If I’m sampling 3 channels (A0-A2), the DMA gets triggered after all 3 are scanned, so 3 transfers occur and the DMA interrupt goes off. Then, in the DMA interrupt, I have to update the destination address to move 3 entries down. This takes too long, so am missing samples.
What speed are you running the processor? [48 MHz]
What resolution are you running the ADC? [14-Bit]
What is your ADC14CLK? [24 MHz]
What is your ADDC 14PDIV? [I don’t know what this is; Using ADC_DIVIDER_2)
What clock Source are you using? [MCLK]
SLAA707.pdf appeared relevant, but upon review was not useful to the customer.
Code available on request for internal review.
Thanks!
Blake