微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > CC2530 PM2唤醒及功耗问题

CC2530 PM2唤醒及功耗问题

时间:10-02 整理:3721RD 点击:

目前使用的是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);
....
  }
}

怎么看不见我的帖子了?

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top