nrf52 密码配对

一、nrf52 静态密码配对
我们先来了解下关于蓝牙配对的几个参数,我的例程是按照这个参数设置的。我用的SDK是15.2的,工程是
【nrf52 密码配对】\examples\ble_peripheral\ble_app_hrs\pca10040\s132\arm5_no_packs。
网上也有很多讲静态密码配对的,我也尝试了,根本行不通,估计旧的SDK上面是可以实现的。
#define SEC_PARAM_BOND1//绑定
#define SEC_PARAM_MITM1//中间人
#define SEC_PARAM_LESC1//低功耗加密
#define SEC_PARAM_KEYPRESS0//按键通知使能
#define SEC_PARAM_IO_CAPABILITIESBLE_GAP_IO_CAPS_DISPLAY_ONLY//只显示
#define SEC_PARAM_OOB0//外带 ,比如NFC
#define SEC_PARAM_MIN_KEY_SIZE7//最小加密密钥长度
#define SEC_PARAM_MAX_KEY_SIZE16//最大加密密钥长度
IO输出能力有以下几种
nrf52 密码配对
文章图片

安全加密模式有以下几种
nrf52 密码配对
文章图片

安全进入配对方式有以下几种
nrf52 密码配对
文章图片

理解了以上几个参数后,我们来进行操作
首先,对上面几个参数进行设置,如前面的参数设置。
其次,在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 密码配对
文章图片

注意一点的是,因为是使能了绑定功能的,所以,断开连接后需要手机端设置里清除配对信息,然后从机设备端也要清除配对信息,使用以下操作清除配对信息,当你再次连接的时候就不会出错了,不然重新连接的时候总是报错,禁止操作。
if (erase_bonds == true)
{
// Scanning and advertising is done upon PM_EVT_PEERS_DELETE_SUCCEEDED event.
delete_bonds();
}
以上的静态密码配对希望对大家有所帮助。




    推荐阅读