完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
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低功耗实现方面的摸索出来的一点心得体会,贡献出来,请大家点评,共同提高。 |
|
相关推荐
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 是不是我哪里配置错了 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
590 浏览 0 评论
1645 浏览 0 评论
2084 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1537 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1376 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1788浏览 29评论
2817浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1746浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1662浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1676浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 07:54 , Processed in 0.575852 second(s), Total 36, Slave 29 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
7185