This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2538:设备尝试连接到不存在的网络

Guru**** 2460850 points
Other Parts Discussed in Thread: Z-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1240495/cc2538-device-trying-to-connect-to-a-network-that-doesn-t-exist

器件型号:CC2538
主题中讨论的其他器件:Z-STACK

您好!

我的设备正在尝试加入不存在的网络。 我正在擦除存储器并将其刷写、以确保 NV 已清除、 且在大约5分钟后触发 ZDO_SyncIndicationCB 且其 devStartMode 更改为 MODE_REGIN。 这可能是什么原因呢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它可以加入开放的 Zigbee 网络。 我建议您使用嗅探器来检查通过无线电发生的确切情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不是这种情况、因为没有任何支持加入的 ZigBee 网络、但使用了监听器、我看不到任何东西

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否使用监听器检查所有通道?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Panagiotis:

    您使用的是什么 Z-Stack 版本、引用的项目/编译配置示例以及您对默认设置进行了哪些更改?   ZDO_SyncIndicationCB 指示与父设备失去同步、并且对于没有父关系的新设备、不会预期异或 MODE_REJIN。  您如何擦除器件存储器以及是否尝试通过软件执行恢复出厂设置?  请在代码中共享 devStartMode 更改为 MODE_REGIN 的确切位置。  是否使用了 Touchlink 功能?  此外、确认您的信道配置并提供监听器日志、至少记录从器件发送的信标请求。

    此致、
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我正在使用 Z-Stack 1.2.2a、引用的项目是 SampleLight 终端器件、但该项目取得了很高的进展、以至于像是自己的项目一样。 我被告知这个项目是为了解决这个问题、所以我对它的配置没有太多了解。 我尚未尝试 通过软件执行恢复出厂设置、但我曾尝试让"网络"保持不变、但没有任何结果、同时也尝试重新启动设备。 devStartMode 在 ZDEP.c 第1669行更改为 MODE_REGIN。 touchlink 在家庭自动化中不可用。 关于监听器、由于 ZigBee 流量较高、我将该器件和监听器都设置为通道21。 以下是到监听器日志的链接(并非所有信标请求都来自我的设备、但其中大多数请求都来自): https://drive.google.com/file/d/1z1Mdkc9o0aBPe6yBKazf9qBgyphUTT8x/view?usp=sharing

    如果对 ZD8p 进行了修改、那么此处会是您需要的确切代码片段

        if (nwkStatus == ZSuccess)
        {
          .....
        }
        else
        {
          if ( devStartMode == MODE_RESUME )
          {
            if ( ++retryCnt <= MAX_RESUME_RETRY )
            {
              if ( _NIB.nwkPanId == 0xFFFF )
                devStartMode = MODE_JOIN;
              else
              {
                devStartMode = MODE_REJOIN;
                _tmpRejoinState = true;
                prevDevState = DEV_NWK_SEC_REJOIN_CURR_CHANNEL;
              }
            }

    我设法弄清楚何时触发回调。 当程序启动时、一分钟后它会将带有 NLME_SetPollRate 的轮询速率设置为 x 数、除非器件加入网络、否则在6分钟后、它会再次将轮询速率设置为相同的 x 数、然后会触发回调。 在后续设置的轮询率上(因为如果器件未加入网络、则每6分钟会发生一次)、 不会触发回调

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如代码片段所示、如果 _NIB.nwkPanId 不等于0xFFFF、则设置 MODE_REGIN。     当 devStartMode 等于 MODE_REGIN 时、_NIB.nwkPanId 在 NIB_init 中设置为 INVALID_NODE_ADDRESS、否则在 ZD8p_ProcessOSALMSg 中针对 ZDO_Nwk_dic_CNF 情况进行了更改。  您可以进一步监视_NIB 内容并根据您的需要修改 ZDAP.c。  我建议参考 Z-Stack 3.0.2版本、因为它更加完善和稳健、例如它还 在 ZDOInitDevice 中将_NIB.nwkPanId 设置为0xFFFF。  您所描述的六分钟时间听起来像是在 f8wConfig.cfg 文件中定义的 REGUING_BACKOFF 和 REGUING_SCAN。  该网络上是否有 ZC/ZR 设备的信标?  它们未出现在监听器日志中、即使 ZED 打算"重新加入"、也应响应 Beacon 请求。  您是否还尝试过测试默认的 Z-Stack 1.2.2a ZED SampleLight 项目?

    此致、
    瑞安