芯片型号:CC2530F256
协议栈:Z-Stack 3.0.2
预编译配置位:
协调器:SampleLight
BDB_REPORTING
SECURE=1
TC_LINKKEY_JOIN
NV_INIT
NV_RESTORE
xZTOOL_P1
MT_TASK
xMT_APP_FUNC
xMT_SYS_FUNC
xMT_ZDO_FUNC
xMT_ZDO_MGMT
xMT_APP_CNF_FUNC
xLCD_SUPPORTED=DEBUG
MULTICAST_ENABLED=FALSE
ZCL_READ
ZCL_DISCOVER
ZCL_WRITE
ZCL_BASIC
ZCL_IDENTIFY
ZCL_ON_OFF
ZCL_SCENES
ZCL_GROUPS
xZCL_LEVEL_CTRL
xNO_UI
终端: SampleSwitch
SECURE=1
TC_LINKKEY_JOIN
NV_INIT
NV_RESTORE
xPOWER_SAVING
NWK_AUTO_POLL
xZTOOL_P1
MT_TASK
xMT_APP_FUNC
xMT_SYS_FUNC
xMT_ZDO_FUNC
xMT_ZDO_MGMT
xMT_APP_CNF_FUNC
xLCD_SUPPORTED=DEBUG
MULTICAST_ENABLED=FALSE
ZCL_READ
ZCL_DISCOVER
ZCL_WRITE
ZCL_BASIC
ZCL_IDENTIFY
ZCL_ON_OFF
ZCL_GROUPS
xNO_UI
在协调器初始化程序里加了:
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING);
在终端初始化程序里加了:
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING);
问题现象:上电后板子自动连接,但是一直不成功,编译环境IAR Embedded Workbench 10.10.1
请帮忙分析下是什么原因!谢谢!(附抓包文件3.2.0_Test3.2.0_Test.rar)
Alvin Chen:
你的TCLK table 满了,默认值为20个。
你需要加大NWK_MAX_DEVICE_LIST和ZDSECMGR_TC_DEVICE_MAX
user5228474:
回复 Alvin Chen:
ZDSECMGR_TC_DEVICE_MAX 30//改为30NWK_MAX_DEVICE_LIST 30//该为30
NWK_MAX_DEVICE_LIST改的再大会报错:Error[e16]: Segment XDATA_I (size: 0x128 align: 0)
但是好像还是不行,麻烦帮分析下,附抓包文件0830_Test_1.rar
Alvin Chen:
回复 user5228474:
无法解析,预计和之前以阅TCLK 传输不成功。我看你之前抓包是部分节点不能入网是不是
user5228474:
回复 Alvin Chen:
目前就一个节点,一个协调器一个终端。
Alvin Chen:
回复 user5228474:
那你直接用我们SDK里面的程序不做更改在init 里面加入:
zc:bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING|BDB_COMMISSIONING_MODE_NWK_STEERING)
zed:
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING| BDB_COMMISSIONING_MODE_FINDING_BINDING)
user5228474:
回复 Alvin Chen:
协调器预编译配置:BDB_REPORTINGSECURE=1TC_LINKKEY_JOINNV_INITNV_RESTORExZTOOL_P1xMT_TASKxMT_APP_FUNCxMT_SYS_FUNCxMT_ZDO_FUNCxMT_ZDO_MGMTxMT_APP_CNF_FUNCLCD_SUPPORTED=DEBUGMULTICAST_ENABLED=FALSEZCL_READZCL_DISCOVERZCL_WRITEZCL_BASICZCL_IDENTIFYZCL_ON_OFFZCL_SCENESZCL_GROUPSZCL_LEVEL_CTRL终端预编译配置:SECURE=1TC_LINKKEY_JOINNV_INITNV_RESTORExPOWER_SAVINGNWK_AUTO_POLLxZTOOL_P1xMT_TASKxMT_APP_FUNCxMT_SYS_FUNCxMT_ZDO_FUNCxMT_ZDO_MGMTxMT_APP_CNF_FUNCLCD_SUPPORTED=DEBUGMULTICAST_ENABLED=FALSEZCL_READZCL_DISCOVERZCL_WRITEZCL_BASICZCL_IDENTIFYZCL_ON_OFFZCL_GROUPS
以上预编译默认的没去动,IAR设置如下:
终端初始化添加位置:
协调器初始化添加位置:
抓包文件:0830_2.rar
user5228474:
回复 Alvin Chen:
哦,您是说在51行
51 8.781303 0x0000 0xd87d ZigBee 127 ✓ Confirm Key, SUCCESS//密码确认成功是吧?
那我就按目前的代码先不去修改,然后添加按键之类的代码 再测试这样可以吧?
Alvin Chen:
回复 user5228474:
是的,Confirm Key 说明TCLK 验证通过,主要是下面的通讯正常,当然验证通过也是必需条件,你之前的包没有TCLK transport的过程所以验证不通过加不了网。
user5228474:
回复 Alvin Chen:
好的,谢谢您的指导!我再看下代码,然后添加按键之类的。另外想请教下刚才设置NWK_MAX_DEVICE_LIST最大只能为30,是不意味着一个网络里最多只能30个终端?或者路由器,其它终端再链接路由器。