芯片:CC2530
协议栈:zigbee1.2.2a
硬件环境:1个协调器,1个电池终端节点。
软件部分配置
-DNV_RESTORE
协调器上电后没有允许入网
case ZDO_STATE_CHANGE:
zclDevice_NwkState = (devStates_t)(pMsg->status);
if (zclDevice_NwkState == DEV_ZB_COORD) {
zAddrType_t dstAddr;
dstAddr.addrMode = Addr16Bit;
dstAddr.addr.shortAddr = 0x00;
ZDP_MgmtPermitJoinReq(&dstAddr, 0x00, 0, TRUE);
}
实际现象:
1,协调器组网后,终端节点正常入网。
2,拿掉终端节点电池。查看协调器关联表AssociatedDevList,协调器关联表中有这个终端节点的shortAddr。
3,通过烧录器,给协调器再烧录一次程序。(选择Erase and program),之后,协调器上电组建新的PANID,再查看关联表,已无前面的那个终端节点的shortAddr
4,电池节点上电,发现这个电池节点竟然会加入到这个新的PANID中,而且shortAddr还是原来的shortAddr
5,反复测试好多次了,都是如此。为何入网后的终端会这么随便的加入其它的网络?
谢谢解答!
Kevin Qiu1:
协调器创建网络后会分配给终端一个16位的PANID,重新烧写程序等于协调器重新创建网络了,你说的随便加入其他网络是什么意思?
它重新加入了协调器创建的网络?
user3514461:
回复 Kevin Qiu1:
是的,协调器重新烧录程序后上电,那个本来还在原来PANID的ED节点,竟然加入到这个新烧录的协调器网络中,在新的网络中还可以正常发送数据。
user3514461:
回复 user3514461:
哦,网络中,是否和加密选项有关?
我的是如此设置的
-DSECURE=0//1
-DZG_SECURE_DYNAMIC=0
Kevin Qiu1:
回复 user3514461:
和加密应该没关系,重新烧写协调器程序,等于重新进行了网络初始化,这个能连接是正常的呀。可以换个信道或短地址看一下
user3514461:
回复 user3514461:
感觉电池终端节点会被原来的曾加入的协调器记住,尽管这个协调器重新烧录了程序,但是不能清除所有数据,导致了原来的电池终端节点先发送orphan notification,接着reioin新的PANID,不知道这个是否是TI的BUG?
Kevin Qiu1:
回复 user3514461:
你可以升级到Z-Stack 3.0.2再试试,或者在协调器重新烧录程序后,终端节点按下复位