BLE核心协议GATT概念介绍

📅 发布时间:2026/7/6 7:48:44 👁️ 浏览次数:
BLE核心协议GATT概念介绍
1. BLE GATT 协议介绍GATTGeneric Attribute Profile通用属性配置文件是蓝牙低功耗BLEBluetooth Low Energy中最核心的应用层协议。它定义了设备之间如何通过属性来交换数据是所有基于 BLE 的通信应用的基础。简单来说GATT 规定了数据在 BLE 设备间传输的格式和规则使得不同的设备如手机与手环、传感器与网关能够理解彼此的数据含义。2. GATT 的定位与基础GATT 位于 BLE 协议栈的应用层它建立在ATTAttribute Protocol属性协议之上。ATT负责最基本的属性读写操作将数据组织成“属性”每个属性包含句柄、UUID、权限和值。GATT则在 ATT 的基础上进一步规定了属性的组织方式和交互逻辑例如如何将多个属性组合成一个服务、特征等更高层的概念。因此所有 GATT 通信本质上都是通过 ATT 协议完成的但 GATT 赋予了这些属性实际的意义。在Host中的架构位置如下3. 核心概念属性属性是 GATT 中最小的数据单元每个属性由四个部分组成Handle(属性句柄)Type(属性类型)Value(属性值)Permission(属性权限)这里其实有点歧义哈你说ATT定义的四种元素也行说GATT定义的也可以但是最严格来说应该是ATT定义的下面我们来介绍下四元素句柄Handle16 位唯一标识符用于索引属性客户端通过句柄访问属性。UUID唯一标识属性类型如 16 位标准 UUID 或 128 位自定义 UUID。值Value实际承载的数据。权限Permissions定义该属性是否可读、可写、是否需要加密/认证等。GATT 本身并不直接操作属性而是通过将属性组织成服务和特征来提供更高层次的抽象。4. GATT 的层次结构GATT 的数据组织是树形结构如图服务Service一个服务是一组相关数据和行为的集合例如“电池服务”提供电量信息“设备信息服务”提供制造商名称等。服务由服务定义和若干个特征组成服务本身也对应一个属性类型为“服务声明”。引用(Include)特征Characteristic特征是实际数据传输的基本单位。一个特征包含声明Declaration定义特征的属性UUID、权限等。值Value当前特征的数据。描述符Descriptors可选用于扩展特征的行为例如配置通知/指示使能、用户描述等。示例电池服务服务: 电池服务 (UUID: 0x180F) ├─ 特征: 电池电量 (UUID: 0x2A19) │ ├─ 值: 当前电量百分比 (e.g. 80%) │ └─ 描述符: 客户端特征配置 (UUID: 0x2902) —— 用于使能通知这种层次结构使得不同厂商的设备可以通过标准 UUID 实现互通也允许厂商自定义私有服务。5. GATT 角色在 GATT 通信中有两个逻辑角色与物理设备角色有一定对应关系GATT 服务器GATT Server存储属性数据响应客户端的请求读、写或主动发送数据通知/指示。通常是传感器、穿戴设备等数据提供方。GATT 客户端GATT Client主动发起请求读、写接收服务器的响应或通知。通常是手机、PC 等中央设备。物理设备的 BLE 角色外设 Periperal / 中心 Central通常与 GATT 角色对应但不是强制的。例如一个 BLE 外设可以是 GATT 服务器也可以是客户端例如外设读取另一个外设的数据。6. GATT 主要操作GATT 客户端可以执行以下操作读从服务器读取特征值或描述符值同步请求-响应。写向服务器写入特征值或描述符值支持带响应写需要确认或无响应写Write Command不需要确认。通知Notify服务器主动将特征值发送给客户端无需客户端确认速度快但无可靠性保证。指示Indicate服务器主动发送特征值并需要客户端确认可靠性高但速度稍慢。此外还涉及MTU最大传输单元协商决定单次可传输的数据包大小。7. 服务和配置文件服务Service一组特征的集合包含主服务和包含服务Secondary Service。BLE 核心规范定义了大量标准服务如电池、心率、设备信息等均有固定的 16 位 UUID。配置文件Profile一个配置文件可以包含一个或多个服务描述特定应用场景下的完整交互流程。例如“心率计配置文件”定义了心率服务、设备信息服务等并规定了如何报告心率数据。通常一个 GATT 服务器包含多个服务每个服务包含若干特征构成完整的应用功能。8. 总结层次说明Profile应用场景的完整定义包含多个服务Service功能模块包含多个特征Characteristic数据点包含值及可选描述符Descriptor特征的控制/描述属性AttributeATT 层的数据单元GATT 的数据基础GATT 的本质是通过标准化的数据组织方式和通信规则让 BLE 设备之间能够高效、可靠地交换结构化数据同时兼顾低功耗的特点。理解 GATT 是 BLE 应用开发的基础无论是开发手机端 App 还是嵌入式设备固件都需要掌握服务、特征、描述符以及各种操作的用法。