您好,我再使用MSP430AFE253内置SD_24进行AD采集时出现以下两个问题:第一,AD输出的信号零漂较为严重,不知道有没有好的矫正方法;第二,在可测范围内,AD的输出只有输入信号幅值的84%左右。求大神指导!!!!
我的程序是采用定时器中断启动AD转换,在AD转换完成中断中读取转换结果,附上部分代码:
void Time_A(void)
{
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 976; //976us
TACTL = TASSEL_2 +ID_3 + MC_1; // SMCLK, upmode
}
void Init_ADC(void)
{
SD24CTL = SD24DIV_3+SD24SSEL0 ; // 1.2V ref, SMCLK
SD24CCTL0 |= SD24LSBTOG+SD24SNGL+SD24IE ; // Single conv, enable interrupt
SD24INCTL0 |= SD24INTDLY1;
SD24CCTL0 |= SD24SC; // Set bit to start conversion
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
SD24CCTL0 |= SD24SC; // Set bit to start conversion
}
#pragma vector=SD24_VECTOR
__interrupt void SD24AISR(void)
{
switch (SD24IV)
{
case 2: // SD24MEM Overflow
break;
case 4: // SD24MEM0 IFG
results[0] = SD24MEM0;
results[1] = SD24MEM0;
break;
case 6: // SD24MEM1 IFG
break;
case 8: // SD24MEM2 IFG
break;
}
__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0
}