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

msp430F5229 功耗测试问题——内部时钟配置问题,DS18B20时序问题

我们目前使用的MCU+cc1120无线数据采集方案,在所有外围模块增加上的时候,如果不配置时钟,直接用f5229默认的时钟,进入休眠lpm3,测试共耗时,显示平均电流60ua至80ua之间,这个值比较理想,

但是在后续正常工作是测试,由于要使用ds18b20,需要精确到1us的定时,因此我们配置了时钟8MHz,源码如下,在测试的时候,只有单片机f5229时,把内部时钟配置成8MHz,然后休眠下去,测试时平均电流是180ua  差距很大啊,如果把我们的所有外围电路都加上,时钟配置内部8M测试平局休眠电流450ua,这个稍微有点高,不知道能否用内部默认时钟来操作ds18b20,由于是one wire  操作,对时序要求严格,所以不得不把时钟频率提高,不知道有没有什么好的解决办法了,

void halInitMCU(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  //内部时钟源
  UCSCTL3 = SELREF_2;                       // Set DCO FLL reference = REFO
  UCSCTL4 |= SELA_2;                        // Set ACLK = REFO
 
  __bis_SR_register(SCG0);                  // Disable the FLL control loop
  UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx  
  UCSCTL1 = DCORSEL_5;                      // Select DCO range 16MHz operation
  UCSCTL2 |= FLLD_1 + 249;                  // Set DCO Multiplier for 8MHz
                                            // (N + 1) * FLLRef = Fdco
                                            // (249 + 1) * 32768 = 8MHz
  __bic_SR_register(SCG0);                  // Enable the FLL control loop

//   Worst-case settling time for the DCO when the DCO range bits have been
//   changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx
//   UG for optimization.
//   32 x 32 x 8 MHz / 32,768 Hz = 250000 = MCLK cycles for DCO to settle
  __delay_cycles(250000);
  
  
//   Loop until XT1,XT2 & DCO stabilizes – In this case only DCO has to stabilize
  do
  { 
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
                                            // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG;                      // Clear fault flags
  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
  
  UCSCTL4 |= SELA_3;                        // ACLK = DCOCLK(17M)
  UCSCTL5 |= DIVA_1;                        // ACLK/2(8.5M)
  UCSCTL4 |= SELS_3;                        // SMCLK = DCOCLK(8M)
  UCSCTL5 |= DIVS_3;                        // SMCLK/8(1M)
  UCSCTL4 |= SELM_3;                        //MCLK = DCOCLK(8M)
 
  
  __bis_SR_register(GIE);            // open IE
  __no_operation();
}

 
 
thanks a lot!
灰小子:

可以在不工作的时候切换到较低频率的时钟,工作室切换到8MHz。

另外,低功耗产品的硬件设计也是有讲究的。需要尽量把外围电路在不需要工作时做到断电状态

zhanfeng dong:

回复 灰小子:

目前我们也是这么考虑的,如果配置时钟上电的话,进入休眠,整个板子在100ua以内,这个已经是比较理想的了,但是由于使用了ds18b20,需要高精度定时,不得不使用高频clk,所以在修面前又重新初始化时钟值默认,但是没有起到效果,不知道那里出了问题,可否详细讲解一下430  clk切换,是不是有一些特定切换方式或者。。。。。

thanks a lot!

赞(0)
未经允许不得转载:TI中文支持网 » msp430F5229 功耗测试问题——内部时钟配置问题,DS18B20时序问题
分享到: 更多 (0)