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.

[参考译文] CC1352P:有关射频天线开关 IO 的问题。

Guru**** 2609895 points
Other Parts Discussed in Thread: CC1352P

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1124034/cc1352p-questions-about-rf-antenna-switch-io

器件型号:CC1352P

您好 TI。

我的目标基于 SimpleLink SDK v5.20传感器示例。 有3个射频控制 IO 可切换天线、如下所示:

我使用示波器测试2.4G Rx 和 SubG Rx 中的射频 IO 电平、IO 电平波形如下:

第一个波形是目标接收2.4G 数据包、另一个目标发送2.4G 数据包。

第二个波形是目标正在接收 SubG 数据包、另一个目标正在发送 SubG 数据包。

我们可以看到、两个波形之间略有不同。

在2.4G Rx 中、HIGH_PA IO (DIO29) 在 接收2.4G 数据包时保持低电平、2.4G IO (DIO28)保持高电平、这种现象是合理的。

在 SubG Rx 中、HIGH_PA IO (DIO29)也保持低电平、这是合理的。 但是、SubG IO (DIO30)不会保持高电平、而是在收到每个 SubG 数据包后 DIO30会下降(这将关闭射频路径)、然后上升。

然后、我们使用 CC1352P1 LaunchPad 和 Smart RF Studioo 进行相同的测试并得到相同的现象。

我的问题是  

1、SubG IO (DIO30)波形是否合理? 是否与 TI 的费用相同?

2、根据问题1、如果是、为什么 Subg IO (DIO30)与2.4G Rx 不同(DIO28始终保持高电平)、以及为什么 SubG IO (DIO30)在接收到每个数据包后下降、从而关闭射频路径?

3、根据问题1、如果不是、问题在哪里、如何解决问题以使子 G IO (DIO30)在接收数据包时保持高电平?

非常感谢。

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

    您好!

    您的示波器图应显示全部三个控制信号、而不是仅显示三个控制信号中的两个。

    基于 CC1352P1 LaunchPad、真值表正确。

    数据包完成后、无需(通过控制线)为开关供电、因为这将消耗电流。  

    对于低于1 Tx 14 dBm 和低于1  Rx、DIO30均为高电平。

    理想情况下、DIO28应在2.4GHz Tx/Rx 数据包完成后变为低电平以节省电流、但这可能是代码中不使用时开关的默认设置。  

    此致、Richard

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

    您好!

    通过单步执行 SW 中的代码可以看到完整的开关算法、并可在 ti_drivers_config.c 中找到

    此致、Richard

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

    谢谢。 这是我的开关配置代码、它与收集器示例的原始代码相同。

    首先、我在高功率放大器模式(20dBm TX 配置)下测试2.4G Rx 和 SubG Rx、因此开关配置应位于红色框中。

    当我测试2.4G Rx 时、RF_24G (DIO28)和 RF_HIGH_PA (DIO29)应连接到 RFC_GPO0和 RFC_GPO3、RF_SUBG (DIO30)应是 GPIO 并保持低电平。 在第一个波形中、RF_SUBG (DIO30)始终为低电平、并且我已经对此进行了测试、因此我没有显示 RF_SUBG (DIO30)来简化波形。

    当我测试 SubG Rx 时、RF_SUBG (DIO30)和  RF_HIGH_PA (DIO29)应连接到 RFC_GPO0和 RFC_GPO3、RF_24G (DIO28)应是 GPIO 并保持低电平。 在第二个波形中、RF_24G (DIO28)始终为低电平、并且我已经对此进行了测试、因此我没有显示 RF_24G (DIO28)来简化波形。

    因此、当目标接收数据包时、RF_24G (DIO28)或 RF_SUBG (DIO30) 连接到 RFC_GPO0、但是在 RF_24G (DIO28) 和 RF_SUBG (DIO30)这两个波形  中、一个波形始终保持高电平、另一个波形不始终保持高电平。

    开关 IO 配置如下所示、它们在不使用时的配置是相同的:

    因此、仍然对 连接到同一 IO 的 RF_24G (DIO28)和 RF_SUBG (DIO30)之间的差异感到困惑—RFC_GPO0。

    谢谢。

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

    我不确定我是否确切了解您所询问的内容以及您在哪里看到了问题。

    下面、我尝试更好地解释了开关算法。

    请非常具体地说明您在何处看到与预期不同的行为。

    /*
     * ======== Antenna switching ========
     */
    /*
     * ======== rfDriverCallbackAntennaSwitching ========
     * Sets up the antenna switch depending on the current PHY configuration.
     *
     * Truth table:
     *
     * Path       DIO28 DIO29 DIO30
     * ========== ===== ===== ===== 
     * Off        0     0     0
     * 2.4 GHZ    1     0     0
     * HIGH PA    0     1     0
     * SUB1 GHZ   0     0     1
     */
    void __attribute__((weak)) rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg)
    {
    
        if (events & RF_GlobalEventRadioSetup) {
            bool    sub1GHz   = false;
            uint8_t loDivider = 0;
    
            GPIO_write(CONFIG_RF_24GHZ, 0);								// CONFIG_RF_24GHZ   = 0			TX: 0, RX: 0
            GPIO_write(CONFIG_RF_HIGH_PA, 0);							// CONFIG_RF_HIGH_PA = 0			TX: 0, RX: 0
            GPIO_write(CONFIG_RF_SUB1GHZ, 0);							// CONFIG_RF_SUB1GHZ = 0			TX: 0, RX: 0
    
    		// Sub-1 GHz
            if (sub1GHz)
    		{
                // High PA
    			if (paType == RF_TxPowerTable_HighPA)
    			{
                    GPIO_setMux(CONFIG_RF_24GHZ,   IOC_PORT_GPIO);		// CONFIG_RF_24GHZ		= GPIO: 	TX: 0, RX: 0 (Set to 0 initially)
                    GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_RFC_GPO3);  // CONFIG_RF_HIGH_PA  	= "PA": 	TX: 1, RX: 0
                    GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_RFC_GPO0);  // CONFIG_RF_SUB1GHZ  	= LNA:  	TX: 0, RX: 1
                }
    			// Normal PA
    			else
    			{
                    GPIO_setMux(CONFIG_RF_24GHZ,   IOC_PORT_GPIO);		// CONFIG_RF_24GHZ    	= GPIO: 	TX: 0, RX: 0 (Set to 0 initially)
                    GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_GPIO);		// CONFIG_RF_HIGH_PA  	= GPIO: 	TX: 0, RX: 0 (Set to 0 initially)
                    GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_GPIO);		// CONFIG_RF_SUB1GHZ  	= GPIO: 	TX: 1, RX: 1 (Set to 1 below)
                    GPIO_write(CONFIG_RF_SUB1GHZ, 1);					// CONFIG_RF_SUB1GHZ  	= 1
                }
            } 
    		// 2.4 GHz
    		else 
    		{
                // High PA
    			if (paType == RF_TxPowerTable_HighPA)
                {
                    GPIO_setMux(CONFIG_RF_24GHZ,   IOC_PORT_RFC_GPO0);	// CONFIG_RF_24GHZ		= LNA:  	TX: 0, RX: 1
                    GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_RFC_GPO3);  // CONFIG_RF_HIGH_PA    = "PA": 	TX: 1, RX: 0
                    GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_GPIO);      // CONFIG_RF_SUB1GHZ	= GPIO: 	TX: 0, RX: 0 (Set to 0 initially)
                } 
    			// Normal PA
    			else
    			{
                    GPIO_setMux(CONFIG_RF_24GHZ,   IOC_PORT_GPIO);		// CONFIG_RF_24GHZ		= GPIO:		TX: 1, RX: 1 (Set to 1 below)
                    GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_GPIO);		// CONFIG_RF_HIGH_PA	= GPIO:		TX: 0, RX: 0 (Set to 0 initially)
                    GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_GPIO);		// CONFIG_RF_SUB1GHZ	= GPIO:		TX: 0, RX: 0 (Set to 0 initially)
                    GPIO_write(CONFIG_RF_24GHZ, 1);						// CONFIG_RF_24GHZ		= 1
                }
            }
        }
        else if (events & RF_GlobalEventRadioPowerDown) {
    
            GPIO_write(CONFIG_RF_24GHZ, 0);								// CONFIG_RF_24GHZ   = 0			TX: 0, RX: 0
            GPIO_write(CONFIG_RF_HIGH_PA, 0);							// CONFIG_RF_HIGH_PA = 0			TX: 0, RX: 0
            GPIO_write(CONFIG_RF_SUB1GHZ, 0);							// CONFIG_RF_SUB1GHZ = 0			TX: 0, RX: 0
    
            /* Reset the IO multiplexer to GPIO functionality */
            GPIO_setMux(CONFIG_RF_24GHZ, IOC_PORT_GPIO);				// CONFIG_RF_24GHZ   = GPIO
            GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_GPIO);				// CONFIG_RF_HIGH_PA = GPIO
            GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_GPIO);				// CONFIG_RF_SUB1GHZ = GPIO
        }
    }
     /*
     * Freq.		PA Type		Active Mode	DIO28	DIO29	DIO30
     *										24GHZ	HIGH_PA	SUB1GHZ
     * -------------------------------------------------------------
     * Sub-1 GHz	High PA		RX			0		0		1
     * Sub-1 GHz	High PA		TX			0		1		0
     * Sub-1 GHz	Normal PA	RX			0		0		1
     * Sub-1 GHz	Normal PA	TX			0		0		1
     * 2.4 GHz		High PA		RX			1		0		0
     * 2.4 GHz		High PA		TX			0		1		0
     * 2.4 GHz		Normal PA	RX			1		0		0
     * 2.4 GHz		Normal PA	TX			1		0		0

    Siri

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

    感谢您的耐心等待。

    让我们仅关注代码的两行—第36行和第53行。

    第36行: GPIO_setMux (CONFIG_RF_SUB1GHZ、IOC_PORT_RFC_GPO0);

    第53行: GPIO_setMux (CONFIG_RF_24GHz、  IOC_PORT_RFC_GPO0);

    根据这两行代码、CONFIG_RF_SUB1GHZ (DIO30)和 CONFIG_RF_24GHz (DIO28)由同一引脚控制—RFC_GPO0。

    因此、在高功率放大器模式下、无论是 SubG 接收还是2.4G 接收、相应的开关 IO (DIO30或 DIO28)都由 RFC_GPO0控制。

    因此、可以合理地期望 DIO30在 SubG 接收中的行为与 DIO28在2.4G 接收中的行为相同。 因为它们(DIO30和 DIO28)都由同一个引脚控制—RFC_GPO0。

    但是、在我的两个波形中、DIO28和 DIO30的行为显然不同—在2.4G Rx 波形中、DIO28保持高电平、在 SubG Rx 波形中、DIO30下降并上升。

    所以、这就是我的波形中的问题、DIO30和 DIO28的行为不同、但它们的行为应该相同。

    谢谢你。

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

    正确的做法是、低于1GHz 的 DIO30的行为应与2.4GHz 的 DIO28相同

    这显示在我在上一篇文章中发布的表格中。

    但是、在 P1 Launchpad 上、高 PA 用于低于1GHz、而5dBm PA (正常 PA)用于2.4GHz。

    这意味着当您在2.4GHz 下运行时、3个控制信号的设置由代码中的第60-63行确定、而 DIO28将同时为 RX 和 TX 提供1。

    在两个频带上不可能有20dBm 的输出。 如果您需要2.4GHz 高功率放大器、则需要使用 P2 LP。

    Siri

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

    谢谢你。  

    [~引脚 userid="2957" URL"/support/wireless-connectivity/sub-1GHz-group/sub-1GHz/f/sub-1-GHz-forum/1124034/cc1352p-questions-about -rf-天线- switch-io/4171956#4171956"]两个频段上都不可能具有20dBm[引用]。

    我在 TI 的相关文档中看到过这一限制。 我想问的是、这种限制是由不同演示板的硬件限制还是软件限制引起的?

    如果在我自己的 CC1352P 目标上、是否可以在两个频带上具有20dBm 的输出功率? 例如、20dBm 2.4G BLE 和20dBm SubG 15.4。

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

    您好!

    20dBm 的无源滤波器设计可同时限制低于 G 和2.4GHz 的运行。 LaunchXL-CC1352P1 - 20dBm 滤波器已针对915MHz 频率下的运行进行了优化、LaunchXL-CC1352P-2针对2.4GHz 进行了优化。

    可以使用宽带不平衡变压器进行双频带设计、该设计可以覆盖 915MHz 和2.4GHz、但这需要一个不同的原理图 、其中包含 宽带不平衡变压器、连接到915MHz LPF 的开关以及2.4GHz LPF 的开关。 该解决方案将会影响两个频段的性能。