微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 终端断电以后不能入网

终端断电以后不能入网

时间:10-02 整理:3721RD 点击:

NLME_RestoreFromNV()返回值为0

NV_RESTORE  NV_INI都已经定义

断电调试下, _NIB.nwkDevAddress 和_NIB.nwkState的值是多少?

_NIB.nwkDevAddress是14066 和_NIB.nwkState是NWK_ENDDEVICE

如果_NIB.nwkDevAddress = 0xFFFE的话,这个函数就返回0,这个问题每次掉电以后都会出现吗?

还是说偶尔会出现的,会不会是供电的问题导致读取NV不正确。

每次都是,我现在只有一个协调器和一个终端,协调器没有问题返回值是正常的,就终端有问题,硬件换过也没有用

_NIB.nwkDevAddress的值是在哪里被赋值的呢?

这个值是从NV里面读出来的,之前加网成功以后保存进去的。

osal_nv_read( ZCD_NV_NIB, 0, sizeof(nwkIB_t), &_NIB )

另外你检查在调用到main函数里面,断点运行到uint8 zgInit( void ),setDefault这个变量是什么。

请告诉下你使用的协议栈版本,如果是原始的协议栈,没有任何改动的情况,这个问题在你们的硬件还是不是会复现的?

我使用的协议栈是ZStack-CC2530-2.5.0,因为软件已经附加了很多功能,如果改回原来的协议栈很多功能都不能实现。如果能够解决最好,恢复原来的协议栈是最后的打算。

 刚刚发的是刚刚进入zgInit( void ),这个是赋值过后一直到这个函数运行完,setDefault的值都是0

xNWK_AUTO_POLL
ZTOOL_P1
MT_TASK
MT_SYS_FUNC
MT_ZDO_FUNC
xLCD_SUPPORTED=DEBUG
NV_RESTORE
NV_INIT
POWER_SAVING
xHOLD_AUTO_START
xHAL_ADC
xSECURE

这是IAR中定义

  if ( events & ZDO_NWK_UPDATE_NV )
  {
    HalUARTWrite(0,"j3",2);
    ZDApp_SaveNetworkStateEvt();
    if ( NLME_RestoreFromNV() )
        {
          HalUARTWrite(0,"14",2);
        }
    else
    {
      HalUARTWrite(0,"23",2);
    }


我把程序加到这里,NLME_RestoreFromNV()返回还是0,因为网上说调试的时候可能会出现返回为0的情况,所以我加了串口节点,不过返回还是0

uint8 zgInit( void )
{
uint8 setDefault = FALSE;

// Do we want to default the Config state values
if ( zgReadStartupOptions() & ZCD_STARTOPT_DEFAULT_CONFIG_STATE )
{
setDefault = TRUE;
}

这个代码没有执行到?

不好意思,问题找到了,在以前的调试中在初始化的时候使用了清空Flash的函数,所以不能保存。我想问一下大神,在入网的时候有没有标志,就是只有这个标志的才能加入网络。现在我使用的这个NLME_PermitJoining

这个程序是你自己设计的吗? 为什么要在初始化的清Flash。这样的话你使能NV_RESTORE还有意义么?

用Permit Join就可以了

嗯,以前是因为有时间程序变了就不能联网了,我发现清理一下flash就好了

NLME_PermitJoiningRequest这个函数只能解决什么时间可以入网,我想解决什么设备可以入网怎么做?

你可以在设备入网的时候,如果设备的IEEE地址不是你允许的设备,可以下发秘钥,这样就没办法入网成功了

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

网站地图

Top