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.

[参考译文] CC2652P:15.4 stack PA 模式无法切换

Guru**** 2539500 points
Other Parts Discussed in Thread: CC2652P, LAUNCHXL-CC1352P, SYSCONFIG, CC1352P, SIMPLELINK-CC13X2-26X2-SDK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/950751/cc2652p-15-4-stack-pa-mode-can-not-switch

器件型号:CC2652P
主题中讨论的其他器件: LAUNCHXL-CC1352PSysConfigCC1352PSIMPLELINK-CC13X2-26X2-SDK

大家好、我在我的目标 SimpleLink SDKv4.20上使用 CC2652P。 我的应用基于 TI154stack sensor_2_4g。

我在测试15.4发射功率时发现一个奇怪的现象。

我使用我的目标来发送数据、并使用 LaunchPad 进行接收。

如果我使用 SmartRF Studio 在-20dBm 至20dBm 的不同 TX 功率下控制我的目标到 Tx 数据、那么我可以在 LaunchPad 上观察相应的 RSSI。

但是、如果我使用我自己的应用以-20dBm 至20dBm 的不同 TX 功率控制我的目标到 Tx 数据、那么 LaunchPad 上的 RSSI 似乎是异常的。

更改为特定,

如果 syscfg 中的 TX 功率设置为14dBm 至20dBm (高 PA 模式)、则根据 LaunchPad 上的 RSSI、无论我使用将 TX 功率设置为-20dBm、目标始终为高 PA 模式  

ApiMac_mlmeSetReqUint8 (ApiMac_attribute_phyTransmitPowerSigned、(uint8_t) TxPower); 

如果 syscfg 中的 TX 功率设置为-20dBm 至5dBm (无高 PA 模式)、则根据 LaunchPad 上的 RSSI、目标将始终为无高 PA 模式、无论我使用上述相同的 API 将 TX 功率设置为-20dBm 至20dBm。

因此、PA 模式似乎是在初始化过程中设置的、之后、它无法打开我自己的应用程序、但 PA 模式在 SmartRF Studio 上工作正常。

可以帮帮我吗?

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

    您好、Yingtao、

    如何在运行时在 CC2652P 上的 PA 和常规 TX 输出路径之间切换?  您是否更换了 LAUNCHXL-CC1352P (-2)上的 CC1352P、或者您是否正在使用参考此设计的定制板?  SmartRF Studio 7之所以能够工作、是因为它会自动切换输出路径。  请查看 rfDriverCallbackAntennaSwitching (根据 SysConfig 设置在 ti_drivers_config.c 中生成)和以下 E2E 线程。

    https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/t/940912 
    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz/f/156/t/926073 

    此致、
    Ryan

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

    我使用以 Launchpad CC1352P-2为基准的定制板。

    我发现有一个 Mac 属性  

    ApiMac_attribute_paType。 

    例如、我是否需要在设置 Tx 功率时设置此属性

    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_paType、0);
    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_phyTransmitPowerSigned、(uint8_t)-10); 

    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_paType、1);
    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_phyTransmitPowerSigned、14); 

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

    如果在运行时更改射频内核使用的 TX 输出路径、无论是默认还是高功率 PA、则应相应地更改此属性。

    此致、
    Ryan

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

    大家好、我做了一些实验来测试 PA 开关。

    我每500ms 切换一次 PA 模式、部分代码如下所示

    静态 uint8_t PA_STATUS = 0;
    
    if (PA_STATUS = 0)
    {
    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_paType、0);
    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_phyTransmitPowerSigned、(uint8_t)(-20)
    
    );PA_STATUS = 1)
    ;}
    否则
    {
    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_paType、1);
    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_phyTransmitPowerSigned、(uint8_t)(20));
    
    PA_STATUS = 0;
    }
    
    Task_sleep (100*500); 

    我 的 rfDriverCallbackAntennaSwitching 如下所示

    void rfDriverCallbackAntennaSwitching (rf_handle 客户端、rf_GlobalEvent 事件、void *arg)
    {
    if (事件和 RF_GlobalEventInit){
    PIN_Config 天线 Config[]={
    CONFIG_RF_HIGH_PA | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、 /*禁用路径*/
    PIN_TERMINATE
    };
    天线引脚= PIN_OPEN (&antennaState、antennaConfig);
    }
    否则、如果(事件和 RF_GlobalEventRadioSetup){
    /*关闭所有路径。 *
    //PINCC26XX_setOutputValue (CONFIG_RF_24GHz、0);
    PINCC26XX_setOutputValue (CONFIG_RF_HIGH_PA、0);
    //PINCC26XX_setOutputValue (CONFIG_RF_SUB1GHZ、0);
    
    /*对当前 PA 配置进行解码。 *
    RF_TxPowerTable_PAType paType =(RF_TxPowerTable_PAType) RF_getTxPower (客户端).paType;
    
    /* 2.4 GHz */
    IF (paType = RF_TxPowerTable_HighPA)
    {
    /* PA enable -->高 PA
    * LNA 使能--> 2.4GHz
    *
    //PINCC26XX_setMux (天线引脚、CONFIG_RF_24GHz、PINCC26XX_MUX_RFC_GPO0);
    /*注意:RFC_GPO3是一种变通方法,因为 RFC_GPO1 (PA 使能信号)有时不是
    在 CC1352修订版 A 上取消置位*
    PINCC26XX_setMux (天线引脚、CONFIG_RF_HIGH_PA、PINCC26XX_MUX_RFC_GPO3);
    //PINCC26XX_setMux (天线引脚、CONFIG_RF_SUB1GHZ、PINCC26XX_MUX_GPIO);
    } 否则{
    
    /*射频内核有效--> 2.4GHz */
    //PINCC26XX_setMux (天线引脚、CONFIG_RF_24GHz、PINCC26XX_MUX_GPIO);
    PINCC26XX_setMux (天线引脚、CONFIG_RF_HIGH_PA、PINCC26XX_MUX_GPIO);
    //PINCC26XX_setMux (天线引脚、CONFIG_RF_SUB1GHZ、PINCC26XX_MUX_GPIO);
    //PINCC26XX_setOutputValue (CONFIG_RF_24GHz、1);
    }
    }
    否则、如果(事件和 RF_GlobalEventRadioPowerDown){
    /*关闭所有路径。 *
    //PINCC26XX_setOutputValue (CONFIG_RF_24GHz、0);
    PINCC26XX_setOutputValue (CONFIG_RF_HIGH_PA、0);
    //PINCC26XX_setOutputValue (CONFIG_RF_SUB1GHZ、0);
    
    /*将 IO 多路复用器重置为 GPIO 功能*/
    //PINCC26XX_setMux (天线引脚、CONFIG_RF_24GHz、PINCC26XX_MUX_GPIO);
    PINCC26XX_setMux (天线引脚、CONFIG_RF_HIGH_PA、PINCC26XX_MUX_GPIO);
    //PINCC26XX_setMux (天线引脚、CONFIG_RF_SUB1GHZ、PINCC26XX_MUX_GPIO);
    }
    } 

    我将 syscfg 中的15.4发射功率设置为20、以便启用高 PA 模式。

    我使用两个 LED 指示程序正在运行。

    LED1切换应用中的每个 PA 集。

    LED2切换调用的每个回调。

    我发现、LED1每500ms 切换一次、表明 PA 每500ms 在应用中设置一次。

    LED2每500ms 切换一次、每次 LED2切换延迟约为200us、而 LED1切换延迟约为200us。

    这表示每次在应用程序中设置 PA 时、回调将在200us 内调用。 有道理。

    但是、奇怪的是、回调中的 paType 始终是 RF_TxPowerTable_HighPA、程序永远不会进入 else 语句。

    此外、我在应用中的每个 PA 集之后向 TX 数据添加一些代码、然后观察由 SmartRF Studio 控制的 LaunchPad 上的 RSSI。

    RSSI 是交替的-26和-30。

    因此、它显示 PA 保持启用、不能禁用。

    请帮我解决这个问题?

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

    您好、Yingtao、

    您可以尝试以下操作并更新结果吗?

    • 切换 ApiMac_mlmeSetReqUint8调用的顺序
    • 根据 您对 PAType 的期望而不是 从 RF_getTxPower 返回的值来调用 PINCC26XX_setMux

    编辑:

    SysConfig 将仅为 ti_radio_config.c 中的某个范围(默认值或高 pA)生成电源表:

    // 2400MHz、5dBm
    RF_TxPowerTable_Entry txPowerTable_2400_pa5[TXPOWERTABLE_2400_PA5_SIZE]=
    {
    {-20、RF_TxPowerTable_DEFAULT_PA_Entry (6、3、0、2)}、
    {-18、RF_TxPowerTable_DEFAULT_PA_Entry (8、3、0、3)}、
    {-15、RF_TxPowerTable_DEFAULT_PA_Entry (10、3、0、3)}、
    {-12、RF_TxPowerTable_DEFAULT_PA_Entry (12、3、0、5)}、
    {-10、RF_TxPowerTable_DEFAULT_PA_Entry (15、3、0、5)}、
    {-9、RF_TxPowerTable_default_pa_entry (16、3、0、5)}、
    {-6、RF_TxPowerTable_DEFAULT_PA_Entry (20、3、0、8)}、
    {-5、RF_TxPowerTable_default_pa_entry (22、3、0、9)}、
    {-3、RF_TxPowerTable_DEFAULT_PA_Entry (19、2、0、12)}、
    {0、RF_TxPowerTable_DEFAULT_PA_Entry (19、1、0、20)}、
    {1、RF_TxPowerTable_DEFAULT_PA_Entry (22、1、0、20)}、
    {2、RF_TxPowerTable_DEFAULT_PA_Entry (25、1、0、25)}、
    {3、RF_TxPowerTable_DEFAULT_PA_Entry (29、1、0、28)}、
    {4、RF_TxPowerTable_DEFAULT_PA_Entry (35、1、0、39)}、
    {5、RF_TxPowerTable_DEFAULT_PA_Entry (23、0、0、57)}、
    RF_TxPowerTable_termination_Entry
    };
    
    // 2400MHz、20dBm
    RF_TxPowerTable_Entry txPowerTable_2400_PA20[TXPOWERTABLE_2400_PA20]=
    {
    {14、RF_TxPowerTable_HIGH_PA_Entry (22、3、1、19、 27)}、
    {15、RF_TxPowerTable_HIGH_PA_Entry (26、3、1、23、 27)}、
    {16、RF_TxPowerTable_HIGH_PA_Entry (30、3、1、28、 27)}、
    {17、RF_TxPowerTable_HIGH_PA_Entry (37、3、1、39、 27)}、
    {18、RF_TxPowerTable_HIGH_PA_Entry (32、3、1、35、 48)}、
    {19、RF_TxPowerTable_HIGH_PA_Entry (34、3、1、48、 63)}、
    {20、RF_TxPowerTable_HIGH_PA_Entry (53、3、1、58、 63)}、
    RF_TxPowerTable_termination_Entry
    }; 

    为了解决您的设置问题、您需要 禁用 SysConfig 并合并表:

    // 2400MHz、20dBm
    RF_TxPowerTable_Entry txPowerTable_2400_PA20[TXPOWERTABLE_2400_PA20_SIZE]=
    {
    {-20、RF_TxPowerTable_DEFAULT_PA_Entry (6、3、0、2)}、
    {-18、RF_TxPowerTable_DEFAULT_PA_Entry (8、3、0、3)}、
    {-15、RF_TxPowerTable_DEFAULT_PA_Entry (10、3、0、3)}、
    {-12、RF_TxPowerTable_DEFAULT_PA_Entry (12、3、0、5)}、
    {-10、RF_TxPowerTable_DEFAULT_PA_Entry (15、3、0、5)}、
    {-9、RF_TxPowerTable_default_pa_entry (16、3、0、5)}、
    {-6、RF_TxPowerTable_DEFAULT_PA_Entry (20、3、0、8)}、
    {-5、RF_TxPowerTable_default_pa_entry (22、3、0、9)}、
    {-3、RF_TxPowerTable_DEFAULT_PA_Entry (19、2、0、12)}、
    {0、RF_TxPowerTable_DEFAULT_PA_Entry (19、1、0、20)}、
    {1、RF_TxPowerTable_DEFAULT_PA_Entry (22、1、0、20)}、
    {2、RF_TxPowerTable_DEFAULT_PA_Entry (25、1、0、25)}、
    {3、RF_TxPowerTable_DEFAULT_PA_Entry (29、1、0、28)}、
    {4、RF_TxPowerTable_DEFAULT_PA_Entry (35、1、0、39)}、
    {5、RF_TxPowerTable_DEFAULT_PA_Entry (23、0、0、57)}、
    {14、RF_TxPowerTable_HIGH_PA_Entry (22、3、1、19、 27)}、
    {15、RF_TxPowerTable_HIGH_PA_Entry (26、3、1、23、 27)}、
    {16、RF_TxPowerTable_HIGH_PA_Entry (30、3、1、28、 27)}、
    {17、RF_TxPowerTable_HIGH_PA_Entry (37、3、1、39、 27)}、
    {18、RF_TxPowerTable_HIGH_PA_Entry (32、3、1、35、 48)}、
    {19、RF_TxPowerTable_HIGH_PA_Entry (34、3、1、48、 63)}、
    {20、RF_TxPowerTable_HIGH_PA_Entry (53、3、1、58、 63)}、
    RF_TxPowerTable_termination_Entry
    }; 

    在 ti_radio_config.h 中也需要相应地增加 TXPOWERTABLE_2400_PA20_SIZE (TXPOWERTABLE_2400_PA20_SIZE + TXPOWERTABLE_2400_PA5_SIZE -1)

    此致、
    Ryan

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

    您好!

    1、切换 ApiMac_mlmeSetReqUint8调用的顺序

    静态 uint8_t pa_status = 0;
    
    PA_STATUS =(PA_STATUS = 0? 1:0);

    如果(PA_STATUS = 0) { ApiMac_mlmeSetReqUint8 (ApiMac_attribute_phyTransmitPowerSigned、(uint8_t)(-20)); ApiMac_mlmeSetReqUint8 (ApiMac_attribute_paType、0); } 否则 { ApiMac_mlmeSetReqUint8 (ApiMac_attribute_phyTransmitPowerSigned、(uint8_t)(20)); ApiMac_mlmeSetReqUint8 (ApiMac_attribute_paType、1); } Task_sleep (100*500);

    回调中的 paType 仍然始终为高 pA。

    2、根据 您对 PaType 的期望而不是 从 RF_getTxPower 返回的期望来调用 PINCC26XX_setMux、

     是的、这次 LaunchPad 上的 RSSI 在-21和-55之间交替。 此外、我的 DIO29波形每500ms 在高 PA 和标准模式之间交替。

    这是我们所期望的。

    现在、 ApiMac_attribute_paType 似乎不起作用。

    也许我应该尝试禁用 syscfg、并按照  您所说的那样将 txPowerTable_2400_pa5和 txPowerTable_2400_PA20组合在一起。

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

    您好、Yingtao、

    您将需要禁用 SysConfig 并合并电源表以使该应用程序正常工作、请在执行此操作后报告您的发现。

    此致、
    Ryan

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

    您好!

    我尝试禁用 syscfg 并组合了电源表、结果正常。

    我的目标 TX 数据范围为-20dBm 至20dBm、LaunchPad 上的 RSSI 范围为-60至-20。

    这完全是我所期望的。

    但我不认为禁用 syscfg 是一个好主意、因为如果我稍后需要更改 syscfg 中的某个内容、那么我必须再次执行所有这些过程。

    我找到了另一种可以使 syscfg 保持启用的方法。

    rfSelect 中有一个 RfCfg、用于在 OSAL 中初始化 macTask、如下所示:

    功率表指针被分配给 mac_user_config.h 中的这个 RF_CONFIG_250kbps_IEEE_PHY_0

    因此、我 在 mac_user_config.h 中添加了一个新的 RF_CONFIG_250kbps_IEEE_PHY_0_patch

    在 RF_CONFIG_250kbps_IEEE_PHY_0_patch 中、我使用如下组合电源表:

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #define TXPOWERTABLE_2400_PA20_SIZE _补丁_BY_JYT (TXPOWERTABLE_2400_PA20_SIZE + TXPOWERTABLE_2400_PA5_SIZE - 1)
    
    RF_TxPowerTable_Entry txPowerTable_2400_PA20_PATCH_BY_JYTE[TXPOWERTABLE_2400_PA5_SIZE ={_PA20_PA20_PA_PA_PA20
    
    {-20、RF_TxPowerTable_DEFAULT_PA_Entry (6、3、0、2)}、
    {-18、RF_TxPowerTable_DEFAULT_PA_Entry (8、3、0、3)}、
    {-15、RF_TxPowerTable_DEFAULT_PA_Entry (10、3、0、3)}、
    {-12、RF_TxPowerTable_DEFAULT_PA_Entry (12、3、0、5)}、
    {-10、RF_TxPowerTable_DEFAULT_PA_Entry (15、3、0、5)}、
    {-9、RF_TxPowerTable_default_pa_entry (16、3、0、5)}、
    {-6、RF_TxPowerTable_DEFAULT_PA_Entry (20、3、0、8)}、
    {-5、RF_TxPowerTable_default_pa_entry (22、3、0、9)}、
    {-3、RF_TxPowerTable_DEFAULT_PA_Entry (19、2、0、12)}、
    {0、RF_TxPowerTable_DEFAULT_PA_Entry (19、1、0、20)}、
    {1、RF_TxPowerTable_DEFAULT_PA_Entry (22、1、0、20)}、
    {2、RF_TxPowerTable_DEFAULT_PA_Entry (25、1、0、25)}、
    {3、RF_TxPowerTable_DEFAULT_PA_Entry (29、1、0、28)}、
    {4、RF_TxPowerTable_DEFAULT_PA_Entry (35、1、0、39)}、
    {5、RF_TxPowerTable_DEFAULT_PA_Entry (23、0、0、57)}、
    
    {14、RF_TxPowerTable_HIGH_PA_Entry (22、3、1、19、 27)}、
    {15、RF_TxPowerTable_HIGH_PA_Entry (26、3、1、23、 27)}、
    {16、RF_TxPowerTable_HIGH_PA_Entry (30、3、1、28、 27)}、
    {17、RF_TxPowerTable_HIGH_PA_Entry (37、3、1、39、 27)}、
    {18、RF_TxPowerTable_HIGH_PA_Entry (32、3、1、35、 48)}、
    {19、RF_TxPowerTable_HIGH_PA_Entry (34、3、1、48、 63)}、
    {20、RF_TxPowerTable_HIGH_PA_Entry (53、3、1、58、 63)}、
    
    rf_TxPowerTable_termination_Entry
    };
    
    #define txPowerTable_ieee154_patch_by_jyt txPowerTable_2400_PA20_patch_by_jyt
    
    #define RF_CONFIG_250kbps_IEEE_PHY_0_PATCH_BY_jyt{ \
    RF_PROP_iee154、 \
    txPowerTable_ieee154_patch_by 和 jyt、 \
    (CONST RFC_CMD_RADIO_SETUP_PA_t *)和 RF_cmdRadioSetup_ie154、 \
    (const RFC_CMD_FS_t *)和 RF_cmdfs_ie154、 \
    (CONST RFC_CMD_IEEE_TX_t *)和 RF_cmdieeTx_iee154、 \
    (CONST RFC_CMD_IEEE_RX_t *)和 RF_cmdIeeRX_ie154, \
    (CONST RFC_CMD_IEEE_CSMA_t *)&RF_cmdIeeCsma_ie154、 \
    (CONST RFC_CMD_IEEE_RX_ACK_t *)和 RF_cmdIeeRxAck_ie154、 \
    (空*)空 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

    在 rfSelect 中、按如下方式更改代码:

    //macRfCffg_IEEE_t RfCfg = RF_CONFIG_250kbps_IEEE_PHY_0;
    macRfCfcfg_IEEE_t RfCfg = RF_CONFIG_250kbps_IEEE_PHY_0_PATCH_BY_jyt; 

    现在、一切都正常。

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

    您好、Yingtao、

    感谢您验证问题/解决方案并提供解决方法。  我将与 SysConfig 开发人员协调、以确保在下一个 SIMPLELINK-CC13X2-26X2-SDK 版本中解决电源表生成问题。

    此致、
    Ryan

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

    最好在下一个 SDK 版本中解决此问题。

    我想真正的原因是这样  

    ApiMac_mlmeSetReqUint8 (ApiMac_attribute_paType、pa_type); 

    ApiMac_attribute_paType 集不起作用。此集应将电源表指针更新到 SDK 中的某些位置、以便 回调中的 RF_getTxPower 可以从相应的电源表中获取正确的 paType。