一、概述
快速配对即 Swift Pair,在 Windows 10 版本 1803 中引入,是将蓝牙外围设备与 Windows 10 电脑配对的最新方法。该功能可简化配对过程,用户不需要导航到“设置”应用程序并找到要配对的设备,Windows 10 方法是在要配对的新设备附近并准备就绪时会自动弹出通知。本文将为大家讲解如何在 NXP QN9080 SDK上实现这一功能。
二、开发环境搭建
(1) SDK 及软件下载
本文基于 NXP QN9080 IC,SDK 和软件可在 NXP 官网 https://mcuxpresso.nxp.com 下载。
(2) 硬件
本文基于 QN9080 官方板进行开发,官方板如图 2.2 所示:
图 一
(3)开发软件
SDK 支持 IAR、Keil、MCUXpreeso IDE 三种开发软件、本文以 MCUXpreeso IDE 为开发环境作为介绍。
三、功能实现过程
Swift Pair 通常应用于键鼠应用的开发,在不需要某些客制化需求如输入 6 位数 PIN 码的情况下,我们可以使用此功能。它可以不需要键盘端的输入或者打开到蓝牙设置界面即可实现一键连接。本文是以键盘应用开发为场景所讲解的,例程为 hid_device 工程,同样通用于鼠标应用。关于键盘的开发可参考大大通博文
《基于 NXP QN9080 蓝牙键盘开发》。
(1)配对操作步骤:
1、将蓝牙外设设置于配对模式。
2、当外围设备靠近时,Windows 将向用户显示通知。
3、选择“连接”开始配对外设。
4、当外围设备不再处于配对模式或不在位于附近时,Windows 将从操作中心删除通知。
(2)电脑端配对设置
我们需要在蓝牙设置界面中打开显示使用“迅速配对”进行连接的通知,打开后,电脑端收到设备的快速配对信息则会自动弹窗。
图 二
(3)代码实现过程
1、设备的配对模式要设置为 Just Work 方式,无需输入。
① 打开 app_config.c 文件,在 SMP Data 中安全模式等级 securityModeAndLevel 设置为 gSecurityMode_1_Level_2_c,localIoCapabilities 设置为 gIoNone_c,
即无输入无显示,在做键鼠应用时,为了多系统的兼容性,可将安全连接支持 leSecureConnectionSupported 设置为 false,以兼容低版本的 BLE 设备。
图 三
② 设备安全要求配置中全部配置成模式 1,等级 2:
图 四
2、广播包配置说明:
NXP QN9080 的 BLE 工程中定义了广播包数据长度:即广播包结构体 advScanStruct 的数据长度之和应当小于等于 31 字节,数据长度也需要加上 1 字节。查看微软文档可知,配对设备要支持 BLE,且只需要有 3 个有效载荷将会触发 Swift Pair 过程。我们在此仅讲解如何配置仅通过 BLE 配对的设备进行迅速配对。
图 五
由微软资料可知,在需要快速配对时,我们可以构建一个带有 Microsoft Vendor ID、Microsoft Beacon ID、Microsoft Beacon Sub Scenario 的数组,并在配对时通过 gAdManufacturerSpecificData_c 的广播格式发送出来,即可实现 Swift Pair。
图 六
变量 advScanStruct 例程中广播数据有三种,一个是 adData0,用于设置广播的模式(设置成可发现模式并且不支持经典蓝牙),adData1 则是 HID Service 的 UUID 数据。第三个是广播设备名,设备名在例程中默认是 “NXP_HID“,我们可以进行修改。设备名也可以是广播中的一个 adType,设备名对应的类型是 gAdShortenedLocalName_c,添加此数据,使用NRF connect APP 或者电脑就可以发现设备名字,不添加时,APP 中是 N/A 。添加数组:SwiftPair[5] = { 0x06,0x00, 0x03, 0x00, 0x80}; 即包含有 3 个有效载荷,广播时将会触发 Swift Pair 过程。添加数组:DeviceType[2] = { 0xC1,0x03};
上图中的设备类型是键盘,当进行迅速配对时,Windows 会伴随设备名称弹出一个键盘的图标。我们可以根据不同的设备对设备类型进行修改。
详细信息可以在蓝牙官网: Appearance Values (bluetooth.com) 中查找所需的设备类型。
图 七
添加完之后,即可上电烧录:
广播后,打开电脑蓝牙,Windows 端会弹出一个窗口:
图 八
点击连接后,设备就会显示已连接。
图 九
如果客户对设备广播名称有需求,比如较长的广播名称,无法在广播数据中存放,我们可以单独将这个长名称放到扫描相应包中,在广播包中则去掉这个设备名 gAdShortenedLocalName 数组。
图 十
重新上电烧录后的现象为:
只显示本设备为蓝牙键盘
图 十一
在蓝牙设置中添加设备的界面我们可以看到扫描相应包中设置的长名称的设备名。
图 十二
四、总结
本文实现了一个简单的配对功能,在实际产品开发中,还有很多技术难点需要去突破。欢迎大家关注我的博文,更多资料请关注大大通博文专区~
五、参考资料
【1】Appearance Values.pdf
【3】QN908x user manual.pdf
【4】QN908x Datasheet.pdf
评论