微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 关于使用ZDP_NwkAddrReq函数获取休眠终端的短地址

关于使用ZDP_NwkAddrReq函数获取休眠终端的短地址

时间:10-02 整理:3721RD 点击:

大家好,我在使用ZDP_NwkAddrReq函数通过IEEE地址获取节点短地址时遇到了问题:

需要让终端节点的-DRFD_RCVC_ALWAYS_ON=TRUE   才能成功获取到短地址。=FALSE时则不行。

想请教一下用什么办法可以用IEEE地址获取到 休眠 节点的短地址。

不管怎么样先在这里谢谢各位了!

论坛有类似问题,解答请看这边: https://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/91221.aspx

Viki Shi 你好,谢谢你在百忙之中回答我的问题。

这篇帖子我看了,原帖的发起者到最后也是遇到和我一样的疑问,按照原帖里VV说的进行操作,的确可以是在 -DRFD_RCVC_ALWAYS_ON=TRUE时获取到终端的短地址,但当 -DRFD_RCVC_ALWAYS_ON=FALSE时则没办法。

我也是着将ZDP_NwkAddrReq函数中dstAddr.addr.shortAddr=NWK_BROADCAST_SHORTADDR_DEVRXON

改为

dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVALL;

依旧无法实现。

大家好……

请问有人知道么……

谢谢了。

-DRFD_RCVC_ALWAYS_ON=FALSE的时候,你的POLL_RATE是多少,如果子设备没有向父设备进行data request的话,父设备是不会把广播数据发送给休眠的设备的。

另外父设备给子设备保存数据的最长时间是7.5s,如果超时就直接把数据丢了。

关于您说的7.5s,是固定的吗?有办法修改这个timeout值吗?

可以改。

在  f8wConfig.cfg 的    -DNWK_INDIRECT_MSG_TIMEOUT=

暂时告一段落,做一下小总结。

通过IEEE地址获取网络地址的方法:

//与用SmartRF Flash 读出来的IEEE地址是反过来的
uint8 pDestination[] ={0x34,0xB1,0xC4,0x08,0x00,0x4B,0x12,0x00};

调用函数发送请求:

 if ( keys & HAL_KEY_SW_6 )
  {
    //按键S1
    ZDP_NwkAddrReq(pDestination,ZDP_ADDR_REQTYPE_SINGLE,0,0);
    
    
  }

在ZDApp_ProcessMsgCBs()的case NWK_addr_rsp:

ZDO_NwkIEEEAddrResp_t *My_pAddrRsp= ZDO_ParseAddrRsp(inMsg);
mu_addr=My_pAddrRsp->nwkAddr;
break;

网络地址则保存至mu_addr

经测试,可以获取休眠节点的网络地址并进行通讯。

您怎么确定是这个的? 默认值为7,单位应该是ms吧?

最大值是65536,怎么换算成7.5s呢?

/* Default indirect message holding timeout value:
* 1-65535 (0 -> 65536) X CNT_RTG_TIMER X RTG_TIMER_INTERVAL
*/
-DNWK_INDIRECT_MSG_TIMEOUT=7

CNT_RTG_TIMER的定义没有找到,RTG_TIMER_INTERVAL的定义为1000。

如果真的是7.5s,即使RFD_RCVC_ALWAYS_ON为false,ZE 1s查询一次,也应该能收到父节点的包啊。

只要你的节点在正常的data request父设备就可以收到数据的,跟-DRFD_RCVC_ALWAYS_ON设置成false或者true没有关系的。

所以还是好好观察下空中的报文,节点有没有在发送data request'

怎么解决的,我也遇到这样的问题了,睡眠情况下查不到短地址,求共享方法。

jinghuan hao 你好。

节点被唤醒后向协调器发出Data request,协调器可以获取到短地址的。

我设置了 -DRFD_RCVC_ALWAYS_ON=FALSE

-DPOLL_RATE=1000

也就是睡眠节点每隔1s醒来一次,向父节点询问一次信息,协调器是可以获取到短地址的。具体操作我在上面有说。

能发给我分工程文件吗?我折腾了半天,楞是没有结果,不知道哪里配置错了?1047381010@qq.com

谢谢。低功耗没研究过,节点怎么唤醒的?自己唤醒,还是外部中断唤醒,醒来后是协议自动发送Data request,还是要自己要写发送函数?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top