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:如何在不打开 Zigbee 电源的情况下启动其?

Guru**** 2756835 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1611260/cc2340r5-how-to-start-zigbee-without-powering-it-on

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

作为终端设备、我希望设备的 Zigbee 功能不能启动网络设置、并在加电后加入网络。 相反、当需要加入网络时、它应通过 GPIO 中断启用网络设置。 我应该如何继续? 我相信它是“bdb_start_top_level_commissioning (ZB_BDB_network_steering);“该操作用于加入网络。 但是、当设备最初上电时、如果 (ZB_GET_APP_SIGNAL_STATUS (param)!= 0)、并且信号为 ZB_BDB_SIGNAL_DEVICE_FIRST_START、则执行 bdb_start_top_level_commissioning (ZB_BDB_NETWORK_STOINGING);该操作无法成功加入网络。 这是我的意见。 我想知道还有其他方法可以做到吗?

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

    我遇到终端设备不断发送 ZB_BDB_Signal_TC_rejoin_done 信号的情况、并且还打印了 Log_printf((Log_printf Module_Zigbee_App、Log_warning、“ZDO_rejoin<xmt-block1> TC</xmt-block> failed,所以用时间间隔重试); TC;该信息表明通过执行操作“ZB_SCHEDULE_APP_ALARM (ZB_bdb_warning、“ZDO_REjoin"</s>“ 为什么终端一直生成“ TC 重新加入失败“?

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

    在这种情况下、在重新连接情况下、终端和协调器之间似乎存在一些 NV 数据通信错误、因此终端不断尝试重新加入之前的、甚至可能被协调器父级识别、但未能完成该过程。  监听器日志 有助于确定更多信息、但如果检测到这种情况发生、您也可以考虑在终端上强制恢复出厂设置和新的加入、或者让协调器尝试强制离开命令。

    此致、
    Ryan

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

    您好、我尝试使用您提供的程序、但发现即使协调器启用了网络、终端设备仍会在开机时连接到协调器。 我已经注释掉了程序中的一些部分、例如“bdb_start_top_level_commissioning"和“和“zb_zdo_mgmt_permit_joining_req"。“。 除此之外、我注意到该器件在首次上电时会产生 6mA 传输功率。 由于需要低功耗、应如何控制这种传输功率?

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

    ZBOSS 可能会在 zboss_start_continue 时自动发送信标请求。  您甚至可以考虑 从 ti_f3_main.c 中延迟 ZB_ti_f3_main 执行、直到 GPIO 事件发生。  TX 功率通过 SET_TX_POWER API 控制、 DEFAULT_TX_PWR 参数由 SysConfig Zigbee 模块确定。

    此致、
    Ryan

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

    使用新版本的 SDK 时、发现协调器具有以下情况:case ZB_ZDO_SIGNAL_DEVICE_ANNCE:{
    ZB_zdo_signal_device_evice_annce_params_t *dev_annce_params = ZB_ZDO_SIGNAL_GET_PARAMS (SG_p、ZB_zdo_signal_device_device_annce_params_t);
    short_addr = dev_annce_params->device_short_addr;
    zB_ret_t ret = zB_address_IEEE-by_short (short_addr、IEEE-addr);
    printf(“新设备已调试或重新连接短:0x%04hx、ret =%d\r\n“、short_addr、ret);
    // ZB_schedule_app_alarm (schedule_send_active_ep_req、0、1 * ZB_TIME_ONE_second);
    休息;
    }使用此函数的当前状态 (short_addr、IEEE-addr) 执行 ZB_ADDRESS_IEEE-by_short 的操作;执行此操作时、返回值为 RET_Not_found。 为什么会这样? 在以前的版本中、可以获得该值。 但在当前版本中、进入此状态时未获得。

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

    可以使用 E2E 界面中的“插入->代码“工具来设置您尝试共享的代码的格式、但它直接来自 Zigbee 基础 SLA。

    case ZB_ZDO_SIGNAL_DEVICE_ANNCE: 
    {
        zb_zdo_signal_device_annce_params_t *dev_annce_params = ZB_ZDO_SIGNAL_GET_PARAMS(sg_p, zb_zdo_signal_device_annce_params_t);
        short_addr = dev_annce_params->device_short_addr;
        zb_ret_t ret = zb_address_ieee_by_short(short_addr, ieee_addr);
        printf("New device commissioned or rejoined short :0x%04hx, ret = %d\r\n",short_addr,ret);
        // ZB_SCHEDULE_APP_ALARM(schedule_send_active_ep_req, 0, 1 * ZB_TIME_ONE_SECOND);
        break;
    }

    确保您有一个中断到之前的堆栈情况(例如“Break;“、就在“case ZB_ZDO_SIGNAL_DEVICE_ANNCE“之前)、以确保 此时只处理 ZB_ZDO_SIGNAL_DEVICE_ANNCE。  与旧版和最新 SDK 应用文件的比较可能有助于辨别任何变化。  接下来最好确认 ZB_zdo_signal_device_annce_params_t 接收到的 short_addr 与 ZC 发送的无线短地址分配相匹配。  返回 RET_NOT_FOUND 是因为 ZB_ADDRESS_IEEE-BY_SHORT 无法将短地址与存储在其内部邻居/关联表中的任何值匹配。

    此致、
    Ryan