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

MSP430AFE253的SD24_A的使用问题

$
0
0

最近在用TI的MSP430AFE253内置的24位AD做一个采集系统,在对板子调试的时候发现以下几个问题,看了好久datasheet也没有找到答案,请大神们指导一下。

①单端采样时零漂严重,高达-124mv,将AD输入与地短接,输出电压均值-124mv,输入124mv电压,输出为0(不存在浮地问题)。在满量程输入正弦信号时,输出并不失真,我考虑是不是我读取数据的方式有问题呢。

②采集结果与实际输入电压有一定的偏差,输出信号幅值大概只有输入信号幅值的84%。

③随着我输入信号的频率提高,发现输出信号会有失真,在输入Vpp=200mv@150Hz的正弦信号时,峰顶失真很明显。

④SD24_A自身的噪声较大,有4.5mv,不知道怎么可以降低噪声。

附上我的程序:

void UartSentADData0(void)
{
char ADtemp0[4] = {0x00, 0x00, 0x00, 0x00};

ADtemp0[0] = ( results0[0]&0x00ff); // 低八位
ADtemp0[1] =( results0[0]&0xff00) >> 8; // 高八位
ADtemp0[2] = ( results0[1]&0x00ff); // 低八位
ADtemp0[3] =( results0[1]&0xff00) >> 8; // 高八位

UartPutChar(ADtemp0[1]); // 高八位
UartPutChar(ADtemp0[0]); // 中八位
UartPutChar(ADtemp0[2]); // 低八位
}

void Init_ADC(void)
{
SD24CTL = SD24DIV_3+SD24SSEL0; // SD24_A时钟源选为MCLK,分频系数为8

SD24CCTL0 |= SD24LSBTOG+SD24SNGL+SD24IE ; // Single conv, enable interrupt
SD24INCTL0 |= SD24INTDLY1;
}

void Time_A(void)
{
CCTL0 = CCIE; // 开启比较器0中断
CCR0 = 976; // 976us=1/1024*1000000
TACTL = TASSEL_2 +ID_3 + MC_1; // SMCLK, 分频8,增计数
}

#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
results0[0] = SD24MEM0;
results0[1] = SD24MEM0;
count++; //采集指示灯
if(count==50)
{
P1OUT ^= BIT2;
count=0;
}
break;
case 6: // SD24MEM1 IFG
break;
case 8: // SD24MEM2 IFG
break;
}

__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0
}


Viewing all articles
Browse latest Browse all 3634

Trending Articles