本文共 1612 字,大约阅读时间需要 5 分钟。
《1》软件平台:nRF5_SDK_17.0.0_9d13099
《2》硬件平台: nRF52833/nRF52840// 扫描参数 初始化uint8_t m_scan_data[255];ble_data_t const m_scan_buf ={ .p_data =m_scan_data, .len =BLE_GAP_SCAN_BUFFER_MIN //31 Byte};const ble_gap_scan_params_t m_scan_params ={ .extended = 0,//ɨÃè´ó¹ã²¥°ü .report_incomplete_evts =0, .active = 1,//1=主动扫描;0=被动扫描 .filter_policy=BLE_GAP_SCAN_FP_ACCEPT_ALL, .scan_phys =BLE_GAP_PHY_1MBPS, .interval = MSEC_TO_UNITS(2500,UNIT_0_625_MS) , .window = MSEC_TO_UNITS(2000,UNIT_0_625_MS) , .timeout = 0, .channel_mask =0, // ÐŵÀ£¬´ó¹ã²¥ÔÚ0-37};/*****************************************扫描函数开始*mode =1;时,第一次开始扫描*mode =2: 第一次开始扫描后,需要再次恢复扫描(不带扫描参数)*****************************************/void ble_start_scan(uint8_t mode){ ret_code_t err_code; if(mode==1) { err_code = sd_ble_gap_scan_start(&m_scan_params, &m_scan_buf); } else//=2 { // Resume the scanning. err_code = sd_ble_gap_scan_start(NULL, &m_scan_buf); } BLE_RTT("scan result:%x\r\n",err_code); if (err_code != NRF_ERROR_INVALID_STATE) { APP_ERROR_CHECK(err_code); }}
注意点:需要在这个事件里面继续恢复扫描,否则会停止扫描,不会继续扫描
第一次使用设置扫描参数如下:
// scan para init=======================ble_gap_scan_params_t m_scan_params ={ .extended = 1,// .report_incomplete_evts =0, .active = 1, // 配置为1则是主动扫描,0则是被动扫描 .filter_policy=BLE_GAP_SCAN_FP_ACCEPT_ALL, .scan_phys =BLE_GAP_PHY_CODED, .interval = MSEC_TO_UNITS(2500,UNIT_0_625_MS) , .window = MSEC_TO_UNITS(2000,UNIT_0_625_MS) , .timeout = 0,// .channel_mask =0, // 信道};
可以加入QQ群:687360507 与大伙沟通交流,技术在于分享而进步
转载地址:http://rvgyf.baihongyu.com/