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输出能力有以下几种
nrf52 密码配对_第1张图片

安全加密模式有以下几种

nrf52 密码配对_第2张图片

安全进入配对方式有以下几种

nrf52 密码配对_第3张图片

理解了以上几个参数后,我们来进行操作

首先,对上面几个参数进行设置,如前面的参数设置。

其次,在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,如图

nrf52 密码配对_第4张图片

注意一点的是,因为是使能了绑定功能的,所以,断开连接后需要手机端设置里清除配对信息,然后从机设备端也要清除配对信息,使用以下操作清除配对信息,当你再次连接的时候就不会出错了,不然重新连接的时候总是报错,禁止操作。

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

以上的静态密码配对希望对大家有所帮助。

 

 

 

 

你可能感兴趣的:(Bluetooth)