微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 关于PANID的修改方案,有些疑惑,请帮帮我

关于PANID的修改方案,有些疑惑,请帮帮我

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

我们想通过固定的PANID进行通信,发现代码只有如下写才可以:

panID=0x7304;
zb_WriteConfiguration( ZCD_NV_PANID, sizeof(uint16), &panID );
_NIB.nwkPanId = panID;
NLME_UpdateNV(NWK_NV_NIB_ENABLE);
#ifdef LCD_SUPPORTED
HalLcdWriteStringValue("New PANID",panID,16, HAL_LCD_LINE_5 );
#endif

SystemResetSoft();

//////////////////////////////////////////////////////////

只有代码中标红的两个地方都写入,才能正常连网,想问一下PANID不是在一个地方处理的吗?NV里的PANID和_NIB.nwkPanId 不是一个吗?

多谢

您现在是想在固定PANID下通信?那您可以通过-DZDAPP_CONFIG_PAN_ID来设置PANID并使能NV.

使能NV的情况下 PANID不会变

if (event == MAC_MLME_BEACON_NOTIFY_IND )
{
tmp += sizeof(macPanDesc_t) + pData->beaconNotifyInd.sduLength;

/*lianglinz616@163.com,固定PANID不变*/
if(zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR)
{
osal_msg_deallocate( (uint8 *)pData );
return;
}
}

你好,请问下啊!就是这个在协调器里面改变这个代码,在那个ZMAC-CB.C中是注释掉所有的代码还是说只改这一部分,您能给我发一个这个.C的文件吗?谢谢了

 我最后的解决方案如下,红色部分缺一不可:

uint16 panID;
zb_ReadConfiguration( ZCD_NV_PANID, sizeof(uint16), &panID );
if(panIDSetValue==panID-1)
panIDSetValue=panID+1;
if(_NIB.nwkPanId != panIDSetValue||panID!=panIDSetValue){
panID=panIDSetValue;
panIDSetValue++;
if(panIDSetValue==0x3FFF)
panIDSetValue=0x0001;

//save the panid value for APP
osal_nv_write( ZD_NV_REMOTE_CONTROL_STUDYNUM,0, sizeof(uint16), &panIDSetValue );

//save the panid value for Zigbee Stack
zb_WriteConfiguration( ZCD_NV_PANID, sizeof(uint16), &panID );

_NIB.nwkPanId = panID;
NLME_UpdateNV(NWK_NV_NIB_ENABLE);

#ifdef LCD_SUPPORTED
HalLcdWriteStringValue("New PANID",panID,16, lcdLineCounter );
lcdLineCounter++;
lcdLineCounter=((lcdLineCounter%8)<3)?(3):(lcdLineCounter%8);

#endif
//for Router, can not connetct cordevice, after cordevice's PANID has modify
zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
SystemResetSoft();

}

我最终的解决方案,红色部分缺一不可。

uint16 panID;
zb_ReadConfiguration( ZCD_NV_PANID, sizeof(uint16), &panID );
if(panIDSetValue==panID-1)
panIDSetValue=panID+1;
if(_NIB.nwkPanId != panIDSetValue||panID!=panIDSetValue){
panID=panIDSetValue;
panIDSetValue++;
if(panIDSetValue==0x3FFF)
panIDSetValue=0x0001;

//save the panid value for APP
osal_nv_write( ZD_NV_REMOTE_CONTROL_STUDYNUM,0, sizeof(uint16), &panIDSetValue );

//save the panid value for Zigbee Stack
zb_WriteConfiguration( ZCD_NV_PANID, sizeof(uint16), &panID );

_NIB.nwkPanId = panID;
NLME_UpdateNV(NWK_NV_NIB_ENABLE);

#ifdef LCD_SUPPORTED
HalLcdWriteStringValue("New PANID",panID,16, lcdLineCounter );
lcdLineCounter++;
lcdLineCounter=((lcdLineCounter%8)<3)?(3):(lcdLineCounter%8);

#endif
//for Router, can not connetct cordevice, after cordevice's PANID has modify
zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
SystemResetSoft();

}

按照你给出的代码试了一下,但是我的panID并没有成功修改,是不是还需要其他的设置呢?

可以把例程发我一份么  QQ:1208096019   谢谢

_NIB的值上设备上电时读出来的,NV是保存的。

需要把这2个信息做同步的

怎么同步

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

网站地图

Top