微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > cc2630进不了低功耗问题

cc2630进不了低功耗问题

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

最近在调试cc2630,底板第三方提供的,和smartrf基本一致。zstack使用Z_Stack_Home_1.2.2a版本,使用IAR软件进行编译。

使用IAR打开例程 C:\ti\simplelink\zstack_home_1_02_02a_44539\Projects\zstack\HomeAutomation\SampleDoorLock,将编译好的两个镜像通过jlink烧写进cc2630后,使用cc2630做终端设备,cc2530做协调器,进行组网,组网正常。然后测量待机功耗,发现功耗在1mA左右,远高于芯片手册的提供值。单步调试,发现代码没有进入低功耗模式,相关代码如下:

#if defined( POWER_SAVING ) && !defined(USE_ICALL)
else // Complete pass through all task events with no activity?
{
osal_pwrmgr_powerconserve(); // Put the processor/system into sleep
}
#endif

默认情况,POWER_SAVING没有定义,而USE_ICALL宏进行了定义。POWER_SAVING宏比较容易加进去,但是USE_ICALL宏去掉后编译失败,查看代码发现USE_ICALL宏必须要打开。这样的话,低功耗模式岂不是一直都进不去了吗?

在线等,希望TI的大侠们支持一下。

POWER_SAVING是需要加的,USE_ICALL也是需要加的。

整个系统的地宫是有TI RTOS来管理,跟上面的代码没有关系。

你目前测出来功耗是多少?测试后的时候,有没有把smartrf板子上所有跳线帽全部测Remove掉。

另外方便的话,私信把你们公司名字发给我,谢谢!

VV您好:

    非常感谢您的回复,加入POWER_SAVING后,测量cc2630的功耗大约在3uA左右,由于电流表在小幅跳变,再加上使用的是先测cc2630+底板两者功耗,再减去底板功耗的方式,所以结果有点不是很准确。

    同时,在测试的过程中发现了以下几个问题(试验只使用了协调器和终端设备),

    1、配置文件f8wConfig.cfg中,POLL_RATE的定义不好用,将其值修改为5000(5s),发现没起作用。但把Sample中的znwk_config.h文件的宏ZNWK_POLL_RATE为5000,发现cc2630会5s后到协调器取数据;

    2、f8wConfig.cfg文件中宏QUEUED_POLL_RATE和 RESPONSE_POLL_RATE两者的意思是什么,两者是否还有作用,看您之前在其它贴中的回复说和mac层有关,但没搞明白什么意思;查看网上的其它解释,说QUEUED_POLL_RATE是在ED收到父结点的数据指示后,会向父结点请求消息,这个时间间隔就是QUEUED_POLL_RATE,不知道是否正确;

    3、使能POWER_SAVING后,系统启动后很快进入低功耗模式(电流保持在1.430mA,底板功耗+cc2630),在保持了2分钟左右,电流会在1.430和2.0mA之间切换(切换的频率好象是POLL_RATE的值),这个切换维持大约半分钟之后,电流又维持在1.430mA。2分钟后,又开始切换。。。。。。这个是什么原因?好像ED到协调器取数据受到好几个因素的影响。

    对应cc2630的低功耗还是一片茫然,希望VV大神给予指导,ti-rtos中带的低功耗文档已经看过了,帮助不是很大。

     另外,给您发了个私信,谢谢哈

默认情况,POWER_SAVING没有定义,而USE_ICALL宏进行了定义。POWER_SAVING宏比较容易加进去,但是USE_ICALL宏去掉后编译失败,查看代码发现USE_ICALL宏必须要打开。这样的话,低功耗模式岂不是一直都进不去了吗?

#if defined( POWER_SAVING ) && !defined(USE_ICALL)
else // Complete pass through all task events with no activity?
{
osal_pwrmgr_powerconserve(); // Put the processor/system into sleep
}
#endif

请问一下您是如何将电流降下去的,加上POWER_SAVING这部分代码也不执行呀,谢谢,如果方便的话能否加个QQ。谢谢!

你好,默认情况,POWER_SAVING没有定义,而USE_ICALL宏进行了定义,所以#if defined( POWER_SAVING ) && !defined(USE_ICALL)这条语句是不成立的,下面的函数是不执行的,请问这个地方你是怎么处理的,你是怎么进入到低功耗模式的?方便留一个QQ吗,有些问题想和你交流一下,谢谢。

看看三楼VV大神的回复,说的已经很清楚了。

我知道,你不是把电流降下来了,我想问一问你是如何把电流降下来的,powerstandbypolicy(),

您好,您说整个系统的低功耗是有TI RTOS来管理,跟上面的代码没有关系,是指与这个没有关系吗?请问怎样做才能将电流降下来呢?

#if defined( POWER_SAVING ) && !defined(USE_ICALL)
else // Complete pass through all task events with no activity?
{
osal_pwrmgr_powerconserve(); // Put the processor/system into sleep
}
#endif

不用修改代码,加入POWER_SAVING之后,测下功耗,就会进入低功耗模式。

哦,我用的是TI-MAC协议栈,直接加上POWER_SAVING电流是没有降不下来,你用的是Z_Stack_Home_1.2.2a版本,可能是和协议栈有关系吧。

你好,我最近刚入手CC2630,进行组网,可是没玩过,能给我些相关资料吗。加我QQ820644700或者发我QQ邮箱。真的十分感谢。

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

网站地图

Top