蓝牙hid协议是什么(蓝牙hci协议)

蓝牙hid协议是什么(蓝牙hci协议)提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 HID Human Interface Device 人体学接口设备 由其名称可以了解 HID 设备是直接与人交互的设备 比如键盘 鼠标 游戏手柄 翻页笔 蓝牙自拍杆等等 其既可以使用 usb 接口来实现 也可以使用在蓝牙作为传输层 实现无线 HID 设备 也就是说 BLE



提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


1. 大概要写的数据解释

蓝牙HID设备的实现一般需要两个条件
1.在广播数据中广播HID的UUID,设备外观,设备名称等信息
2.在GATT中实现HID要求的服务和特性。

 
   

0x1812,是短uuid
键盘外观的标识符是0x03c1,
鼠标外观是0x03c2,
游戏手柄的外观是0x03c3


直接搜索下面这个文档就可以查看,更多资料放在最后最下面
Bluetooth Assigned Numbers
在这里插入图片描述
广播数据中广播的UUID,设备外观,设备名称


Length AD Type Date 含义 0x02 0x01 0x05 设备标识(flags)低功耗设备,有限发现模式 0x03 0x03 0x1218 HID服务UUID 0xn 0x09 设备名称,自由设置 完整的设备名称(utf-8编码) 0x03 0x19 0xc203 设备外观

在GATT中实现HID要求的服务和特性。

类型 UUID 功能 读写权限 服务 0x1812 HID服务的UUid 特性 0x2a4a HID设备信息 READ 特性 0x2a4b HID Report Map(上报给主机的数据描述) read 特性 0x2a4c HID Control Point(主机状态指示) write 特性 0x2a4d 数据上报(必须2908描述) 读 通知 特性 0x2a4d 数据上报(必须2908描述) 读 写 特性 0x2a4e 协议模式控制 读 写

在这里插入图片描述
关于上面的服务和特性(也可以说是HID profile介绍,配置)详细介绍如下

0x1812是HID 服务的UUID,必须使用这个UUID实现服务

0x2a4a是 HID Information的特性UUID,主要功能是展示HID的信息,他的值是4个字节:前两个字节是HID版本,一半填入0x01,0x01,标示版本号–为1.1
第三个字节是Country Code(国家代码),视情况填,这里填0x00
第四个字节是 HID Flags,一般填入0x02,表示 Normally Connectable

0x2a4b 是Report Map()的特性UUID,主要功能是描述HID设备与HID主机数据交互的方式,即两者之间所发送的数据每一位的含义。

0x2a4c是Control Point的特性UUId,该特性一定要可写,HID主机通过该特性告知HID设备主机的状态,比如电脑休眠后会告知蓝牙鼠标也进入低功耗模式。

0x2a4d是HID设备与HID主机之间交互数据(Report)的特性UUID。对于键盘设备,当某个按键按下时,HID设备发送数据到HID主句;当开关CapsLock和ScrollLook功能时,HID主机将相关指示灯的状态发送给HID键盘。所以键盘设备需要两个UUID为0x2a4d的特性,一个用于发送数据,一个用于接受数据(使用UUID为0x2908的描述来区分)。而对于鼠标,游戏手柄这种只发送数据给电脑的设备,只需要定义一个0x2a4d的特性用来发送数据就可以了。
0x2a4e 是协议模式的特性UUID,对于键盘和鼠标这两种设备,可能也会在电脑BIOS阶段使用,此阶段的计算机没有进入系统,难以支持复杂的设备。所以键盘鼠标就有两种模式,分别是Report模式和Boot模式,系统启动前使用的是Boot模式,HID设备与HID主机之间使用固定的数据格式进行交互。系统启动完成后,HID主机会通过该特性发数据给HID设备,通知HID设备切换成Report模式,在Report模式下,数据格式由 Report Map 决定。
该特性的数据值为0x00表示Boot模式,0x01表示Report模式。

2. 代码例子

蓝牙键盘代码

 
   

蓝牙键盘,按下设备上IO0对应的按键,发送按键1到HID主机。

按键对应的代码可搜索HID KeyCode,这里是部分

 
   
 
   

这个叫ReportMap,为8个字节,是键盘发给主机的数据
第一个字节代表一些特殊的按键(Modifier按键),比如ctrl,gui
第二字节保留,第三到第八字节标示6个按键,数据值为零表示无按键按下.

3. 代码例子(c)

杰理鼠标报表分析(c)

 
   

这是一个描述鼠标和键盘混合输入报告的HID(Human Interface Device)报告描述符。HID报告描述符用于定义设备与主机之间的通信格式,以便主机能够正确解释设备发送的数据。这段描述符描述了鼠标、消费者控制和键盘三个功能。

以下是这个报告描述符的主要部分:

1.鼠标报告(Report ID: 1):

该部分定义了鼠标的基本行为,包括鼠标按钮、坐标和滚轮。
Usage Page (Generic Desktop Ctrls) 表示使用通用桌面控制器的控制。
Usage (Mouse) 表示这是一个鼠标。
鼠标的报告数据包括5个字节,其中包括按钮状态和坐标信息。


2.用户控制报告(Report ID: 4):

该部分定义了消费者控制,如音量、播放/暂停等。
Usage Page (Consumer) 表示使用消费者控制的控制。
Usage (Consumer Control) 表示这是一个消费者控制设备。
报告数据包括一个16位的值,用于表示不同的消费者控制功能。


3.键盘报告(Report ID: 5):

该部分定义了键盘的基本行为,包括按键。
Usage Page (Generic Desktop Ctrls) 表示使用通用桌面控制器的控制。
Usage (Keyboard) 表示这是一个键盘。
报告数据包括6个字节,其中包括按键的状态。


4.Report ID: 3

这段代码块描述了一些消费者控制的相关信息,包括播放/暂停、配置、下一曲、上一曲、音量调节、前进、后退等操作。

5.Report ID: 2

这部分代码是 HID(Human Interface Device)报告描述的一部分,描述了一个具有 Report ID 为 2 的 Consumer Control 类型的输入报告。

具体描述如下:

Report ID (0x85, 0x02): 报告的唯一标识符,这里是 2。
Usage (0x09, 0x01): 使用 Consumer Control 功能。
Collection (0xA1, 0x00): 定义数据的集合,这里是 Physical(物理集合)。
Report Size (0x75, 0x0C): 每个数据项的位数,这里是 12 位。
Report Count (0x95, 0x02): 数据项的数量,这里是 2。
Usage Page (0x05, 0x01): 使用 Generic Desktop 控制页。
Usage (0x09, 0x30): 使用 X 轴。
Usage (0x09, 0x31): 使用 Y 轴。
Logical Minimum (0x16, 0x01, 0xF8): 逻辑最小值为 -2047。
Logical Maximum (0x26, 0xFF, 0x07): 逻辑最大值为 2047。
Input (0x81, 0x06): 表示这是一个输入项,具体是 Data、Var(变量)、Rel(相对),无 Wrap(不回绕),Linear(线性),Preferred State,No Null Position。
End Collection (0xC0): 结束此集合。










总体来说,这个报告描述了一个 Consumer Control 类型的输入报告,包含 X 和 Y 两个轴的信息,每个轴占用 12 位,取值范围是 -2047 到 2047。这样的报告通常用于描述类似于鼠标或者控制台遥控器等设备的输入。

一些资料:

Bluetooth Core Specification:

这是蓝牙技术的核心规范,提供了关于蓝牙协议栈、服务、特征以及UUID的详细信息。
这个规范通常包含多个卷,其中特定的UUID信息可能分布在不同的卷中。
Bluetooth Assigned Numbers:

这个文档列出了由Bluetooth SIG分配的所有标准UUID和其他数字标识符。你可以在这里找到各种服务、特征和配置文件的UUID。
GATT Specifications:

GATT(Generic Attribute Profile)是蓝牙协议栈中用于设备之间通信的一部分,包括定义了一些通用的服务和特征。相关的UUID信息可能在这里找到。
Profile Specifications:

不同的蓝牙设备和应用领域通常有特定的配置文件(Profile)规范,其中包含了定义的服务和特征以及相应的UUID。你可能需要查看与你的应用领域相关的配置文件规范。

今天的文章 蓝牙hid协议是什么(蓝牙hci协议)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2026-02-26 17:01
下一篇 2025-07-14 15:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/48792.html