Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

MSP430FR5969 序列通道多次采集触发DMA结果异常问题

$
0
0

采用MSPFR5969 采集3路ADC,用定时器触发ADC转换,ADC转化完触发DMA,并把最后一个通道转换结果保存到数组中,但实际测试发现数组中很多是连续3个相同的,感觉是三个通道的转换都触发了DMA,如下图。

但FR5969的PDF手册中说的是最后的ADC12IFGx触发了DMA,见下图

 ADC及DMA的初始化如下:

void ADC12_Init(void)
{
      ADC12CTL0 &= ~ADC12ENC;
      ADC12CTL0 = ADC12SHT0_0 | ADC12ON;        // Sampling time, S&H=4, ADC12 on
      ADC12CTL1 = ADC12SHP | ADC12SHS_1 | ADC12CONSEQ_3;
      ADC12MCTL0 = ADC12INCH_5 | ADC12VRSEL_4 ; //
      ADC12MCTL1 = ADC12INCH_4 | ADC12VRSEL_4 ;
      ADC12MCTL2 = ADC12INCH_3 | ADC12VRSEL_4 | ADC12EOS;
      ADC12CTL0 |= ADC12ENC ; // Start sampling/conversion
}

void DMA_Init(void)
{
      DMACTL0 = DMA0TSEL_26;             // ADC10IFGx triggered 
      DMACTL4 = DMARMWDIS; // Read-modify-write disable
      __data16_write_addr((unsigned short) &DMA0SA, (unsigned long) &ADC12MEM2);
      __data16_write_addr((unsigned short) &DMA0DA, (unsigned long)&(ADC_Sample_Data[0]));
      DMA0CTL &= ~DMAIFG; // Clear DMA interrupt flag
      DMA0SZ = FFT_LENGTH; // DMA0 size = 1
      DMA0CTL = DMADT_4 | DMADSTINCR_3 | DMAIE | DMAEN;
}

请大家帮忙看看,是哪里出了问题,谢谢。


Viewing all articles
Browse latest Browse all 3634

Trending Articles