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

为什么CC2530 Z-Stack Mesh 1.0.0 PM3 模式唤醒后收不到进入PM3时发给它的数据和编译了-DPOWER_SAVING后HalLedSet函数不正常

Z-Stack Mesh 1.0.0  配置译如下:

-DPOWER_SAVING

-DRFD_RCVC_ALWAYS_ON=FALSE

//pwrmgr_attribute.pwrmgr_device =  PWRMGR_ALWAYS_ON; 

pwrmgr_attribute.pwrmgr_device =  PWRMGR_BATTERY;

按键为中断模式, EndDeviceEB(以下指设备A)能正常进入PM3模式,功耗为 0.8UA,  能通过按钮唤醒。

发现以下2个问题

1:当设备A从PM3模式下唤醒后,接收不到其它设备发给他的数据。  

测试过程如下:

在设备A进入PM3后,其它设备发了一条数据给设备A后,当通过按钮唤醒设备A时,设备马上向父设备请求数据(通过Packet Sniffer看到有请求数据,但回复的是0),但父设备回复是没有数据。 设备A在唤醒时开了定时任务5秒,时间到后,设置以下参数,继续进入PM3模式

ZDApp_StopJoiningCycle(); 

NLME_SetPollRate( 0 ); 

NLME_SetQueuedPollRate( 0 );
NLME_SetResponseRate( 0 );

按键唤醒后马上设置以下参数:

ZDApp_StartJoiningCycle(); 
NwkPollReq(0);
NLME_SetPollRate(1000); 
NLME_SetQueuedPollRate( 100 );
NLME_SetResponseRate( 100 ); 

如果在唤醒后,其它设备才发数据给设备A,设备A可以正常收到。

2: 当协议预编译了-DPOWER_SAVING, 通过HalLedSet( HAL_LED_5, HAL_LED_MODE_ON ); 来设置LED指示的开时,不管是在进入睡眠模式前,还是通过中断按键唤醒后,这个LED灯,并不是常亮,而是一闪一闪的,  只要注释掉  //-DPOWER_SAVING这句,也就不是不启用电源管理,指示灯正常。

如果#define HAL_LED true时,不使用HalLedSet(…)方式来控制LED,而是直接使用如P1_0 = 0(低电平驱动)时,LED灯还是一样,一闪一闪的,如果我将 HAL_BOARD._CFG.H中将LED使能关掉(#define HAL_LED false),直接使用 IO来控制,LED灯又可以正常工作,不出现所说的闪烁现象。  

望得到TI技术或各位高手的解答,谢谢!

Susan Yang:

按照您的参数进行设置后,在PM2模式是没有问题的

请问您现在的父设备是什么呢?能否给出您的抓包?

zhu zhu3:

回复 Susan Yang:

感觉你的回复 ,谢谢

我父设备是协调器   我是通过串口连接协调器,然后通过串口指令让协调器下发信息给指定设备,当设备A不在睡眠时,可以正常收到所发的信息,  只要进入睡眠时,通过串口让协调器发送数据给设备A,  设备A在唤醒后,请求时没有数据的。  

抓包文件内第二条数据时,我已经通过串口让协调器发下一条数据给  设备A(shortAdd=0X281B),发送完成后,我唤醒设备A,设备A请求,返回的是没有数据,

在第21条数据时,设备A又进入睡眠模式,    第25条数据时,我又唤醒设备A, 这时再发送一条数据给设备A,设备A可以收到数据处理后,返一条数据给协调器。之后又进入睡眠模式 

zhu zhu3:

回复 Susan Yang:

Susan Yang

按照您的参数进行设置后,在PM2模式是没有问题的

请问您现在的父设备是什么呢?能否给出您的抓包?

Susan Yang:

回复 zhu zhu3:

根据您的抓包,确实是您描述的现象。

请问您能否能将协调器的广播改为单播试试?

赞(0)
未经允许不得转载:TI中文支持网 » 为什么CC2530 Z-Stack Mesh 1.0.0 PM3 模式唤醒后收不到进入PM3时发给它的数据和编译了-DPOWER_SAVING后HalLedSet函数不正常
分享到: 更多 (0)