matlab采集msp430数据,msp430AD采集数据记录及分析

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内的数据都采集到,应该取较大的采样数据。

随温度及环境而变化有关。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值