BLE协议栈GATT服务器详细介绍 -D

张开发
2026/4/4 23:17:38 15 分钟阅读

分享文章

BLE协议栈GATT服务器详细介绍 -D
目录概述1 GATT服务器架构2 核心组成部分及功能介绍3 工作原理服务器与客户端的互动3.1 工作原理介绍3.2 工作流程4 GATT服务器和客户端通信流程4.1 通信流程框图4.2 流程分解4.2.1 第一阶段设备发现与连接4.2.2 第二阶段服务与特征发现4.2.3 第三阶段数据交互核心概述GATT服务器是蓝牙低功耗BLE通信中的核心数据提供方简单理解它是一个包含结构化数据的数据库。当两个BLE设备连接后扮演GATT服务器角色的设备负责存储并向客户端Client提供数据。1 GATT服务器架构其数据采用一个清晰的分层结构进行组织2 核心组成部分及功能介绍1服务Service一个或多个相关功能的集合。例如“心率监测服务”就是一个完整的服务单元。每个服务由一个唯一的UUID通用唯一标识符来标识。2特征Characteristic服务中数据交互的实际载体是最常被读写的基本单元。例如在“心率服务”中“心率测量值”就是一个特征。一个特征包含多个属性例如值Value特征的实际数据。声明Declaration描述该特征的数据类型和权限。客户端特征配置描述符CCCD一个非常关键的描述符客户端通过写入这个描述符来订阅或取消订阅服务器的通知Notification或指示Indication。3属性Attribute存储数据的最小单位。服务、特征、描述符在底层都是以属性的形式存储在属性表中。每个属性由句柄Handle唯一地址、类型UUID、值和权限组成。3 工作原理服务器与客户端的互动3.1 工作原理介绍GATT服务器和客户端的角色是动态的取决于数据流向。在同一个连接中一个设备可以同时作为某些服务的服务器和另一些服务的客户端。角色职责典型设备举例GATT 服务器存储数据响应读取Read和写入Write请求主动向客户端推送数据通知/指示。心率手环、温湿度传感器、智能灯泡GATT 客户端发现服务向服务器发起读取/写入请求接收服务器推送的数据。智能手机、平板电脑3.2 工作流程1客户端发现服务连接建立后客户端首先向服务器请求其属性表以发现有哪些可用的服务和特征。2客户端读写数据客户端根据需求向特征值通过其句柄发起读取或写入请求服务器根据该特征的权限决定是否响应。3服务器主动推送关键机制这是服务器向客户端发送实时数据的常用方式有两种模式通知Notification服务器单向发送不要求客户端确认。适用于数据丢失影响不大的场景如实时心率。指示Indication服务器发送后必须等待客户端确认。适用于必须可靠送达的数据。要实现推送客户端必须先写入CCCD来启用订阅。4 GATT服务器和客户端通信流程4.1 通信流程框图GATT服务器与客户端的通信流程是一个精心设计的单向请求-响应和订阅推送相结合的过程。为了让你快速掌握全貌下图概括了从设备连接到数据交互的完整通信流程4.2 流程分解4.2.1 第一阶段设备发现与连接在这一阶段双方建立物理链路并确定角色。广播与扫描作为GATT服务器的设备如传感器会周期性向外广播自己的存在和基本信息。作为GATT客户端的设备如手机则主动扫描周围的广播。发起连接客户端选定目标服务器后向其发起连接请求。连接成功后一个双向通信的通道便建立起来此时服务器会暂停广播。4.2.2 第二阶段服务与特征发现连接建立后客户端第一件事就是“探索”服务器能提供什么。发现所有主服务客户端向服务器发送Discover All Primary Services请求。服务器回复一个服务列表每个服务由其唯一的UUID标识。发现服务的特征客户端对感兴趣的服务发送Discover Characteristics请求。服务器回复该服务下所有的特征列表。这是最关键的一步客户端将获取到每个特征的句柄特征在属性表中的唯一地址后续所有操作都基于它。UUID标识特征类型如心率测量值。属性Properties定义了客户端能对此特征做什么如读、写、通知。权限Permissions定义了操作的安全要求如是否需要加密。4.2.3 第三阶段数据交互核心探索完毕后真正的数据交换开始主要有两种模式1模式一客户端主动发起读取特征值客户端向指定特征的值句柄发送Read Request。服务器回复Read Response其中包含特征值。写入特征值客户端向指定特征的值句柄发送Write Request要求确认或Write Command无需确认。服务器会根据请求类型和权限决定是否执行并回复。2模式二服务器主动推送这是实现传感器数据实时上传的关键。但它需要客户端先完成订阅。客户端启用通知/指示客户端找到目标特征下的CCCD描述符并向其写入0x0001启用通知或0x0002启用指示。服务器主动推送一旦订阅成功当特征值变化或满足条件时服务器无需客户端询问就会主动向客户端发送Notification单向通知或Indication需客户端回复确认的指示。3两种模式的交互流程对比交互模式发起方通信方式典型应用场景客户端读写客户端请求-响应读取设备名称、写入配置参数服务器通知服务器主动推送心率、温度等传感器数据的实时上传

更多文章