一、ZigBee 有两种类型的地址:一种是 64 位 IEEE 地址,即 MAC 地址, 另一种是 16 位的网络地址。
(1) 64 位的IEEE地址是一个全球仅有的地址,一经分配就将跟从设备终身。它一般由制造商或许被装置时设置。这些地址由 IEEE 安排来保护和分配。
问题:用Z-stack 协议栈编程,64位IEEE地址是否是芯片自带的,仍是需求在编程时给予赋值?这点需求持续深入研究后找出答案
(2) 16 位网络地址是当设备参加网络后分配的, 它在网络中是仅有的,用来在网络中辨别设备和发送数据。
二、网络地址的分配
(1) ZigBee运用散布式寻址计划来分配网络地址。 这个计划确保整个网络中所有分配出去的地址都是仅有的,一起,这个寻址算法自身的散布特性确保设备只能与它的父辈设备通讯来接纳一个仅有的网络地址。
(2) 在每个路由参加之前,寻址计划需求知道和装备一些参数,这些参数是: MAX_DEPTH, MAX_ROUTERS, MAX_CHILDREN。 这些参数是协议栈的一部分,在ZigBee2006中MAX_DEPTH = 5,MAX_ROUTERS = 6, MAX_CHILDREN = 20。
(a) MAX_DEPTH 决议了网络的最大深度, 和谐器坐落深度0 , 其子设备坐落深度1, 其子子设备坐落深度2 ……
(b) MAX_CHILDREN 决议了一个路由或许一个和谐器节点能够处理的子节点的最大个数
(c) MAX_ROUTERS 决议了一个路由或许和谐器节点能够处理的具有路由功用的子节点的最大个数,这个参数是 MAX_CHILDREN 的一个子集。
(3) 假如开发时想改动这些值, 需完结以下几个过程:
(a) 首先要确保这些参数的新植要合法,整个地址空间不能超过 2^16, 这就约束的参数能设置的最大值。能够运用 project\ZStack\tools文件夹下的CSkip.xls文件来承认这些值是否合法。当表格中设置的数据不合法时,就会呈现过错提示。
(b) 其次,还要确保不再运用规范的栈装备, 取而代之的是运用网络自定义的栈装备(例如:在 nwk_globals.h中将STACK_PROFILE_ID改为 NETWORK_SPECIF%&&&&&%),然后设置nwk_globals.h文件中的MAX_DEPTH参数为一个恰当的值。
(c) 最终,还要设置 nwk_golbals.c文件中的Cskipchldrn数组和CskipRtrs数组,这些数组的值由MAX_ROUTERS, MAX_CHILDREN构成。