CC2530 低功耗模式断电重启后后 功耗发生变化
在使用osal_pwrmgr_task_state让一个task保持唤醒的情况下直接断电后重启,CC2530会进入低功耗模式,但功耗比正常情况下高(正常是0.4uA)。现象为电流每隔3S会跳变至12uA,然后再变回0.8uA。
另外,还有一种情况下同样会发生上面的现象:EndDevice PM3模式下失去parent节点后,利用串口RX管脚下降沿功能唤醒IC,后会出现功耗变化。具体现象为每隔2--3S就会出现一次功耗跳变至12uA,然后再变回0.8uA。正常情况下是0.3---0.4uA。
应用层无任何周期性事件。
详细描述:
1,我开启了POWER_SAVING 编译选项,定义了RFD_RCVC_ALWAYS_ON=FALSE 初始化pwrmgr_device为PWRMGR_BATTERY( osal_pwrmgr_init中pwrmgr_attribute.pwrmgr_device = PWRMGR_BATTERY;)未使用键盘等其他事件。
2,为使用串口,打开了HAL_UART=TRUE HAL_UART_DMA=2 编译选项
3,由于我的Device不需要接收zigbee数据,因此将POLL_RATE、QUEUED_POLL_RATE、RESPONSE_POLL_RATE都设置为了0.
4,在UART RX管脚设置成IO口下降沿触发,中断服务程序
HAL_ENTER_ISR(); if(P0IFG & (BV(5))) { P0SEL |= HAL_UART_Px_RX_TX; // Enable Tx and Rx on P0 IEN1 &= ~(BV(5)); //disenable Port 0 interrupt P0IEN &= ~(BV(5)); //(Port 0 Interrupt Mask)disenable P0_5 interrupt osal_set_event(Hal_TaskID,HAL_PWRMGR_HOLD_EVENT);//hold Hal_TaskID awake } /* Clear the CPU interrupt flag for Port_0 PxIFG has to be cleared before PxIF */ P0IFG &= ~(BV(5)); P0IF = 0; CLEAR_SLEEP_MODE(); HAL_EXIT_ISR();
5:在串口回调函数里,osal_set_event(Hal_TaskID,HAL_PWRMGR_CONSERVE_EVENT);//set Hal_TaskID sleeped mode
然后再将UART RX管脚重新设置成IO口下降沿触发。
如果去掉UART相关的功能,还是否会有种情况?