打印

请教MSP430F5 ADC12采样问题

[复制链接]
2114|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xw51qcxy|  楼主 | 2013-6-6 13:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xw51qcxy 于 2013-6-6 13:25 编辑

各位大侠,小弟新入手MSP430,最近在调试msp430f5325的ADC12模块,采用的是顺序通道单次采样、ADC12时钟源为SMCLK(10M)3分频,定时器B的OUT1触发采样,采样定时器的采样保持时间设置为ADC12SHT0_4和ADC12SHT1_4,中断方式,发现每次采样的结果波动比较大,请问高手大概是什么原因?
ADC程序如下:

void AdcInit(void)
{
    P5SEL |= BIT0+BIT1;      // 开启P5.0--Veref+、Veref-功能
    P6SEL |= BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6;  
    //A0、A1、A2、A3、A4、A5、A6 ADC功能使能
    P7SEL |= BIT0+BIT2+BIT3;       //A12、A14、A15 ADC功能使能
    ADC12CTL0 &= ~ADC12ENC;    //ADC12转换禁止,更主要的是为了保证某些位
                               //的初始化正确,部分位只有在该位为0时,才可初始化
    ADC12CTL0 |=ADC12SHT0_4+ADC12SHT1_4+ADC12ON+ADC12MSC;      
    ADC12CTL1 |= ADC12CSTARTADD_0+ADC12SHS_3+ADC12SHP+ADC12DIV_2;  
    ADC12CTL1 |= ADC12SSEL_3+ADC12CONSEQ_1;
    ADC12CTL1 &= ~ADC12ISSH;    //采样保持触发信号同相位
    //ADC12CTL2 |= ADC12TCOFF+ADC12RES_2;  
    ADC12MCTL0 |= ADC12SREF_2+ADC12INCH_0;//选择基准电压为 VeREF+和AVSS、通道0*/
    ADC12MCTL1 |= ADC12SREF_2+ADC12INCH_1;//选择基准电压为 VeREF+和AVSS、通道1
    ADC12MCTL2 |= ADC12SREF_2+ADC12INCH_2;//选择基准电压为 VeREF+和AVSS、通道2
    ADC12MCTL3 |= ADC12SREF_2+ADC12INCH_3;//选择基准电压为 VeREF+和AVSS、通道3
    ADC12MCTL4 |= ADC12SREF_2+ADC12INCH_4;//选择基准电压为 VeREF+和AVSS、通道4
    ADC12MCTL5 |= ADC12SREF_2+ADC12INCH_5;//选择基准电压为 VeREF+和AVSS、通道5
    ADC12MCTL6 |= ADC12SREF_2+ADC12INCH_6;//选择基准电压为 VeREF+和AVSS、通道6
    ADC12MCTL7 |= ADC12SREF_2+ADC12INCH_12;//选择基准电压为 VeREF+和AVSS、通道12
    ADC12MCTL8 |= ADC12SREF_2+ADC12INCH_14;//选择基准电压为 VeREF+和AVSS、通道14
    ADC12MCTL9 |= ADC12SREF_2+ADC12INCH_15+ADC12EOS;
    ADC12IE |= ADC12IE9;                // Enable ADC12IFG7 interrupt   
    ADC12CTL0 |=ADC12ENC;                     // Start sampling/conversion
   
}

#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
    ADC12_results[0]=ADC12MEM0;
    ADC12_results[1]=ADC12MEM1;
    ADC12_results[2]=ADC12MEM2;
    ADC12_results[3]=ADC12MEM3;
    ADC12_results[4]=ADC12MEM4;
    ADC12_results[5]=ADC12MEM5;
    ADC12_results[6]=ADC12MEM6;
    ADC12_results[7]=ADC12MEM7;
    ADC12_results[8]=ADC12MEM8;
    ADC12_results[9]=ADC12MEM9;
    ADC12CTL0 |= ADC12SC;                     // Start sampling/conversion
}

相关帖子

沙发
ok2879121| | 2013-6-6 22:12 | 只看该作者
我最近也出现这个问题,不知道怎么解决呢

使用特权

评论回复
板凳
ok2879121| | 2013-6-7 12:44 | 只看该作者
加滤波算法可以减小这的波动。

使用特权

评论回复
地板
1988020566| | 2013-6-10 00:08 | 只看该作者
使用中值滤波算法试试。

使用特权

评论回复
5
1988020566| | 2013-6-10 00:08 | 只看该作者
可能是参考电压变化的原因。

使用特权

评论回复
6
mmbs| | 2013-6-11 12:51 | 只看该作者
使用外部AD,内部的AD以前用的不是太好!

使用特权

评论回复
7
angerbird| | 2013-6-15 21:27 | 只看该作者
多采集几组数据的求平均值的就可以抵消这种影响的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝