NRF52832学习笔记(38)——修改发射功率
一、背景
蓝牙接收信号强度 RSSI 的直接影响因素就是蓝牙信号的发射功率。发射功率就是你所使用的设备(开发板、手机)所发射出来给主机或从机设备的信号强度。同时在实际应用当中,时常也需要修改蓝牙的发射功率,以达到省电的目的。
1.1 发射功率范围
(最大)4dB、(默认)0dB、-4dB、-8dB、-12dB、-16dB、-20dB、-30dB、(最小)-40dB
nRF51系列最小值-30dB
nRF52系列最小值-40dB
1.2 发射功率作用
发射功率越大,信号越强,距离越远,功耗越大。
发射功率越小,信号越弱,距离越近,功耗越小。
发射功率只是影响通信距离的因素之一,通信距离还与环境、天线选型、天线电路匹配等因素有关。
二、修改实际发射功率
2.1 相关函数
/**@brief Set the radio's transmit power.
*
* @param[in] role The role to set the transmit power for, see @ref BLE_GAP_TX_POWER_ROLES for
* possible roles.
* @param[in] handle The handle parameter is interpreted depending on role:
* - If role is @ref BLE_GAP_TX_POWER_ROLE_CONN, this value is the specific connection handle.
* - If role is @ref BLE_GAP_TX_POWER_ROLE_ADV, the advertising set identified with the advertising handle,
* will use the specified transmit power, and include it in the advertising packet headers if
* @ref ble_gap_adv_properties_t::include_tx_power set.
* - For all other roles handle is ignored.
* @param[in] tx_power Radio transmit power in dBm (see note for accepted values).
*
* @note Supported tx_power values: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm.
* @note The initiator will have the same transmit power as the scanner.
* @note When a connection is created it will inherit the transmit power from the initiator or
* advertiser leading to the connection.
*
* @retval ::NRF_SUCCESS Successfully changed the transmit power.
* @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
* @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found.
* @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
*/
SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(uint8_t role, uint16_t handle, int8_t tx_power));
-
第一个参数设置对应角色的功耗:
BLE_GAP_TX_POWER_ROLE_ADV:广播发射功率
BLE_GAP_TX_POWER_ROLE_SCAN_INIT:扫描或发起者功率
BLE_GAP_TX_POWER_ROLE_CONN:连接时的功率
对于主机(BLE Central)来说,connect的功率是继承scan的发射功率;对于从机(BLE Peripheral)来说,connect的功率是继承advertising功率。 -
第二个参数设置为广播的连接句柄:BLE_ADVERTISING_DEF(m_advertising); 定义实体
-
第三个参数设置功率的层级:-40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm
2.2 添加代码
在 GAP 初始化或广播初始化的时候,通过 sd_ble_gap_tx_power_set()
设置发射功率。
2.3 最大档和最小档发射功率比较
-35dB是最大档发射功率,-76dB是最小档发射功率。
2.4 其他SDK版本
或者,根据SDK版本不同,可能是以下情况:
/**@brief Set the radio's transmit power.
*
* @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30, -20, -16, -12, -8, -4, 0, and 4 dBm).
*
* @note The -30dBm setting is only available on nRF51 series ICs.
* @note The -40dBm setting is only available on nRF52 series ICs.
*
* @retval ::NRF_SUCCESS Successfully changed the transmit power.
* @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
*/
SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power));
三、修改广播中显示的发射功率
查看广播:
0x0A
就是 广播中AD Type:BLE_GAP_AD_TYPE_TX_POWER_LEVEL
• 由 Leung 写于 2021 年 8 月 24 日