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.

[参考译文] CC2652PSIP:CC2652PSIP 射频功率控制

Guru**** 655270 points
Other Parts Discussed in Thread: CC2652PSIP, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1193013/cc2652psip-cc2652psip-rf-power-control

器件型号:CC2652PSIP
Thread 中讨论的其他器件: SysConfig

您好!

使用蓝牙时是否可以控制 CC2652PSIP 的射频功率? 它是否可以根据反馈、RSSI 或错误率等在内部进行管理? 可由用户控制射频功率? 如果是、应使用哪些软件机制、则未记录寄存器 RFC_PWR? 您是否有关于 CC2652PSIP 射频功率控制的应用手册?

谢谢、

Alex

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

    尊敬的 Alex:

    每当执行空闲循环时、BLE5堆栈和电源管理器都会自动将器件置于可能的最低功耗状态。 默认情况下、BLE5堆栈和电源管理器中的省电功能处于启用状态。  《用户指南 》的电源管理一章提供了有关此内容的一些信息、而《电源管理用户指南》提供了有关电源管理器工作原理的大量详细信息。

    此致、

    1月

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

    您好、Jan、

    我正在寻找有关 BLE 射频功率控制的信息。 我需要覆盖 PA 电源设置的 API。

    谢谢、

    Alex

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

    尊敬的 Alex:

    如果我正确理解了您的问题、那么您是否希望能够更改器件的 txPower? 如果是、则可以通过以下几种方法来实现该目的:

    编译时 txpower -可通过 SysConfig 在 txPower 字段中配置广播集的 txPower、如下所示:

    默认的 TX 功率也可以在如下所示的 Radio (无线电)选项卡中进行更改:

    2.运行时 txPower -可在运行时使用 HCI_EXT_SetTxPowerCmd()函数更改 txPower。

    如果我误解了您的问题、请告诉我、我将非常乐意提供帮助。

    此致、

    1月

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

    您好、Jan、

     我的应用中、应使用"运行时 txPower"模式来控制 BLE Tx 功率。 尽管   在项目创建期间选择了 CC2652PSIP、但看起来 CC2652PSIP 的函数 HCI_EXT_SetTxPowerCmd ()和功率级别定义不会更新。 您是否有关于计划何时更新的任何信息? 如何在 BLE 堆栈级别控制 CC2652PSIP 的高功率 PA

    谢谢、

    Alex

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

    尊敬的 Alex:

    我进行了一些搜索、发现一个 E2E 主题似乎找到了实现所需功能的方法:

    https://e2e.ti.com/f/1/t/697671

    简而言之、您能否尝试传递与 TxPowerTable 中所需 txPower 值相对应的索引值而不是使用这些定义?

    此致、

    1月

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

    您好、Jan、

    1) 1)尽管我的项目"simple_peripheral"是基于器件 CC2652PSIP 创建的、但您提到的所有电源表在标头 hci.h 和 l.h 中的功率级别为5dBm 时停止 我以与 ti_radio_config.c 中的 txPowerTable_2400_pa5_10[]相同的方式扩展了这些表 同时 ,头文件 ll.h 中函数 LL_EXT_SetTxPower( uint8 txPower, uint8 *cmdComplete )的注释使用不同的规则。 哪一个是正确的?  TI 是否计划扩展这些表并修复这些矛盾?

    2) 2) 我在开始所有任务后尝试将函数 HCI_EXT_SetTxPowerCmd ()用于0dBm 功率级别,射频功率级别没有改变:功率始终为5dBm,看起来更轻,它被覆盖。 Smart RF Studio 的电源控制工作正常。 调用此函数的正确位置是什么?

    3) 3)是否存在任何其他运行时 电源控制机制?

    谢谢、

    Alex

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

    尊敬的 Alex:

    是的、我是指 SysConfig 生成的 txPowerTable_2400_pa5_10表、该表可在 ti_radio_config.c 文件中找到。 作为测试、您能否在对 HCI_EXT_SetTxPowerCmd ()的调用中使用该表的索引来查看您是否能够测量不同的观察到的 TX 功率? 该表如下所示:

    RF_TxPowerTable_Entry txPowerTable_2400_pa5_10[TXPOWERTABLE_2400_PA5_10_SIZE] =
    {
        {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 4) }, // 0x08C6
        {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(7, 3, 0, 4) }, // 0x08C7
        {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 0) }, // 0x00C9
        {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 0) }, // 0x00CC
        {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 4) }, // 0x08CF
        {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 4) }, // 0x08D0
        {-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(21, 3, 0, 4) }, // 0x08D5
        {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(24, 3, 0, 7) }, // 0x0ED8
        {-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(32, 3, 0, 19) }, // 0x26E0
        {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 2, 0, 19) }, // 0x269E
        {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 2, 0, 19) }, // 0x26A3
        {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 28) }, // 0x3863
        {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(27, 0, 0, 44) }, // 0x581B
        {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(42, 0, 0, 69) }, // 0x8A2A
        {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(62, 0, 0, 54) }, // 0x6C3E
        {6, RF_TxPowerTable_HIGH_PA_ENTRY(32, 0, 1, 32, 16) }, // 0x104120
        {7, RF_TxPowerTable_HIGH_PA_ENTRY(35, 0, 1, 35, 20) }, // 0x144723
        {8, RF_TxPowerTable_HIGH_PA_ENTRY(42, 0, 1, 44, 20) }, // 0x14592A
        {9, RF_TxPowerTable_HIGH_PA_ENTRY(23, 1, 1, 28, 20) }, // 0x143957
        {10, RF_TxPowerTable_HIGH_PA_ENTRY(30, 1, 1, 35, 20) }, // 0x14475E
        RF_TxPowerTable_TERMINATION_ENTRY
    };

    因此、在本例中、索引0为-20dBm、索引1为-18dBm、依此类推。 您能否尝试检查使用这些索引值是否会导致预期的输出功率?  

    HCI_EXT_SetTxPowerCmd (0)//-20dBm

    HCI_EXT_SetTxPowerCmd (1)//-18dBm

    (笑声)

    HCI_EXT_SetTxPowerCmd (20)// 10dBm

    我建议在电路板配置为传导模式时使用信号分析器或频谱分析仪验证输出功率。

    此致、

    1月

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

    您好 Jan、

    在  simple_peripheral 项目(CC2652PSIP)中使用具有不同输入参数0、1、20或任何其他参数的函数 HCI_EXT_SetTxPowerCmd ()不会对功率产生任何影响:根据频谱分析仪、它始终为5dBm。 应该在某个特定时刻执行此函数:在 BLE 堆栈初始化之前,BLE 堆栈处于空闲状态,BLE 堆栈正在运行,... ? 是否应在该函数之后设置某些事件、屏蔽或触发一些标志?

    谢谢、

    Alex  

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

    尊敬的 Alex:

    您能否指定正在使用的 SDK? 您是否在调用 setTxPowerCmd()函数时进行广播? 您可以尝试禁用广播吗? 是否可以在创建广播集之前尝试调用函数?

    此致、

    1月

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

    我使用 SDK v6.40.00.13。 是的,当 调用 setTxPowerCmd()函数时,我将进行广播。 执行 setTxPowerCmd() 函数后,射频功率不会改变。

    看起来、我只能在使用 GapAdv_create 函数(advParams 中的功率参数)创建广播集期间控制射频 Tx 功率。

    在运行广播时、我尝试使用以下三个步骤:

    GapAdv_disable (advHandleLegacy);

    GapAdv_setParam (advHandleLegacy、GAP_ADV_PARAM_TX_POWER、pValue);

    GapAdv_enable (advHandleLegacy、GAP_ADV_ENABLE_OPTIONS_USE_MAX、0);

    遗憾的是、器件在第一步中停止工作。 这样做的原因可能是什么?

     此致、

    Alex

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

    尊敬的 Alex:

    调用 GapAdv_disable()后,必须等到 GAP_EVT_ADV_END_AFTER_DISABLE  事件被接收 ,然后才能调用 任何需要禁用广播集的函数。 如果在等待事件后观察到相同的行为、那么您是否可以为这三个函数提供返回代码?

    此致、

    1月

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

    您好、Jan、

    调用 GapAdv_disable()后,模块变为冻结状态:它永远进入循环,永远不会从循环中退出。 这样做的原因可能是什么?

    此致、

    Alex

      

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

    尊敬的 Alex:

    我对延迟答复表示歉意。 为了澄清这一点,您是否意味着代码永远不会从 GapAdv_disable()函数调用返回?

    此致、

    1月

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

    您好、Jan、

    没错,代码永远不会从  GapAdv_disable()返回。 我的应用基于 simple_Peripheral 项目。 我尝试调试此函数:在 iCall_abbort()函数中锁定长路径代码后。

    此致、

    Alex

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

    尊敬的 Alex:

    我很惊讶地听到 GapAdv_disable()函数不会返回。 可以在调用函数的位置共享代码片段吗? 函数调用是否在中断上下文中进行?

    此致、

    1月