×
嵌入式 > 技术百科 > 详情

msp430AD采集数据记录及分析

发布时间:2020-06-01 发布时间:
|
1、利用先锋脉冲数据采集模拟程序对实现板进行测试,

   其中测试管脚的信号为:周期为2.4S 高电平时间为0.3s
   设置AD时:P6SEL |= 0x08;  
             ADC12CTL0 = ADC12ON+MSC+REFON+REF2_5V + SHT0_8;
             ADC12CTL1 = SHP + CONSEQ_2  + ADC12SSEL_3 +ADC12DIV_7;
             ADC12MCTL0 = SREF_1 + INCH_3;
             ADC12IE = 0X01;
             ADC12CTL0 |= ENC;         
             ADC12CTL0 |= ADC12SC; 
  即采用第3通道,选用SMCLK(DCO) 并对其进行8分频,SHT0_8(256)选用内部参考电压2.5v


  测试1,基于DCO进行的测试

  经过实际测试:
            周期:869   高电平:108   占空比:108/869 = 0.124
            周期:870   高电平:109   占空比:109/870 = 0.125
            标准:300/2400 = 0.125

  理论分析:初始DCO为800K,8分频为:100K,周期为:10us
            而转换一个数需要的周期数据为256+13+3=272个ADC12CLK ,
            SO 转换一个数的时间为2.72ms
            综上,2.4s内能完成2400/2.72=882.35个数的转换,与实测的870基本吻合。
            
            若不考虑Tsync:则转换一个数需要的周期数据为256+13=269个ADC12CLK ,
            SO 转换一个数的时间为2690ms
            从而2.4S内能完成2400/2.69 = 892 (与实测的相差大)


  
   测试2,基于外部8MHz晶体进行的测试     
        
   设置AD时: 
    BCSCTL1 &= ~XT2OFF;                 // 打开XT2高频晶体振荡器

      do
     {
         IFG1 &= ~OFIFG;                 //清除晶振失败标志
         for (i = 0xFF; i > 0; i--);     // 等待8MHz晶体起振
     }
     while ((IFG1 & OFIFG));             // 晶振失效标志仍然存在?

  BCSCTL2 = SELM_2+DIVM_3; //select XT2,并对其进行8分频,然后供给MCLK;
  ADC12CTL0 = ADC12ON+MSC+REFON+REF2_5V + SHT0_8;  // Turn on ADC12, extend sampling timeSHT0_8

  ADC12CTL1 = SHP + CONSEQ_2  + ADC12SSEL_2 +ADC12DIV_7;// Use sampling timer, repeated sequence,并对ADC时钟进行8分频

  ADC12MCTL0 = SREF_1 + INCH_3;
  ADC12IE = 0X01;
  ADC12CTL0 |= ENC;          // Enable conversions
  ADC12CTL0 |= ADC12SC;      // Start conversion

  理论分析:
           初始XT2为8MHz 8分频为1MHz ,再对其进行8分频为125KHz 所以ADC12CLK的周期为8us
           so 转换一个数的时间为:(256+3+13)* 8 = 2.176ms 
           SO 2.4S的周期能转换2400/2.176=1102.9  也即1102个数
           
           若不考虑Tsync 则转换一个数的时间为:(256+13)* 8 = 2.152ms 
           SO 2.4S的周期能转换2400/2.152=1115.2  也即1115个,与实际测试仅差一个数。
         

 实际测试:
          周期:1114   高电平:139   占空比:139/1114 = 0.12477  
          标准:300/2400 = 0.125

 

2、把周期为2.4ms 高电平为300ms的脉冲信号加到另一块板子上

   另一块板子采用DCO800k ,其余设置参数同上 其测试结果是:
   周期:801    高电平:100   占空比:100/801 =0.1248
   周期:799    高电平:99    占空比:99/799 = 0.1239
   标准:300/2400 = 0.125
  

   另一块板子采用XT2=6MHz时的测试结果:
   周期:836      高电平: 104     占空比:104/836 = 0.1244 
   周期:836      高电平: 104     占空比:104/836 = 0.1244   可以看出(利用外部晶体重复性好)
   标准:300/2400 = 0.125


   理论分析:
           初始XT2为6MHz 8分频为750KHz ,再对其进行8分频为93.75KHz 所以ADC12CLK的周期为10.7us
           so 转换一个数的时间为:(256+3+13)* 10.7 = 2.91ms 
           SO 2.4S的周期能转换2400/2.91=824.7  也即824个数  {与实际测试的836基本相符}
          
           若不考虑Tsync 则 2.4S的周期能转换2400/(269*10.67)=836.2 也即836 与实际测试完全相符


总结:就以上测试分析,可知,基本达到要求,但对DCO来说,稍有偏移,
      根据DATASHEET:采样的总时间为Tsample +Tsync 但如果,不考虑Tsync,则对上面的采用外部晶体采集数据时
      理论与实际完全相符。
      但对DCO就不同,并且DCO,对不同的板子,虽然占空比相同,但采集数据个数也有很大的差别。这可能与DCO本身,所以为了把2.4S内的数据都采集到,应该取较大的采样数据。
      随温度及环境而变化有关。

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
分布式光纤温度传感器(DTS)系统的应用