微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > zigbee协调器复位不入网与协议栈有关!

zigbee协调器复位不入网与协议栈有关!

时间:10-02 整理:3721RD 点击:
小弟今天又做了一天的实验,还是关于协调器掉电上电后不能入网问题,今天有重大发现:

1、协议栈默认的 PanID=0x1223 (十进制:4643) ,然后我修改默认值如下:

//uint16 zgConfigPANID = ZDAPP_CONFIG_PAN_ID;

uint16 zgConfigPANID = 0x000A;

通过单步调试, main( )—>zgInit() {Initialize basic NV items 发现执行完这个NV初始化函数时,PanID由0x000A变成0x1223,即变回原来值,继续往下找,进入函数中}—>zgInit( void )函数中执行完zgInitItems( setDefault ); PanId才改变的

2、zgInitItems( uint8 setDefault )调用了zgItemInit( uint16 id, uint16 len, void *buf, uint8 setDefault )函数,

其中 setDefault==1时,网络状态存入NV中,setDefault==0时,读出网络状态

3、使能了程序中复位计数器 bootCnt ,当setDefault==1时 清零,当setDefault==1时,每复位一次就加1,测试结果是每次都加1.

4、由上述实验结果推断,每次协调器建立网络后,并没有见新建的网络状态进行存储(即使定义了NV_RESTORE),setDefault==0,每次都是读的出场默认数据所以才出现 1 的情况。。。为了验证本人推断是否正确,修改代码:

//if ( HalKeyRead() == SW_BYPASS_NV )

networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;

// else

// {

// Determine if NV should be restored

// networkStateNV = ZDApp_ReadNetworkRestoreState();

// }

直接给networkStateNV赋值ZDO_INITDEV_NEW_NETWORK_STATE;  实验结果发现 PANID = 0x000A;

由于改变了存储在NV中默认状态,两个模块不能建立网络了!!

问题没有解决,请大神帮忙分析一下!

(自己能力有限,也不确定是不是商家程序移植的问题,纠结中!!)

协议栈版本目录!!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top