Bluetooth Low Energy (BLE) 的GATT服务

目录

概述

1 GATT 基本概念

1.1 GATT 的介绍

1.2 GATT 的角色

 1.3 核心组件

2 GATT 服务(Services)

2.1 服务类型

2.2 常见标准服务

3 GATT 特征(Characteristics)

3.1 特征结构

3.2 常见标准特征

4 GATT 数据交互方式

4.1 客户端操作

4.2 服务器实现(Zephyr示例)

5 GATT 协议细节


概述

本文主要介绍Bluetooth Low Energy (BLE) 的GATT服务的相关概念。GATT(通用属性配置文件)是蓝牙低功耗(BLE)的核心协议,定义了数据通信标准框架。它通过服务(Services)和特征(Characteristics)实现设备间数据交换,服务为数据功能逻辑集合,特征是具体数据项。GATT包含服务器(存储数据)和客户端(读写数据)两种角色,支持读取、写入、通知等操作。标准服务如电池服务(0x180F)、设备信息服务(0x180A)等提供通用功能,特征如电池电量(0x2A19)、心率数据(0x2A37)等实现具体数据交互。协议通过属性句柄、权限控制和MTU协商等机制确保数据传输安全高效。

1 GATT 基本概念

1.1 GATT 的介绍

GATT (Generic Attribute Profile) 是 Bluetooth Low Energy (BLE) 的核心协议,定义了 数据通信的标准框架,使BLE设备能够通过 服务(Services) 和 特征(Characteristics) 交换数据。

1.2 GATT 的角色

角色说明典型设备
GATT 服务器(Server)存储并提供数据(如传感器数据)心率带、温度计
GATT 客户端(Client)读取或写入服务器数据手机、中央设备

 1.3 核心组件

组件说明
服务(Service)数据功能的逻辑集合(如电池服务、设备信息服务)
特征(Characteristic)服务中的具体数据项(如电池电量、设备名称)
描述符(Descriptor)特征的附加信息(如通知使能、数据格式)

GATT 服务(Services)

2.1 服务类型

类型说明
主服务(Primary Service)设备的核心功能(如 0x180F 电池服务)
次要服务(Secondary Service)被其他服务引用的辅助功能
包含服务(Include Service)服务间的引用关系

2.2 常见标准服务

UUID (16-bit)服务名称说明
0x1800Generic Access设备名称、外观等通用信息
0x1801Generic Attribute服务变更通知
0x180ADevice Information厂商、固件版本等
0x180FBattery Service电池电量
0x1810Blood Pressure血压数据
0x1816Cycling Speed and Cadence骑行速度和踏频

3 GATT 特征(Characteristics)

3.1 特征结构

每个特征包含:

  • 值(Value):实际数据(如温度值 25.5°C)。

  • 属性(Properties):定义操作权限(读/写/通知等)。

  • 描述符(Descriptors):如 Client Characteristic Configuration Descriptor (CCCD) 用于启用通知。

3.2 常见标准特征

UUID (16-bit)特征名称说明
0x2A00Device Name设备名称(可读)
0x2A19Battery Level电池电量(0-100%)
0x2A37Heart Rate Measurement心率数据(通知)
0x2A29Manufacturer Name String厂商名称(只读)

4 GATT 数据交互方式

4.1 客户端操作

操作函数(Zephyr示例)说明
发现服务bt_gatt_discover()扫描远程设备的GATT表
读取特征值bt_gatt_read()读取数据(如电池电量)
写入特征值bt_gatt_write()发送命令或配置
启用通知bt_gatt_subscribe()订阅实时数据(如心率)

4.2 服务器实现(Zephyr示例)

// 定义电池服务特征
BT_GATT_SERVICE_DEFINE(battery_svc,
    BT_GATT_PRIMARY_SERVICE(BT_UUID_BAS),
    BT_GATT_CHARACTERISTIC(BT_UUID_BAS_BATTERY_LEVEL,
                           BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY,
                           BT_GATT_PERM_READ, read_battery_level, NULL, NULL),
    BT_GATT_CCC(battery_level_ccc_changed, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE),
);

// 读取回调函数
static ssize_t read_battery_level(struct bt_conn *conn,
                                 const struct bt_gatt_attr *attr,
                                 void *buf, uint16_t len, uint16_t offset) {
    uint8_t level = get_battery_level(); // 获取电量(0-100%)
    return bt_gatt_attr_read(conn, attr, buf, len, offset, &level, sizeof(level));
}

5 GATT 协议细节

1) 属性句柄(Handle)

  • 每个属性(服务/特征/描述符)有唯一的 16位句柄(如 0x0001)。

  • 客户端通过句柄访问数据。

2) 权限(Permissions)

权限说明
BT_GATT_PERM_READ允许读取
BT_GATT_PERM_WRITE允许写入
BT_GATT_PERM_NOTIFY允许通知

3) 数据长度(MTU)

默认 23字节,可通过 bt_gatt_exchange_mtu() 协商更大的MTU(如247字节)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值