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 的射频功率? 它是否可以根据反馈、RSSI 或错误率等在内部进行管理? 可由用户控制射频功率? 如果是、应使用哪些软件机制、则未记录寄存器 RFC_PWR? 您是否有关于 CC2652PSIP 射频功率控制的应用手册?
谢谢、
Alex
您好、Jan、
我正在寻找有关 BLE 射频功率控制的信息。 我需要覆盖 PA 电源设置的 API。
谢谢、
Alex
尊敬的 Alex:
如果我正确理解了您的问题、那么您是否希望能够更改器件的 txPower? 如果是、则可以通过以下几种方法来实现该目的:
编译时 txpower -可通过 SysConfig 在 txPower 字段中配置广播集的 txPower、如下所示:
默认的 TX 功率也可以在如下所示的 Radio (无线电)选项卡中进行更改:
2.运行时 txPower -可在运行时使用 HCI_EXT_SetTxPowerCmd()函数更改 txPower。
如果我误解了您的问题、请告诉我、我将非常乐意提供帮助。
此致、
1月
尊敬的 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月
尊敬的 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月