微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > CC2530 低功耗模式断电重启后后 功耗发生变化

CC2530 低功耗模式断电重启后后 功耗发生变化

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

TI 大神您好。

软硬件环境:1:Z-Stack HA1.2

                        2:CC2530

目的:休眠模式下使用串口。实现方案:无串口数据时,将UART 的RX管脚设置成IO中断唤醒,IO中断服务程序里将UART RX重新设置成 RX功能。使用完串口后将UART RX管脚重新设置成IO管脚并使能中断。且为了保持Hal_TaskID任务唤醒状态,使用了osal_pwrmgr_task_state系列函数。

问题描述:因外界干扰,进入IO中断后,将Hal_TaskID保持唤醒状态,此时直接断电,重新上电后CC2530会进入低功耗模式,但功耗比正常情况下高(正常是0.4uA)。现象为电流每隔3S会跳变至12uA,然后再变回0.8uA。不知何原因?

望大神解惑,谢谢。

有没有其他的事件在运行的,除了串口以外的

应用层没有其他事件在运行,不知道z-stack在这种情况下会不会有事件周期性产生。我串口使用dma方式,测试发现第一次唤醒cc2530时接收到的数据有时存在错误,唤醒后,接收串口数据正常。我想没有串口数据时cc2530处于pm3模式,有数据来接收数据处理,处理完重新回到pm3模式。这种想法可以实现吗?

第一次收到数据错误的原因是,UART第一个数据过去的时候,芯片刚唤醒,32MHz还不稳定,所以前面几个数据是错误的。

如果你想用UART唤醒的话,建议你在第一次的数据前加上dummy data。

可以的实现的。

VV您好,第一次串口接收数据错误的原因我清楚了,谢谢。

在使用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口下降沿触发。

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

网站地图

Top