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.

[参考译文] CC2340R5:使用 CC2340R53 作为协调器时遇到的一些问题

Guru**** 2805935 points

Other Parts Discussed in Thread: SYSCONFIG, LP-EM-CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1623988/cc2340r5-some-problems-encountered-when-using-cc2340r53-as-the-coordinator

器件型号: CC2340R5
主题中讨论的其他器件: SysConfig

大家好、在使用 CC2340R53 作为协调器的调试过程中、我遇到了一些问题。 我使用的 SDK 是 8_40 版本:

1.要启动网络加入、请使用 zb_zdo_mgmt_permit_joining_req。 从数据包捕获中可以看出、捕获的数据包中存在管理许可加入请求消息、但节点无法加入网络。 我发现 Beacon 数据包中的关联许可为 0、即 0。
我将 bdb_start_top_level_commissioning (ZB_BDB_network_steering) 替换为这种模式、能够让节点加入网络、但时间固定在 180 秒。 我想自己定义时间。

case ZB_BDB_SIGNAL_DEVICE_FIRST_START:
        LOG_COMMON_LN(LOG_DEBUG, "FIRST_START: start steering" );
        buf = zb_buf_get_out();
        if (!buf)
        {
          LOG_COMMON_LN(LOG_DEBUG, "no buffer available" );
          break;
        }

        req_param = ZB_BUF_GET_PARAM(buf, zb_zdo_mgmt_permit_joining_req_param_t);

        req_param->dest_addr = 0xfffc;
        req_param->permit_duration = 0;//0xff also gave it a try.
        req_param->tc_significance = 1;

        zb_zdo_mgmt_permit_joining_req(buf, permit_joining_cb);

        break;


2.我已将.sycfg 文件中的所有通道设置为启用。 此外、我使用以下函数来配置通道。 但是、在使用监听器捕获数据包时、我注意到协调器通道仍设置为通道 11。

  zb_set_network_coordinator_role(0x01000000);
  zb_set_bdb_primary_channel_set(0x01000000);
  zb_set_bdb_secondary_channel_set(0x01000000);


3.我用协调器调用 bdb_start_top_level_commissioning(ZB_BDB_network_steering );使一个节点能够加入我的协调器的网络(节点程序是另一个应用程序)。 加入后、数据包捕获显示设备公告、但大约 20 秒后、数据包捕获显示协调器发送休假数据包、导致节点离开网络。
我注意到了 ZB_ZDO_SIGNAL_DEVICE_authorized 信号、类型和状态都为 1、即类型为 ZB_ZDO_authorization_type_R21_TCLK、状态为 ZB_ZDO_TCLK_authorization_timeout。 休假是否是由身份验证失败引起的? 有什么解决方案吗?

      case ZB_ZDO_SIGNAL_DEVICE_AUTHORIZED:
      {
        zb_ieee_addr_t ieee_addr;
        zb_zdo_signal_device_authorized_params_t *device_authorized_params = ZB_ZDO_SIGNAL_GET_PARAMS(sg_p, zb_zdo_signal_device_authorized_params_t);
        zb_uint16_t short_addr = device_authorized_params->short_addr;
        zb_ret_t ret = zb_address_ieee_by_short(short_addr, ieee_addr);
        zb_int8_t type = device_authorized_params->authorization_type;
        zb_int8_t status = device_authorized_params->authorization_status;
        atServer_printfln("short addr:%04X, ieee_addr:%02X%02X%02X%02X%02X%02X%02X%02X\r\n type: %d ,status:%d", \
            short_addr,  \
            ieee_addr[7], ieee_addr[6], ieee_addr[5], ieee_addr[4], ieee_addr[3], ieee_addr[2], ieee_addr[1], ieee_addr[0],type,status);

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

    您好:

    这是 ZBOSS 用户指南。  您是否也考虑过评估最新的 F3 SDK v9.14?

    1. UG 中解释的问题:“如果目标地址等于设备的地址,则在本地调用 nlme-perime_joining.req 以更改设备上的许可加入状态。 如果使用目标地址!=本地地址调用(可以是单播或广播)、则强制在远程设备(设备)上调用 nlme-perime_joining.req、但不在保持本地许可证加入状态不变的本地设备上调用。“ 因此、您应使用 ZC (0x0000) 的 DEST_addr 来在本地启用允许加入。  在 bdb_start_top_level_commissioning  (ZB_BDB_network_steering) 和 中的 ZB_BDBC_MIN_commissioning_time_S 期间、也会启用允许加入  \source\third_party\zigen\zbos_R23\include\zb_config_common.h 确定 180s 窗口。

    2. 应仅为通道 24 设置 0x01000000。  如果设置了所有通道、那么如果所有通道上的能量检测是等效的、则通道 11 将是默认通道。  确保在重新编程之前恢复出厂设置器件或擦除所有闪存、否则存储的 NV 信息将保留通道 11 设置。

    3.什么类型的设备是节点加入器,它使用的是什么 Zigbee 规范版本?  之所以发送离开、是因为节点加入不会启动 TCLK 更新过程。  “从 Zigbee R21 标准开始、每个加入的器件都必须在加入期间或加入后建立一个 TCLK。 Zigbee 3.0 和 SE 配置文件都是如此(虽然 SE 使用自己的基于证书的协议、但仍会建立相同的唯一 TCLK)。 TCLK 可用于保护器件和 TC 之间的任何 APS 流量。“

    此致、
    Ryan

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

    您好、Ryan
    1、我使用了 ZB_SET_NVRAM_ERASE_AT_START (ZB_TRUE);、然后设置通道。 但是、我仍然无法将信道设置为 24。

      zb_set_nvram_erase_at_start(ZB_TRUE);
      zb_set_network_coordinator_role(0x01000000);
      zb_set_bdb_primary_channel_set(0x01000000);
      zb_set_bdb_secondary_channel_set(0x01000000);


    2、抱歉、我不知道它使用的是哪个版本的 Zigbee。 但它是一个未处于睡眠模式的节点、是终端器件。 它是使用 CC2652 制造的节点器件、SDK 为 6.41.0.17。

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

    1.使用 v8.40 F3 SDK、我能够使用“ZB_SET_NETWORK_COMPADER_ROLE (0x01000000);“、协调器在通道 24 上启动、而不是在 SysConfig 中建立的默认 11。  不需要主/辅助通道集。  我使用 LP-EM-CC2340R5 而非 R53 进行了测试、但这应该没有什么区别。  尝试清理和重新构建代码、或评估默认的示例实现。

    2. F2 SDK v6.41 当然使用的是 Zigbee 3.0 R22、这是可以接受的。  您需要确认固件中的“requestNewTrustCenterLinkKey"设置“设置为 true。  F3 SDK v9.14 在 SysConfig 中有一个选项、可在 SysConfig 中将“Zigbee Pro 3.0 修订版“更改为“修订版 22“、我预计这不会产生影响、但您可以考虑在此 SDK 版本中评估协调器示例、以检查 CC2652 是否加入网络。  如果您认为监听器日志有助于提供任何清晰度、则可以提供该日志

    此致、
    Ryan

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

    您好、Ryan
    1、我发现我设置了 req_param->dest_addr = 0x0000;之后、确实可以将节点连接到网络。 但是、我注意到数据包捕获记录中没有“管理许可加入请求“数据包、但它确实使节点能够连接到网络。
    2、我发现、请求新的信任中心链路密钥确实使 2652 能够在不断开连接的情况下连接到网络。 这是非常有帮助的。 谢谢你。
    3、我使用 ZB_SET_NETWORK_COMPUTER_ROLE (mask);设置时、我发现它可以在初始化期间使用、但当我使用命令进行设置时、则无法设置它。 设置后、是否需要使用 ZB_SET_NVRAM_ERASE_AT_START (ZB_TRUE);来重新擦除信息?

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

    1.  将 zb_zdo_mgmt_permit_joining_req 与本地 dest_addr (0x0000) 一起使用将在本地启用许可加入、但不会通过网络广播“管理许可加入请求“。  使用 0xFFFC 的 dest_addr 时成立。    如果要执行这两项操作、可以使用 zb_zdo_mgmt_perime_joining_req 两次。
     初始化后不应使用 ZB_SET_NETWORK_COMPUTER_ROLE。  ZBOSS 启动后、在网络构建和转向期间选择的通道不应在 Zigbee 协调器上更改。  唯一建议的更改通道的方法是在启动 ZBOSS 之前重新启动器件并擦除 NV 存储器。

    此致、
    Ryan