nrf52 密碼配對

一、nrf52 靜態密碼配對

       我們先來了解下關於藍牙配對的幾個參數,我的例程是按照這個參數設置的。我用的SDK是15.2的,工程是

\examples\ble_peripheral\ble_app_hrs\pca10040\s132\arm5_no_packs。

       網上也有很多講靜態密碼配對的,我也嘗試了,根本行不通,估計舊的SDK上面是可以實現的。

#define SEC_PARAM_BOND                      1                 //綁定                    
#define SEC_PARAM_MITM                      1                  //中間人                    
#define SEC_PARAM_LESC                      1                   //低功耗加密               
#define SEC_PARAM_KEYPRESS                  0              //按鍵通知使能                  
#define SEC_PARAM_IO_CAPABILITIES           BLE_GAP_IO_CAPS_DISPLAY_ONLY            //只顯示
#define SEC_PARAM_OOB                       0                     //外帶 ,比如NFC            
#define SEC_PARAM_MIN_KEY_SIZE              7            //最小加密密鑰長度                         
#define SEC_PARAM_MAX_KEY_SIZE              16         //最大加密密鑰長度                         

 IO輸出能力有以下幾種

安全加密模式有以下幾種

安全進入配對方式有以下幾種

理解了以上幾個參數後,我們來進行操作

首先,對上面幾個參數進行設置,如前面的參數設置。

其次,在gap_params_init()函數後面添加以下代碼,設置靜態密碼,STATIC_PASSKEY    “123456”

static void set_password(void)
{    
    ret_code_t err_code;  
    
    ble_opt_t passkey_opt;
    uint8_t passkey[6];
    
    memcpy(passkey,STATIC_PASSKEY,6);  
    passkey_opt.gap_opt.passkey.p_passkey = passkey;
    err_code = sd_ble_opt_set(BLE_GAP_OPT_PASSKEY, &passkey_opt);
    APP_ERROR_CHECK(err_code);
    
}

再者,修改services_init()函數裏面的對於安全進入的設置,將SEC_OPEN的地方全改成SEC_MITM。

編譯OK後,測試OK,如圖

注意一點的是,因爲是使能了綁定功能的,所以,斷開連接後需要手機端設置裏清除配對信息,然後從機設備端也要清除配對信息,使用以下操作清除配對信息,當你再次連接的時候就不會出錯了,不然重新連接的時候總是報錯,禁止操作。

    if (erase_bonds == true)
    {
        // Scanning and advertising is done upon PM_EVT_PEERS_DELETE_SUCCEEDED event.
        delete_bonds();
    }

以上的靜態密碼配對希望對大家有所幫助。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章