采用MSPFR5969 采集3路ADC,用定时器触发ADC转换,ADC转化完触发DMA,并把最后一个通道转换结果保存到数组中,但实际测试发现数组中很多是连续3个相同的,感觉是三个通道的转换都触发了DMA,如下图。
但FR5969的PDF手册中说的是最后的ADC12IFGx触发了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;
}
请大家帮忙看看,是哪里出了问题,谢谢。