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

CC2530 PM2唤醒及功耗问题

目前使用的是CC2530,配置进入PM2模式下,无法通过休眠定时器进行唤醒,在调试软件中,进入PM2模式后点击暂停后发现代码run在syspowermode()函数结束的地方,继续点run,CC2530会被唤醒并继续执行后续代码,同时,在CC2530进入PM2模式后用电源测芯片电流为200μA,与手册上提到的1μA差距很大,请问什么问题?

代码实现中,几个主要函数如下:

void set_low_clock(source)
{   if(source)      CLKCONCMD |= 0X80;  //选择32KHZ RCOSC为低速时钟源     else       CLKCONCMD &= ~0X80; //选择32KHZ XOSC为低速时钟源
}

void init_sleep_timer(void)
{   ST2 = 0X00;   ST1 = 0X00;   ST0 = 0X00; //设置计数值   EA = 1;     //开中断   STIE = 1;   //使能睡眠定时器中断   STIF = 0;   //清除睡眠定时器中断标志
}

void set_st_period(uint sec)
{   uint32 sleeptimer = 0;   //把ST2:ST1:ST0赋值给sleeptimer   sleeptimer |= (uint32)ST0;   sleeptimer |= ((uint32)ST1 << 8);   sleeptimer |= ((uint32)ST2 << 16);
  sleeptimer += ((uint32)sec * (uint32)32768); 
   //把加N秒的计数值赋给ST2:ST1:ST0   ST2 = (uint8)(sleeptimer >> 16);   ST1 = (uint8)(sleeptimer >> 8);   ST0 = (uint8)sleeptimer;
}
void syspowermode(uchar mode){  
  uchar j;    
  if(mode < 4)  
  {    
    SLEEPCMD &= 0XFC;
    SLEEPCMD |= mode;
    for(j = 0;j < 4;j++);    
    PCON = 0X01;
  }else      
    PCON = 0X00;
}  
#pragma vector = ST_VECTOR
__interrupt void ST_ISR(void)
{  
  EA = 0;
  STIF = 0;     //标志清除   ledblink = 1; 
  EA = 0;

void main(void)
{  
  .....
  set_low_clock(0);   init_sleep_timer();    
  .....   while(1)   {   ....
    set_st_period(2); 
 syspowermode(2);
....
  }
}
Austin Gong:

怎么看不见我的帖子了?

Austin Gong:

有没有人能回答一下我的问题?

赞(0)
未经允许不得转载:TI中文支持网 » CC2530 PM2唤醒及功耗问题
分享到: 更多 (0)