工具/软件:
我正在开发支持在不同地区运行的无线电固件。 在本例中、一个区域需要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 切换到低功率路径? 是否有一些先决条件、例如在我们需要时重新安装射频内核? 是否有理由使低功耗路径远低于预期?