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:终端器件通告、RSSI 捕捉

Guru**** 2519040 points
Other Parts Discussed in Thread: CC2530, Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/988944/cc2538-end-device-announce-rssi-capture

器件型号:CC2538
Thread 中讨论的其他器件:CC2530Z-STACK

您好!

我阅读此主题:

CC2530:用于 RSSI 位置的 ZigBee 广播消息(AF_SKIP_ENCOLOADED)

e2e.ti.com/.../cc2530-zigbee-broadcast-msg-for-rssi-location-af_skip_routing

我理解问题。 终端设备始终通过其父设备进行路由、因此广播实际上是中继广播。 但是、有人提到了 ZDP_DeviceAnnce。 实际上、这是可行的、我使用1台协调器和2台路由器进行了测试、最终设备宣布两台路由器都收到了终端设备。 所以我的问题是,你如何提取这个公告的 LQI 和 RSSI? zdoIncoming 消息的结构似乎没有这些结构,但 afIncomingMSGPacket_t 是否有?   我正在使用 ZStack 3.0.2和 GenericApp 进行测试。 在这种情况下,堆栈是否捕获这些值? 如果是,如何提取它们?

typedef 结构

 OSAL_EVENT_HDR_t HDR;
 zAddrType_t     srcAddr;
 uint8           wasBroadcast;
 cid_t           clusterID;
 uint8           SecurityUse;
 uint8           Transseq;
 uint8           asdualen;
 uint16          macDestAddr;
 uint8           *ASDU;
 uint16          macSrcAddr;
} zdoIncomingMsg_t;



typedef 结构

 OSAL_EVENT_HDR_t HDR;    // OSAL 消息标头*/
 uint16 groupId;          //如果未设置消息的组 ID -0
 uint16 clusterid;        //消息的群集 ID */
 afAddrType_t srcAddr;    /*源地址、如果端点为 STUBAPS_Inter_PAN_EP、
                              这是一条 InterPAN 消息*/
 uint16 macDestAddr;      /* MAC 报头目标短地址*
 uint8端点;          /*目的端点*/
 uint8 wasBroadcast;      //如果网络目标是广播地址,则为 true */
 uint8 LinkQuality;       //接收到的数据帧的链路质量*/
 uint8相关性;       //接收到的数据帧的原始相关性值*/
 INT8 RSSI;              /*以 dBm 为单位的接收射频功率*/
 uint8 SecurityUse;/*       已弃用*/
 uint32时间戳;        /*从 MAC 接收时间戳*/
 uint8 nwkSeqNum;         /*网络报头帧序列号*/
 afMSGCommandFormat_t cmd;//应用程序数据*/
 uint16 macSrcAddr;       // MAC 头源短地址*/
 uint8半径;
}处理 MSGPCack_t;

此致、
Ian

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

    尊敬的 Ian:

    Zigbee 器件对象(ZDO)层与 Z-Stack 中的应用框架(AF)层分开、不报告 RSSI。  如果您想记录/监控 RSSI 值、可以广播 AF_DataRequest 消息。  我在  前一个 E2E 主题中提供了 ZDP_DeviceAnnce 作为广播消息示例、但不打算将其用于 RSSI 测量。

    此致、
    Ryan

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

    Ryan、

    非常感谢您的回复。

    我的理解是、在使用广播时报告的 RSSI 是、它仅通过其父级报告 RSSI。  换句话说,如果你有 ZC -> ZR1 - ZR2 - ZR3,并且 ZED 是 ZR3的子级,那么 ZED 广播实际上将从 ZED 广播到 ZR3 (该链路具有 RSSI)。  但是,广播将被中继 ZR3-ZR2 (具有该链路的 RSSI)。 我不感兴趣、如果 RSSI Zed-ZR3、Zed-ZR2、Zed-ZR1在无线电范围内、我对它们感兴趣。

    CC2530:用于 RSSI 位置的 ZigBee 广播消息(AF_SKIP_ENCOLOADED)

    阅读另一篇文章后、DarkSide 似乎表示在来自 ZR3的 AF_DataRequest 中、每台路由器中报告的 RSSI 实际上是 Zed-ZR3、Zed-ZR2、Zed-ZR1 (如果它们在无线电范围内)

    根据 RSSI 增加无线电范围

    https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/zigbee-thread-forum/341305/increase-the-radio-range-according-to-rssi

    这里似乎有相互矛盾的信息。 您能否澄清一下、它的工作方式是什么?

    此致、

    Ian

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

    报告的 RSSI 用于单跳、因为它是数据包的接收射频功率。  如果 ZR2/ZR1 直接从 ZED 接收广播消息、则报告的 RSSI 将用于 ZED、但如果从 ZR3父级重新广播、则它将是路由器之间的 RSSI 值。  问题是、来自 ZED 直接或 ZR3跃点的 ZR2/ZR1将只处理一次 AF 数据请求数据包、您将不确定首先接收到哪一个数据包。  因此,您必须尝试将单播与 AF_SKIP_routing 一起使用,并查看 ZR2/ZR1路由器是否可以直接接收来自 ZED 的消息。  我没有亲自尝试过、请告诉我 此配置的结果。

    此致、
    Ryan

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

    Ryan、

    我使用演示套件测试了此配置。 我可以确认 AF_DataRequest 广播仅由父路由器接收、而不是由处于无线电范围内的其他路由器接收。 当我测试堆栈的较低级别时、其他路由器实际上会接收到堆栈、但如果不是父级、则会将其丢弃、因此如果您深入探究堆栈、您可以在真正需要的情况下找到它。

    此致、

    Ian

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

    ZR 可以从其它 ZR 中继广播消息接收。  有可能从邻居表中获得 Zed-ZR3、Zed-ZR2、Zed_ZR1的 RSSI。

    此致、

    David