TI中文支持网
TI专业的中文技术问题搜集分享网站

请问,cc2530如何让终端在没有加入网络的情况下进入POWER_SAVING?

如题,实际测试中发现,终端只有在加入网络之后才能进入低功耗模式,那么如果只有一个终端的情况下,就会一直在正常工作模式,这样子电池供电的话工作不了几天就没电了。

VV:

非常理解你的需求,在实际应用中也确实存在这样的问题。

首先你需要通过抓包看下,为什么在没有入网的情况下,功能一直会很高。原先是因为节点一直在搜索网络,发送beacon request寻找网络。

那么如果需要实现低功耗,你需要控制搜索网络的频率,或者间歇性的搜索网络。

有两种方式可以做

1)手动的使能网络扫描,你可以通过使能MANAGED_SCAN,具体你可以了解下具体的过程。

2)停止和启动网络烧苗,你可以开启一段时间扫描,如果没有扫描到,那么可以停止一段时间,这个实现,你可以参考Z-Stack Home 1.2.2a里面针对Rejoin的处理。

if( events & ZDO_REJOIN_BACKOFF ) { if( devState == DEV_NWK_BACKOFF ) { ZDApp_ChangeState(DEV_NWK_DISC); // Restart scan for rejoin ZDApp_StartJoiningCycle(); osal_start_timerEx( ZDAppTaskID, ZDO_REJOIN_BACKOFF, zgDefaultRejoinScan ); } else { // Rejoin backoff, silent period ZDApp_ChangeState(DEV_NWK_BACKOFF); ZDApp_StopJoiningCycle(); osal_start_timerEx( ZDAppTaskID, ZDO_REJOIN_BACKOFF, zgDefaultRejoinBackoff ); }

return ( events ^ ZDO_REJOIN_BACKOFF); }

xiaoming huang1:

虽然定了POWER_SAVING但是有个电源类型的全局变量默认是常电,改成电池

user4566561:

回复 xiaoming huang1:

十分感谢你的回复,请问具体在什么地方去改动?

user4566561:

回复 user4566561:

/********************************************************************* * @fn osal_pwrmgr_device * * @brief Sets the device power characteristic. * * @param pwrmgr_device – type of power devices. With PWRMGR_ALWAYS_ON * selection, there is no power savings and the device is most * likely on mains power. The PWRMGR_BATTERY selection allows the * HAL sleep manager to enter sleep. * * @return none */void osal_pwrmgr_device( uint8 pwrmgr_device ){ pwrmgr_attribute.pwrmgr_device = pwrmgr_device;}

应该是在这个地方修改吧 

xiaoming huang1:

回复 user4566561:

自己弄一个条件编译就行了

void osal_pwrmgr_init( void )

{#if defined (POWER_SAVING) pwrmgr_attribute.pwrmgr_device = PWRMGR_BATTERY;#else pwrmgr_attribute.pwrmgr_device = PWRMGR_ALWAYS_ON; #endif pwrmgr_attribute.pwrmgr_task_state = 0; // Cleared. All set to conserve}

赞(0)
未经允许不得转载:TI中文支持网 » 请问,cc2530如何让终端在没有加入网络的情况下进入POWER_SAVING?
分享到: 更多 (0)