TI中文支持网
TI专业的中文技术问题搜集分享网站

关于MSP430 ADC12采样频率的问题

我使用MSP430F149对一个低频的信号进行采样。程序按下列设置ADC12的寄存器:

//ADC12初始化设置
P6SEL |= 0x03; //ADC12 A1/A0
ADC12CTL0 = ADC12ON + SHT0_3 + MSC;
ADC12CTL1 = SHP + ADC12DIV_7 + ADC12SSEL_1 + CONSEQ_3; //ADC12时钟源为ACLK,1/8分频

ADC12MCTL0 = INCH_0;
ADC12MCTL1 = INCH_1 + EOS;
ADC12IE = 0x02; //开启ADC12IFG.1中断

//ADC12中断函数
#pragma vector = ADC_VECTOR
__interrupt void ISR_ADC12(void)
{   _DINT();
  ADC12IE = 0x00; //关闭ADC12中断
  buff0[index] = ADC12MEM0;
  buff1[index] = ADC12MEM1;
  index++;
  if(index == 30)
  {
    index = 0;
    ……
  }

 ADC12IE = 0x02; //开启ADC12IFG.1中断
  _EINT();
}

其中ACLK时钟为LFXT1,是32768Hz的晶振。我根据如下公式:
4*Tadc12clk*2^SHTx  + 13*(ADC12CLK时钟分频系数*1/Fadc12clk)
计算的采样频率大约是30.1Hz。从ADC12MEM寄存器接收数据是在中断程序中进行的,经过测量发现每个通道各接收30个数据均花费700ms的时间。这样看来,实际的采样率和寄存器设置的理论采样率有很大出入。这是为什么呢?

fuwenjia:

是不是计算转换时间的公式 tCONVERT = 13*(ADC12DIV*1/Fadc12clk) 有误?很多资料上讲转换时间是13×ADC12CLK,那么手册上这个tCONVERT = 13*(ADC12DIV*1/Fadc12clk) 是什么意思?

Shi JianHua:

回复 fuwenjia:

转换速率对你的项目很重要么?如果不是很关键的话,没有必要在这个上面花费太多时间。只要转换精度达到了,转换数值正确就可以了。

fuwenjia:

回复 Shi JianHua:

应用中的信号处理和计算,需要知道430F149的数据采样频率。虽然实测可以知道这个采样频率,但是实测的采样率和adc12寄存器设置的理论采样频率有很大出入。

zhi xin chen:

你好,我最近也在用MSP430自带的ADC12,看过你的帖子有问题想请教一下。

采样时间4*Tadc12clk*n, 你程序中的SHT0_3对应的n等于8吧。而你说的是4*Tadc12clk*2^SHTx  ,不知道是不是这里的问题?

希望能得到回复。

赞(0)
未经允许不得转载:TI中文支持网 » 关于MSP430 ADC12采样频率的问题
分享到: 更多 (0)