This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530 做协调器有时会拒绝节点加入

产品在生产测试后,再抽检,会有一部分产品出问题。

表现是测试的时候正常,第二次上电不正常,之后多次重新上电测试也不行。如果重新烧程序可能解决.

分析是协调器的问题,但是我们无法定位问题。

Zigbee抓包工具抓包

正常情况

异常情况

异常后,Rtr_Cap 和 Dev.Cap为0

 

异常情况下,终端发送baecon request 协调器收到后,协调器并没有进入 ZDO_beaconNotifyIndCB 回调函数。

 

能不能帮我们分析下是什么原因造成的?如何修改。

THANSK!

  • ZDO_beaconNotifyIndCB 这个函数只会在节点上被调用到,在协调器上是不会的。

    你的协调器关联表是设备加满了吧,如果在使能NV_RESTORE的情况下,所有子设备的信息都会保存在Coordinator的关联表里面,加满了就无法加了。

    Rtr_Cap 和 Dev.Cap为0就是说明协调器加满了,如果你们只是产线上的测试话,可以在协调器上通过调用AssocRemove函数把子设备信息都删除掉。

  • 谢谢 回复,确实开启了NV_RESTORE。我后来发现AddrMgrIsFull返回值是TRUE,通过 AddrMgrEntryGet( &addrEntry ) 获取信息,发现只有一个地址是正常的地址,其他都是无效的地址,而且都相同都是nwkAddr= 0xFFFF,extAddr=0xFFFFFFFFFFFFFFFF。使用 AssocRemove函数不能清除错误的信息,调用之后查AddrMgrIsFull还是TRUE,使用 AddrMgrEntryRelease 可以清除信息。我想请教一下测试的时候我只有一个终端设备入网,为什么会有多条记录?是不是哪里配置不对,应该注意些什么?