器件型号: CC1311P3
我们正在实施 运行时频率切换 在专有模式RF_cmdFs下对两者使用 TX 和 RX 。
应用会动态切换频率 430MHz 边界进行测量 、对频率使用不同的射频设置配置 高于和低于 430MHz 。
我们观察到在运行时切换期间的情况 在低于–430MHz(窄带)范围内运行时出现间歇性故障 、而所有频率都使用相同的切换机制。
我们使用动态更新 RF setup 命令RF_CTRL_UPDATE_SETUP_CMD。
TX 运行时频率切换序列
RF_cmdFs_cst.frequency = ctrl_cmd->cmd_data.set_freq_cmd.intg_freq;
RF_cmdFs_cst.fractFreq = ctrl_cmd->cmd_data.set_freq_cmd.frac_freq;
RF_cancelCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, 1);
/* Check frequency range */
if (TRUE == rf_ctrl_check_freq_range_abv_430(RF_cmdFs_cst.frequency))
{
RF_cmdPropRadioDivSetup_cst_above_430.centerFreq =
RF_cmdFs_cst.frequency;
RF_control(rfHandle, RF_CTRL_UPDATE_SETUP_CMD,
(void*)&RF_cmdPropRadioDivSetup_cst_above_430);
}
else
{
RF_cmdPropRadioDivSetup_cst_below_430.centerFreq =
RF_cmdFs_cst.frequency;
RF_control(rfHandle, RF_CTRL_UPDATE_SETUP_CMD,
(void*)&RF_cmdPropRadioDivSetup_cst_below_430);
}
/* GPIO config */
HWREG(RFC_DBELL_BASE + RFC_DBELL_O_SYSGPOCTL) =
RFC_DBELL_SYSGPOCTL_GPOCTL1_CPEGPO1;
GPIO_setConfigAndMux(CONFIG_GPIO_GATE_PULSE,
GPIO_CFG_OUTPUT,
IOC_PORT_RFC_GPO1);
RF_yield(rfHandle);
/* Set the frequency */
RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs_cst,
RF_PriorityNormal, NULL, 0);
RX 运行时频率切换序列
RF_cancelCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, 1);
RF_cmdFs_cst.frequency = ctrl_cmd->cmd_data.set_freq_cmd.intg_freq;
RF_cmdFs_cst.fractFreq = ctrl_cmd->cmd_data.set_freq_cmd.frac_freq;
/* Check frequency range */
if (TRUE == rf_ctrl_check_freq_range_abv_430(RF_cmdFs_cst.frequency))
{
RF_cmdPropRadioDivSetup_cst_above_430.centerFreq =
RF_cmdFs_cst.frequency;
RF_control(rfHandle, RF_CTRL_UPDATE_SETUP_CMD,
(void*)&RF_cmdPropRadioDivSetup_cst_above_430);
}
else
{
RF_cmdPropRadioDivSetup_cst_below_430.centerFreq =
RF_cmdFs_cst.frequency;
RF_control(rfHandle, RF_CTRL_UPDATE_SETUP_CMD,
(void*)&RF_cmdPropRadioDivSetup_cst_below_430);
}
RF_yield(rfHandle);
/* Set frequency */
RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs_cst,
RF_PriorityNormal, NULL, 0);
/* Resume RX */
rfPostHandle = RF_postCmd(rfHandle,
(RF_Op*)&RF_cmdPropRxAdv_cst,
RF_PriorityNormal,
&ReceivedOnRFcallback,
RF_EventRxEntryDone);
观察结果
-
执行运行时频率切换 以动态方式跨越 430MHz 边界
-
在低于 430MHz 的情况下运行时、会观察到间歇性故障
-
TX 和 RX 使用相同的开关逻辑
-
未返回射频驱动程序错误
RF_postCmd() -
RF_cmdPropRadioDivSetup使用 SmartRF Studio 生成两个不同的命令并在运行时更新
问题
-
是这样 支持在运行时在 430MHz 以上和以下切换频率
RF_cmdFs与一起使用RF_CTRL_UPDATE_SETUP_CMD? -
是否有 所需的序列或延迟 介于:
-
RF_cancelCmd() -
RF_CTRL_UPDATE_SETUP_CMD -
发帖
RF_cmdFs
-
-
打开和关闭 Sub –430MHz(窄带) 都有 其他射频参数 (例如覆盖,同步配置,PA 设置)必须重新加载吗?
-
设计方法 重新发布完整的射频设置命令 而不是仅
RF_CTRL_UPDATE_SETUP_CMD在运行时切换期间进行更新? -
RF_yield()作为运行时频率切换序列的一部分、是否需要或建议调用?
有关的任何指导 跨 430MHz 边界的建议运行时频率开关序列 会很有帮助。
谢谢、
专题 B