我们公司有个产品在进入低功耗后使用基于ACLK的Timer定时来唤醒, 目前发现在1分钟的定时唤醒中(其中会每100ms起来一次,查看1分钟是否到),有些产品可以准时起来,有些会延时3-6秒起来.
请问ACLK为什么频率不正确, 有方法可以校准这个频率吗?
注: 我们用的MCU为msp430fr5989.
测试代码:
CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK ;
CSCTL3 = DIVA__1 | DIVS__8 | DIVM__1;;//SMCLK 8分频,ACLK,MCLK时钟均不分频
TA1CTL |= TASSEL__ACLK; //定时器TA1的时钟源为ACLK
TA1CCTL0 |= CCIE;//使能定时器TA1CCR0.CCIFG中断
TA1R = 0;
TA1CCR0 = 1*940; //设置定时器TA1计数值, 定时器频率为9.4khz, 设为100ms的周期
TA1CTL |= MC_1; //启动增计时
TA1CCTL0 |= CCIE; //使能定时器TA0CCR0.CCIFG中断
datasheet上ACLK的描述:
灰小子:
你用的VLO作为ACLK的时钟源吗?
就像你贴出的表格中,VLO的误差比较大,从6~14kHz范围。
ll hgyxb:
回复 灰小子:
这个Timer是用于低功耗时唤醒,低功耗是LPM3模式, 功耗很低.
如果使用外部晶振功耗会变高, 所以这个很适合低功耗.
有没有什么方式校准一下这个ACLK, 或者获取准确的ACLK的频率
ll hgyxb:
回复 灰小子:
确实很麻烦, 还是简单点,用外部的