2484|0

19

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

zigbee协调器复位不入网与协议栈有关!!! [复制链接]

小弟今天又做了一天的实验,还是关于协调器掉电上电后不能入网问题,今天有重大发现:

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中默认状态,两个模块不能建立网络了!!!

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

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

1.png (14.8 KB, 下载次数: 0)

协议栈版本目录!!!

协议栈版本目录!!!
此帖出自RF/无线论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表