工具/软件:
我正在开发支持在不同地区运行的无线电固件。 在本例中、一个区域需要14dBm (低功耗侧)、所有其他区域可以20dBm (高功率侧)运行。 我为天线开关处理程序使用了 LP-CC1311P3的默认实现、并确认在启动无线电时代码进入该模块。 我已经确认了硬件的 GPIO 映射(它们与 LP 不同。
/*
* ======== rfDriverCallbackAntennaSwitching ========
* Sets up the antenna switch according to the TX power table PA type.
*
* Truth table:
*
* Path DIO9 DIO10 <- See syscfg
* ========== ===== =====
* Off 0 0
* HIGH PA 1 0
* SUB1 GHZ 0 1
*/
void rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg)
{
if (events & RF_GlobalEventRadioSetup) {
/* Switch off all paths. */
GPIO_write(CONFIG_RF_HIGH_PA, 0);
GPIO_write(CONFIG_RF_SUB1GHZ, 0);
/* Decode the current PA configuration. */
RF_TxPowerTable_PAType paType = (RF_TxPowerTable_PAType)RF_getTxPower(client).paType;
if (paType == RF_TxPowerTable_HighPA) {
/*
* Mux GPIOs to RF Core signals:
* - High PA --> HIGH PA
* - LNA enable --> Sub-1 GHz
*/
GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO3);
GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO0);
} else {
/* RF Core active --> Sub-1 GHz */
GPIO_write(CONFIG_RF_SUB1GHZ, 1);
}
}
else if (events & RF_GlobalEventRadioPowerDown) {
/* Switch off all paths. */
GPIO_write(CONFIG_RF_HIGH_PA, 0);
GPIO_write(CONFIG_RF_SUB1GHZ, 0);
/* Reset the IO multiplexer to GPIO functionality */
GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
}
}
在运行时、我可以使用开发工具切换运行区域。 这样我就可以验证各个区域的输出功率级别。 在这样做的时候,我提出了一些意见:
1 -首先使用低功耗侧时、它输出约10dBm 而不是14dBm (该区域位于868 MHz 频带)、因此看起来过低。
2 -如果使用高功率侧、然后我们返回低功率、低功率输出非常低(约-20dBm)。 我进行了检查、我认为这是因为、当从高电平切换到低电平时、天线开关回调绝不会将 GPIO 返回到 GPIO 模式(将 GPIO 从高功率选择保留在 RFC 模式中)。 我在 paType 更改时添加了代码来执行此操作、然后看到的功率约为8dBm、而不是10dBm ...因此不知道为什么功率低于我们在低功耗模式下启动时的功率。
3 -使用高功率侧时、它始终输出预期的全功率>= 18.5dBm。 我们只使用了20dBm 设置和高功率 PA。 我们有一个区域在868 MHz 处使用高功率 PA、使用时也会输出全功率。
4 -更改该区域的电源时、不会 在回调中执行 RF_GlobalEventRadioPowerDown 路径、因此我们绝不会将 PA 控制引脚切换回 GPIO 模式。
什么是我的缺失? 是否有方法可以在不断电的情况下从高功率 PA 切换到低功率路径? 是否有一些先决条件、例如在我们需要时重新安装射频内核? 是否有理由使低功耗路径远低于预期?