发 帖  
原厂入驻New
[问答] 路由器低功耗应该如何设置?
2020-4-29 06:25:34  125 路由器
分享
ti大神:
        小弟在测试PM2低功耗模式下,预想的是 每5s中,向外发送一次广播信息。广播信息后,保持1s的监听时间,然后再转入允许休眠的时间。周而复始的进行,使其能够降低功耗。
        实现思路:创建两个事件,一个是广播发送事件,另一个是允许进入低功耗事件。在上电入网或者建立网络后,触发广播任务。广播发送事件的周期为持续工作事件,记为T1,允许进入低功耗的周期的事件为休眠时间,记为T2,那么,整个工作周期就为T1+T2。
       代码流程如下:
IF ( event &  START_EVT ) [   //发送广播信息 ...   osal_pwrmgr_device( PWRMGR_ALWAYS_ON );   osal_pwrmgr_task_state(sapi_TaskID,PWRMGR_HOLD);  //确保在接下来的时间内,接收机是打开的     #define MAC_RECEIVE_ON 1
     #define MAC_RECEIVE_OFF 0
     uint8 value = MAC_RECEIVE_ON;
     MAC_MlmeSetReq(MAC_RX_ON_WHEN_IDLE,&value);
   osal_start_timerEx(sapi_TaskID,SLEEP_EVT,1000);         //等待1s,在这1s内,接收机始终处于开启状态。   return event ^ START_EVT; ]  if ( event & SLEEP_EVT )  [        osal_pwrmgr_device( PWRMGR_BATTERY );          osal_pwrmgr_task_state(sapi_TaskID,PWRMGR_CONSERVE);        osal_start_timerEx( sapi_TaskID,START_EVT,4000);    //允许进入休眠,4s后再次发送广播周期        return event ^ SLEEP_EVT;  ]   以下的修改,在halSleep函数中。      1  在进入MAC层休眠之前,需要手动关闭MAC层接收机,相关代码为
           uint8 value = MAC_RECEIVE_OFF;
          MAC_MlmeSetReq(MAC_RX_ON_WHEN_IDLE,&value);
     2.. 在针对路由器的低功耗中,终端的MAC休眠模式不能使用,应该改为使用MAC_PwrOffReq(MAC_PWR_SLEEP_LITE),轻度休眠模式。
  
     只要经过上述这两点的修改,路由器模式下,也是可以进入低功耗的。至于在广播数据后,等待接收数据的时间与整个广播周期的比例,则取决于你应用场景所需要的休眠占空比。
    如上面的框架代码:发送广播数据后1s内,保持接收机唤醒状态。1s后,允许当前任务进入低功耗,之后OSAL完成自己的事件处理,随机进入低功耗,在4s的时间内,会发生几次进入低功耗的情况,这是正常的。4s后,设备再次发送广播信息,周而复始重复上述操作。
    采用上述的做法,可以使路由器节省一定的功耗(协调器在建立网络后,也是可以这样来实现的)。
   
    上述是小弟在基于OSAL低功耗实现方面的摸索出来的一点心得体会,贡献出来,请大家点评,共同提高。
   
      
      
0
2020-4-29 06:25:34   评论 分享淘帖

相关讨论

1 个讨论
那中断 进入PM2 模式需要怎么配置   
1.开启POWER_SAVING 预编译
2.f8wConfig_cfg 中的RFD_RCVC_ALWAYS_ON=FALSE
3.f8wConfig_cfg中四个DPoll_RATE设为0
4.ZGlobals.c中三个PollRate设为0
5.Onboard.c文件中,OnboardKeyIntEnable=HAL_KEY_INTERUPT_ENABLE
6.hal_drivers.c中if(!Hal_KeyIntEnable)中的语句关掉
7.osal_pwrmgr_init(void)中pwrmgr_attribute.pwrmgr_device=PWRMGR_BATTERY
我按照这个来配置     我在连上网络的地方  调用Halsleep(4000);     然后在睡眠中断里  改变LED1  LED2 的状态    运行的时候   却是没5S LED 状态更换一次    5s是因为周期点播 周期是5s          是不是我哪里配置错了
2020-4-29 07:49:30 评论

举报

只有小组成员才能发言,加入小组>>

1290个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表