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:根据 ZBOSS 协议栈更改射频传输功率

Guru**** 2455560 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1465232/cc2340r5-change-the-rf-transmit-power-based-on-the-zboss-protocol-stack

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

工具与软件:

void zb_get_tx_power_async (zb_bufid_t param);

void zb_set_tx_power_async (zb_bufid_t param);

我认为上述的 API 接口可以设定 ZigBee 的传输功率、但我不知道如何使用。

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

    您好!

    下面是一个入门示例。

    在 zb_set_nvma_erase_at_start()之前的 main()中:

    zb_buf_get_out_delayed(set_tx_power);

    在 main()之上:

    #define ZB_CHANNEL 17
    #define TX_POWER   0
    
    void tx_power_cb(zb_bufid_t param)
    {
      zb_tx_power_params_t *power_params = zb_buf_begin(param);
    
      Log_printf(LogModule_Zigbee_App, Log_INFO, ">> tx_power_cb status %hd", power_params->status);
    
      switch (power_params->status)
      {
        case RET_OK:
          Log_printf(LogModule_Zigbee_App, Log_INFO,
                    "tx_power op successful, channel %hd page %hd power %hd",
                    power_params->channel, power_params->page, power_params->tx_power);
          break;
    
        case RET_INVALID_PARAMETER_3:
          Log_printf(LogModule_Zigbee_App, Log_INFO,
                    "tx_power op invalid tx power, current value for channel %hd page %hd - %hd",
                    power_params->channel, power_params->page, power_params->tx_power);
          break;
    
        case RET_INVALID_PARAMETER_1:
        case RET_INVALID_PARAMETER_2:
          Log_printf(LogModule_Zigbee_App, Log_ERROR, "tx_power op invalid channel or page");
          break;
    
        default:
          Log_printf(LogModule_Zigbee_App, Log_ERROR, "tx_power op unknown status");
          break;
      }
    
      zb_buf_free(param);
    }
    
    void get_tx_power(zb_bufid_t param)
    {
      zb_tx_power_params_t *power_params;
    
      power_params = zb_buf_initial_alloc(param, sizeof(zb_tx_power_params_t));
    
      power_params->page = ZB_CHANNEL_PAGE0_2_4_GHZ;
      power_params->channel = ZB_CHANNEL;
      power_params->cb = tx_power_cb;
    
      ZB_SCHEDULE_APP_CALLBACK(zb_get_tx_power_async, param);
    }
    
    void set_tx_power(zb_bufid_t param)
    {
      zb_tx_power_params_t *power_params;
    
      Log_printf(LogModule_Zigbee_App, Log_INFO, "param %hd", param);
    
      power_params = zb_buf_initial_alloc(param, sizeof(zb_tx_power_params_t));
    
      power_params->page = ZB_CHANNEL_PAGE0_2_4_GHZ;
      power_params->channel = ZB_CHANNEL;
      power_params->tx_power = TX_POWER;
      power_params->cb = tx_power_cb;
    
      ZB_SCHEDULE_APP_CALLBACK(zb_set_tx_power_async, param);
    }

    并在您的应用中根据需要:

    zb_buf_get_out_delayed(get_tx_power);

    希望这对您有所帮助、
    Ryan

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

    我根据上述方法修改了射频传输功率、但使用频谱分析仪测试射频传输功率仍为0dBm。

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

    在尝试调用 SET_TX_POWER 之前、您是否已加入了器件、是否相应地修改了 TX_POWER?  其他选项包括使用 ZB_MAC_SET_TX_POWER (确保包含 mac_internal.h 文件)或重新定义 ZB_TRANSFER_SET_TX_POWER。

    此致、
    Ryan

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

    如上图所示、请在网络初始化之前设置发射功率。

    我打印了日志后发现发射功率已成功设置、 ZB_TRANSFER_GET_TX_POWER (&txpower)读取的发射功率为8dbm。

    但频谱分析仪测试的实际值始终为0dBm

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

    您能否确认您已在网络调试之前和之后尝试了所有三种方法?

    • ZB_SET_TX_POWER_异 步
    • ZB_MAX_SET_TX_POWER
    • ZB_TRANSFER_SET_TX_POWER

    我可以根据 RSSI 读数在结束时确认类似情况、并要求 Zigbee 研发团队进行验证

    此致、
    Ryan

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

    我试过了 zb_max_set_tx_power()、但在网络调试后也没有工作。  我也需要这样的 API、期待 ZigBee 研发团队的回复。此外、参数 power 的范围是多少、-20 ~ 8?

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

    尊敬的 Senjin:

    TI 了解该问题、目前正在进行调查。  正常工作时、可以在 SysConfig 生成的 ti_radio_config.c 文件中提供的 LRF_txPowerTable 值之一之间选择 TX 功率。

    // LRF_TxPowerTable data structure
    const LRF_TxPowerTable LRF_txPowerTable = {
        .numEntries = 0x0000000E,
        .powerTable = {
            { .power = { .fraction = 0, .dBm = -20 }, .tempCoeff = 0, .value = { .reserved = 0, .ib = 18, .gain = 0, .mode = 0, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = -16 }, .tempCoeff = 0, .value = { .reserved = 0, .ib = 25, .gain = 0, .mode = 0, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = -12 }, .tempCoeff = 5, .value = { .reserved = 0, .ib = 29, .gain = 1, .mode = 0, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = -8 }, .tempCoeff = 18, .value = { .reserved = 0, .ib = 44, .gain = 1, .mode = 0, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = -4 }, .tempCoeff = 28, .value = { .reserved = 0, .ib = 40, .gain = 3, .mode = 0, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 0 }, .tempCoeff = 40, .value = { .reserved = 0, .ib = 21, .gain = 6, .mode = 0, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 1 }, .tempCoeff = 65, .value = { .reserved = 0, .ib = 30, .gain = 6, .mode = 0, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 2 }, .tempCoeff = 41, .value = { .reserved = 0, .ib = 39, .gain = 4, .mode = 1, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 3 }, .tempCoeff = 43, .value = { .reserved = 0, .ib = 31, .gain = 5, .mode = 1, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 4 }, .tempCoeff = 50, .value = { .reserved = 0, .ib = 37, .gain = 5, .mode = 1, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 5 }, .tempCoeff = 55, .value = { .reserved = 0, .ib = 27, .gain = 6, .mode = 1, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 6 }, .tempCoeff = 75, .value = { .reserved = 0, .ib = 38, .gain = 6, .mode = 1, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 7 }, .tempCoeff = 80, .value = { .reserved = 0, .ib = 25, .gain = 7, .mode = 1, .noIfampRfLdoBypass = 0 } },
            { .power = { .fraction = 0, .dBm = 8 }, .tempCoeff = 180, .value = { .reserved = 0, .ib = 63, .gain = 7, .mode = 1, .noIfampRfLdoBypass = 0 } }
        }
    };

    此致、
    Ryan

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

    大家好!

    已在 SIMPLELINK-LOWPOWER-F3-SDK v8.40.02.01中修复了 Tx 电源问题、 请下载  ZB_MAC_SET_TX_POWER 并重新评估该问题。

    此致、
    Ryan

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

    您好、Ryan、

    我已验证 V8.40.02.01固件、错误已修复。  非常感谢