dBm和mW對照表和nRF52發射功率配置

在這裏插入圖片描述

nRF52發射功率配置

#define TX_POWER_LEVEL                  (-8)  //Supported tx_power values: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm.
/**@brief Function for initializing the Advertising functionality.
 *
 * @details Encodes the required advertising data and passes it to the stack.
 *          Also builds a structure to be passed to the stack when starting advertising.
 */
static void advertising_init(void)
{
    uint32_t               err_code;
    ble_advertising_init_t init;
    int8_t        tx_power_level = TX_POWER_LEVEL;//設置發射功率
    memset(&init, 0, sizeof(init));
    init.advdata.name_type          = BLE_ADVDATA_FULL_NAME;
    init.advdata.include_appearance = false;
    //設備需要一直廣播不休眠,必須設置爲普通發現模式
    init.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;//藍牙設備模式
	init.advdata.p_tx_power_level        = &tx_power_level;
    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids  = m_adv_uuids;
    init.config.ble_adv_fast_enabled  = true;
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;//廣播間隔
    //註釋後不進入IDLE無效模式
    //init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;//廣播超時 
    init.evt_handler = on_adv_evt;
    err_code = ble_advertising_init(&m_advertising, &init);
    APP_ERROR_CHECK(err_code);
    ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
}

static void tx_power_set(void)
{
    ret_code_t err_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, m_advertising.adv_handle, TX_POWER_LEVEL);
    APP_ERROR_CHECK(err_code);
}

獲取接收信號強度RSSI

	int8_t rssi=0;
	uint8_t p_ch_index;

	sd_ble_gap_rssi_start(m_conn_handle,BLE_GAP_RSSI_THRESHOLD_INVALID,0);
	sd_ble_gap_rssi_get(m_conn_handle, &rssi,&p_ch_index);
	//	    sd_ble_gap_rssi_stop(m_conn_handle);
	NRF_LOG_INFO("rssi: %d",rssi);
	NRF_LOG_INFO("Channel: %d",p_ch_index);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章