基于 NXP QN9080 蓝牙键盘配对密钥介绍

一、        概述

在实际蓝牙产品开发中,我们需要针对不同的应用场景进行不同配对方式的开发,蓝牙配对方式包括 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 》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论