一、 概述
在实际蓝牙产品开发中,我们需要针对不同的应用场景进行不同配对方式的开发,蓝牙配对方式包括 LMP 、 SSP 配对, SSP 配对包括四种鉴权方式 Numeric Comparison 、 Passkey Entry 、 Just Works 、 Out of Band 四种,本文将对蓝牙密钥配对方式进行介绍
二、 环境搭建
2.1 SDK 下载
本文基于 NXP QN9080 IC,SDK 可在 NXP 官网 https://mcuxpresso.nxp.com 下载
2.2 硬件
本文基于 QN9080 DK 板进行开发,DK 板如图 2.2 所示
图 2.2
2.3 开发软件
SDK 支持 IAR 、 Keil 、 MCUXpreeso IDE 三种开发软件、本文以 IAR 为开发环境作为介绍
三、 配对方式介绍
蓝牙规范定义两种配对方式, LMP 配对和 SSP 配对
3.1 LMP 配对
LMP 配对又称 Pin 码配对, Pin 码由一方定义,另一方需要输入 Pin 码完成配对过程
3.2 SSP 配对
SSP 配对包括四种鉴权方法 , Numeric Comparison 、 Passkey Entry 、 Just Works 、 Out of Band
- Numeric Comparison
Numeric Comparison 配对方式配对双方都会显示 6 位数值,由双方用户来选择 Yes 或 No,适用于双方都有显示的条件的应用
- Passkey Entry
需要在配对设备上输入主机端显示的 6 位随机数值,适用于一端可以显示,另一端可以输入的应用
- Just Works
不会进行鉴权,不能防止中间人攻击,主机端发起连接即可配对,适用于既不能显示,又不能输入的应用
- Out of Band
两设备通过别的途径交换配对信息,例如一些 NFC 蓝牙音箱
四、 工程移植
在 SDK_2.2.0_QN908XCDK\boards\qn908xcdk\wireless_examples\bluetooth\hid_device\freertos 工程上已经实现蓝牙鼠标的功能,蓝牙键盘工程与此类似,我们可在此工程介绍 LMP 配对及 SSP 配对中比较常用的 Passkey Entry 、Just Works 两种配对方式的工程移植
3.1 LMP 配对
(1) 在蓝牙鼠标工程中,已完成鼠标的功能,如果需要与电脑进行配对,需要开启配对的宏,在 app_preinclude.h 中可将 gAppUsePairing_d 宏置为 1,如图 3.1-1 所示
图 3.1-1
(2) 在 app_config.c 修改安全模式等级为 Level_3 ,如图 3.1-2 所示
图 3.1-2
(3) 在 app_config.c 修改 IO 能力设置为 gIoDisplayOnly_c ,显示,没有输入,如图 3.1-3 所示
图 3.1-3
(4) 修改配对密钥为 999999 ,如图 3.1-4 所示
图 3.1-4
(5) 实验测试使用 DK 板,按 SW1 进行广播,连接后输入密钥 999999 ,连接后可看到鼠标滑动
3.2 Passkey Entry
(1) 在蓝牙鼠标工程中,已完成鼠标的功能,如果需要与电脑进行配对,需要开启配对的宏,在 app_preinclude.h 中可将 gAppUsePairing_d 宏置为 1,如图 3.2-1 所示
图 3.2-1
(2) 在 app_config.c 修改安全模式等级为 Level_3 ,如图 3.2-2 所示
图 3.2-2
(3) 在 app_config.c 修改 IO 能力设置为 gIoKeyboardOnly_c ,键盘输入,不显示,如图 3.2-3 所示
图 3.2-3
(4) 在连接的过程中,会收到 gConnEvtPasskeyRequest_c 事件,即密钥请求事件,收到此事件后通过 Gap_EnterPasskey 函数第二参数将密钥送给主机端,如主机端显示 120000 ( 6 位随机数), passkey 就填写为 120000 ,如图 3.2-4 所示,在具体应用中,可通过按键输入此值,也可通过串口进行输入
图 3.2-4
(5) 实验测试使用 DK 板,按 SW1 进行广播,连接后电脑显示一串数据 ,输入此值即可连接
3.3 Just Works
(1) 在蓝牙鼠标工程中,已完成鼠标的功能,如果需要与电脑进行配对,需要开启配对的宏,在 app_preinclude.h 中可将 gAppUsePairing_d 宏置为 1,如图 3.3-1 所示
图 3.3-1
(2) 在 app_config.c 修改安全模式等级为 Level_2 ,如图 3.3-2 所示
图 3.3-2
(3) 在 app_config.c 修改 IO 能力设置为 gIoNone_c ,不能输入,不能显示,如图 3.3-3 所示
图 3.3-3
(4) 修改三个服务的请求 Level 为 Level 2,如图 3.3-4 所示
图 3.3-4
(5) 实验测试使用 DK 板,按 SW1 进行广播,点击连接后可看到鼠标滑动
五、 总结
本文介绍蓝牙配对的几种方式以及适用于蓝牙键盘的 3 种配对方式的移植过程,在其它蓝牙产品开发中也可根据此文档进行参考,更多关于蓝牙开发资料可关注大联大~大大通博文专区
六、 参考文献
【1】《 Bluetooth Core Specification 5.0 》
【2】《 BLE Application Developer’s Guide 》
评论