主题中讨论的其他器件:SysConfig
工具与软件:

void zb_get_tx_power_async (zb_bufid_t param);
void zb_set_tx_power_async (zb_bufid_t param);
我认为上述的 API 接口可以设定 ZigBee 的传输功率、但我不知道如何使用。
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.
您好!
下面是一个入门示例。
在 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
尊敬的 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