This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请教问题,关于zigbee 2530中Z-STACK中低功耗模式的使用。

Other Parts Discussed in Thread: Z-STACK, CC2530

我写了一个程序,在Z-STACK中实现了电压的采集,并成功发送接收。

现在,我想实现这样的功能:终端节点每采集、发送一次后,进行几分钟的休眠,让其进入低功耗模式;然后,再进行采集。如此循环。

我进行了如下设置:

1、我打开了POWER_SAVING。

2、在f8wConfig.cfg里设置:-DRFD_RCVC_ALWAYS_ON = FALSE。

3、闭Key轮询,开关Key中断。在Onboard.c文件的函数InitBoard()里把OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE

修改为OnboardKeyIntEnable = HAL_KEY_INTERRUPT_ENABLE;

最终,还是不能进入低功耗模式。无法进入低功耗。

if (MAC_PwrOffReq(MAC_PWR_SLEEP_DEEP) == MAC_SUCCESS) 无法成功。

请教大神指导指导,不胜感激!

PS:

有相关资料麻烦给个链接,或者496830205@qq.com



  • 你是哪个版本的协议栈?我的2.5.1a里面怎么没有这句话,请确认下!

    if (halSleepPconValue != 0 && MAC_PwrOffReq(MAC_PWR_SLEEP_DEEP) == MAC_SUCCESS)


  • 您好,首先十分感谢您的回答。

    1、我用的是“ZStack-CC2530-2.3.0-1.4.0”

    该语句在 hal_sleep.c中。我看了下,两个版本,确实有点不一样。但是,下面的内容是一样的,具体如下

    /* always use "deep sleep" to turn off radio VREG on CC2530 */
    if (MAC_PwrOffReq(MAC_PWR_SLEEP_DEEP) == MAC_SUCCESS)
    {
    #if ((defined HAL_KEY) && (HAL_KEY == TRUE))
    /* get peripherals ready for sleep */
    HalKeyEnterSleep();
    #endif

    #ifdef HAL_SLEEP_DEBUG_LED
    HAL_TURN_OFF_LED3();
    #else
    /* use this to turn LEDs off during sleep */
    HalLedEnterSleep();
    #endif

    因为 if 判断不成功,始终进入不了HalKeyEnterSleep();   

    此外,

    2、我还设置了

    /* The number of milliseconds to wait between data request polls to the coordinator. */-DPOLL_RATE=0  //原来为1000

    /* This is used after receiving a data indication to poll immediately * for queued messages...in milliseconds. */-DQUEUED_POLL_RATE=0  //原来为100
    /* This is used after receiving a data confirmation to poll immediately * for response messages...in milliseconds */-DRESPONSE_POLL_RATE=0   //原来为100

    因为官方文档中,有提到“To minimize power consumption by creating a 

    DEEP sleeping device, repetitive polling should be disabled by setting the zgPollRate to zero.”

    另外还有一个疑问,“能否进入低功耗是否与硬件有关”,具体如下:

    3、我看到TI官方文档“Application Note: Power Management For The CC2530”  (我将其放在了附件中)里面还提到了“Hardware Considerations ”

    有如下内容 ,不知道,是否硬件也要坐相应处理?  比如,没有用到的 IO必须接上拉电阻,然后再配置为通用输入IO。  或者,直接配置为 输出IO。

    “ Unused I/O pins should have a defined level and not be left floating. One way to do this is to leave the pin 

    unconnected and configure the pin as a general purpose I/O input with pull-up resistor. Alternatively the pin can be
    configured as a general purpose I/O output. In both cases the pin should not be connected directly to VDD or GND
    in order to avoid excessive power consumption.
    If the unused I/O pins are left floating in CC2530, the interrupt flag may not be cleared by software and constant
    interrupt from the unused pin may occur. ”

    4、为了实现周期采集、发送数据,我使用了“    osal_start_timerEx(GenericApp_TaskID,SEND_DATA_EVENT,3000);”函数。

    是否是该函数的调用,影响了系统进入低功耗?

    如果不能使用该函数,如何实现周期性采集、发送数据?

    具体调用过程如下:

    UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events )

    {

    ..........................................

    if(events&SEND_DATA_EVENT)

    {
    //extern uint16 HalAdcRead (uint8 channel, uint8 resolution);

    ADshuju=HalAdcRead(0,HAL_ADC_RESOLUTION_12);

    GenericApp_SendTheMessage();
    osal_start_timerEx(GenericApp_TaskID,SEND_DATA_EVENT,3000);
    return(events^SEND_DATA_EVENT);
    }

    }

    再次感谢您!

    Power Management For The CC2530.pdf
  • 最终问题解决了。是板子上面功耗的原因,把所有的附属的没用到的都去掉。功耗 1微安多一点。

  • 你现在通过断点调试可以从之前出问题的if进去了吗? 但是你现在做的是硬件处理,跟软件的设置的没什么关系啊?

  • 你可以整理一份资料出来嘛?

  • 具体怎么实现给我说说呗 用自己写一个睡眠唤醒函数吗?? 我也要实现低功耗 请赐教

  • 这个,我记不清楚了。很长时间没做过嵌入式了,都搞忘了。

    网上资料很多的。照着上面的步骤设置,一般都没有问题的。

    注意一下,多数状况没进入低功耗的原因应该是“硬件外界电路的问题,甚至一个电阻,一个二极管导致的”。

    我以前的所有的ZigBee资料,都拿来分享一下吧: http://pan.baidu.com/s/1pJO9mOV

  • 大家再问,相关资料。很长时间没做过嵌入式了,都搞忘了。

    网上资料很多的。照着上面的步骤设置,一般都没有问题的。

    注意一下,多数状况没进入低功耗的原因应该是“硬件外界电路的问题,甚至一个电阻,一个二极管导致的”。

    我以前的所有的ZigBee资料,都拿来分享一下吧: http://pan.baidu.com/s/1mg5c3VU

  • 你的网盘打不开了 能给我个地址么。。。或者发送到邮箱也行。。。lovemytang@sina.cn