大家好,现在做东西想发挥zigbee低功耗的功能,终端节点,采用CC2530,加入了CC2591功放,协议栈版本为TI ZStack-CC2530-2.3.0-1.4.0,在hal_board_cfg.h中修改xHAL_PA_LNA为HAL_PA_LNA开启功放,在f8wConfig.cfg中修改-DRFD_RCVC_ALWAYS_ON=FALSE,在官方协议栈Sample中修改OSAL_PwrMgr.c文件中的void osal_pwrmgr_init( void )函数pwrmgr_attribute.pwrmgr_device = PWRMGR_BATTERY; 开启低功耗。在运行时,我通过串口将休眠模式打印出来,发现大概每隔不到一秒左右串口打印的信息为02,03,03,03,03,这表示有时工作在PM2模式有时工作在PM3模式下。Sample工程我设置了两个按键,均是外部中断方式,只有在按键按下时才会发送点对点信息到协调器,请问是哪个进程运行使系统工作在PM2模式的?还有就是如果工作在这样的情况下,一节3.7v的650mh的锂电池在极少按按键的情况下能够使其工作多长时间。
VV:
你的系统只会是在按键的情况唤醒对吧?有定时的唤醒吗?
fei song94:
回复 VV:
VV工程师您好:
首先谢谢您的关注!
我的最终目的是做成只有按键按下时才唤醒,在按键按下时调用协议栈自带的发送函数发送数据到协调器。
如果OSAL没有任务的话就会工作在PM3模式,但是在得到睡眠模式后我将睡眠模式用串口打印出来,却不是只工作在PM3模式下,有时工作在PM2模式下,大概是1S左右打印一次,我在SampleApp.c中没有任务执行,在OSAL_SampleApp.c中有:
const pTaskEventHandlerFn tasksArr[] = { macEventLoop, nwk_event_loop, Hal_ProcessEvent,#if defined( MT_TASK ) MT_ProcessEvent,#endif APS_event_loop,#if defined ( ZIGBEE_FRAGMENTATION ) APSF_ProcessEvent,#endif ZDApp_event_loop,#if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT ) ZDNwkMgr_event_loop,#endif SampleApp_ProcessEvent};
是不是这里的网络层和Mac层有任务在执行?
Wanglin Li:
回复 fei song94:
请问你最后这个方案如何解决的呢?
我也想做与你类似功能的方案,但是发现,系统始终会跑如下三个事件。
macEventLoop,nwk_event_loop,APS_event_loop,