协调器组网函数NLME_NetworkFormationRequest()

zhang1986jun1986 2012-12-03 04:15:26
刚刚开始接触zigbee,调试协调器的时候发现总也没法组网成功,NLME_NetworkFormationRequest()成功请求以后,ZDO_NetworkFormationConfirmCB()函数中的语句总也执行不了,后来网上查资料说组网申请的返回还有一个反馈函数 nwk_Status(),在两个反馈函数加断点调试后,发现真的会直接到 nwk_Status(),然后直接跳过ZDO_NetworkFormationConfirmCB(),进入ZDO_StartRouterConfirmCB()中,对于其中的原理不是很清楚,不知道哪位大侠可以指点下。 另:NLME_NetworkFormationRequest()执行失败的原因有哪些,查了也没查到相关资料,失败了该怎么解决?谢谢各位大侠指点江山~大家身体健康~
...全文
418 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
Zigbee入门开发 Zigbee是一种新型的短距离无线通信技术。其特点是低功耗,低成本,组网灵活。Zigbee协议由zigbee联盟指定,包括应用层,和网络层,其下层采用IEEE802.15.4协议。 无论是学习zigbee技术,还是利用zigbee技术开发产品,都需要较好的掌握zigbee协议,并比较深入的了解IEEE802.15.4协议.然而仅zigbee协议就接近400页,而IEEE802.15.4协议多达600页,全部是英文。如果从来没有接触过无线通信的开发,要迅速掌握这么多内容确实有一些难度,笔者考虑到广大急切进入zigbee的同仁者,结合自己开发中总结出的理解协议的特定方法,从开发的角度,阐述协议内容,以达到抛砖引玉的效果,同时和广大同仁交流,共同提高,并希望zigbee技术能够在中国发扬光大。 协议从功能实现来讲,ZigBee协议层共包括物理层(又称实体层)、MAC层、数据链接层、网络层和应用支持层五个主要层次。在标准制定的分工上,ZigBee协议层是由ZigBee联盟和IEEE802.15.4的任务小组共同完成的。其中,物理层(又称实体层)、MAC层、数据链接层,以及传输过程中的资料加密机制等都是由IEEE所主导的。网络层和应用支持层则由ZigBee联盟来完成。IEEE802.15.4小组与ZigBee联盟共同针对ZigBee协议栈的发展进行研究,而未来还能依据系统客户的要求来修正其所需的应用界面。如图1所示: Zigbee协议整体架构 作为理解协议,从开发者的角度来讲,这样学习协议是比较费时间的,也较难掌握。笔者从自己长期开发的经验来看,对无线通信,最重要的就是在发送端根据用户的要求,把数据能够扔出去,并且是扔到指定的设备,在接收端,能够把发送到该设备的数据捡起来。并根据用户要求的作特定的处理。如果考虑在一个无线网路中的话,就得首先建立网络,其他得设备加入网络。最后是才是一些其他的问题,如设备离开网络,设备重新加入网络,等等。 这样从通信过程去理解协议,将会使得协议的内容非常明了,也可以很好的知道利用协议开发产品,达到事半功倍的效果。 本人将根据这样的思路,分五期具体讲述协议内容: 第一期:设备建立网络过程 第二期:设备加入网络过程 第三期:数据发送过程 第四期:数据接收过程 第五期:其他的问题 zigbee设备建立网络过程 在一个zigbee网络中,只有协调(coordinator)设备可以建立网络,在建立网络过程中,所有的实现过程都是通过原语实现的(具体在程序中,如用c语言,就是调用一个一个函数,或者是一个一个任务来实现(不要刻意最求这句话的准确性,本来好的协议就是只要达到这样的结果,不管具体实现)),首先协调设备的应用层调用NLME_NETWORK_FORMATION.request原语,发出建立网络请求,网络层收到这个原语,就要求MAC层执行信道能量扫描(在IEEEE802.15.4协议中规定,在2.4G频段,共有16个信道,每个信道的带宽为5M,深入理解,可以看协议和通信原理的相关资料)。这调用MLME_SCAN.request,主要找到信道能量低于设定能量值的信道,并且标注这些信道是可用信道,下 一步就在可用信道中执行活动情况扫描(active scan),就是在可接受的信道

3,846

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧