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

MSP430f2132的ADC10采样问题

$
0
0

RT:

     我通过定时器对通道A7定时采样10次,供电用稳压电源3V供电,无论电压怎么变,采样出来的值都在600-650左右。看手册最大是1023。有时采样的值也会有错误,如下图。附上采样部分代码。

最后2个值不对。

uint16 SampleChannel(uint16 ChannelNum)	//进行采样通道电源等的设置
{
  uint8 i = 0;
  uint16 SampleValue = 0;                             //保存的采样值
  uint16 Value[10];
  
  _DINT();
  ADC10CTL0 &= ~ENC;                                 //在改变设置前停止A/D转换
  while (ADC10CTL1 & BUSY);                         //Wait if ADC10 core is active
  ADC10CTL0 = ADC10SHT_2 + SREF_0 + MSC + ADC10ON + ADC10IE + ADC10SR;  //t_sample=16 x ADC10CLKs,参考电压AVCC AVSS,开启ADC模块
  
  //ADC10CTL0|=ADC10ON+ADC10IE+REFON+REF2_5V+SREF_1+MSC+ADC10SHT_2;//取内部参考电压2.5V,使采样时间为16xADC10CLK,以增大采样时间以保证采样的准确性;
  ADC10CTL1 = CONSEQ_2 + ADC10SSEL_0 + ChannelNum;         //单通道多次转换,采样源自定时器
  //转换存储器0存储,ADC12内部时钟源ADC12OSC
  ADC10DTC1 = TRANSFEER_NUMBER;                            // 10 次转换,选择转换的通道                     
  ADC10AE0 |= BIT7;
  
  ADC10SA = (uint16)Value; 
  
  ADC10CTL0 |= ENC + ADC10SC;                      // Sampling and conversion start
  ADC10CTL0 &= ~ENC;
  ADC10CTL0 &= ~ADC10ON;				//关闭ADC模块电源电源
  for(i = 0; i < 10 ; i++)
  {
    SampleValue += Value[i];
  }
  SampleValue = SampleValue/10;
  _EINT();
  return (SampleValue);
}

Viewing all articles
Browse latest Browse all 3634

Trending Articles