社区导航

 

搜索
查看: 1634|回复: 0

[讨论] zigbee协调器复位不入网与协议栈有关!!!

[复制链接]

26

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-8-7 17:40 | 显示全部楼层 |阅读模式
小弟今天又做了一天的实验,还是关于协调器掉电上电后不能入网问题,今天有重大发现:

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/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-6 08:50 , Processed in 0.079390 second(s), 23 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表