GATT(Generic Attribute Profile)是蓝牙低功耗(Bluetooth Low Energy,简称BLE)协议栈中的一个核心协议

蓝牙的 GATT(Generic Attribute Profile) 是蓝牙低功耗(Bluetooth Low Energy,简称BLE)协议栈中的一个核心协议,用于定义设备如何通过蓝牙进行数据传输和交互。GATT 是基于 ATT(Attribute Protocol) 的一个高层协议,它提供了一种标准化的方式来组织和访问设备上的数据。

GATT 的核心概念

  1. 服务(Service)

    • 服务是一个逻辑分组,包含一组相关的特性(Characteristic)。
    • 每个服务都有一个唯一的 UUID(Universally Unique Identifier)来标识它。
    • 例如,心率监测服务(Heart Rate Service)是一个常见的服务,用于传输心率数据。
  2. 特性(Characteristic)

    • 特性是服务中的具体数据项,表示一个具体的值。
    • 每个特性都有一个唯一的 UUID,并且可以包含一个或多个描述符(Descriptor)。
    • 例如,心率监测服务中的“心率测量”特性,用于传输实时心率值。
  3. 描述符(Descriptor)

    • 描述符是特性值的附加信息,用于描述特性值的用途或格式。
    • 例如,特性值的单位、数据格式等。
  4. 属性(Attribute)

    • 属性是 GATT 中的最小数据单元,可以是服务、特性或描述符。
    • 每个属性都有一个唯一的句柄(Handle),用于标识它。

GATT 的工作原理

GATT 通信通常涉及两个角色:

  • GATT 服务器(GATT Server):提供数据的设备(通常是传感器或外围设备)。
  • GATT 客户端(GATT Client):请求和访问数据的设备(通常是智能手机或中央设备)。
通信流程
  1. 发现服务(Discover Services)

    • 客户端请求服务器列出所有可用的服务。
  2. 发现特性(Discover Characteristics)

    • 客户端请求服务器列出某个服务中的所有特性。
  3. 读取特性值(Read Characteristic Value)

    • 客户端读取某个特性的当前值。
  4. 写入特性值(Write Characteristic Value)

    • 客户端修改某个特性的值。
  5. 通知和指示(Notification 和 Indication)

    • 服务器可以主动向客户端发送特性值的更新(通知)或等待客户端确认后发送(指示)。

GATT 的应用示例

  1. 心率监测

    • 服务:心率监测服务。
    • 特性:心率测量、体感位置等。
    • 描述符:心率单位(如 BPM)。
  2. 设备信息

    • 服务:设备信息服务。
    • 特性:制造商名称、型号、硬件版本等。
  3. 环境传感器

    • 服务:环境传感器服务。
    • 特性:温度、湿度、压力等。

GATT 的特点

  1. 灵活性

    • GATT 允许开发者自定义服务和特性,以满足特定需求。
  2. 标准化

    • 蓝牙 SIG(Special Interest Group)定义了许多标准服务(如心率服务、电池服务等),便于设备间互操作。
  3. 低功耗

    • GATT 是蓝牙低功耗协议的一部分,适合电池供电设备。
  4. 事件驱动

    • 服务器可以主动向客户端发送数据(如通知),无需客户端频繁轮询。

总结

GATT 是蓝牙低功耗通信的核心协议,它通过服务、特性和描述符的层次结构,提供了一种标准化的方式来组织和访问设备上的数据。GATT 的灵活性和标准化特性使其成为物联网设备(如传感器、可穿戴设备等)通信的首选协议。

猜你喜欢

转载自blog.csdn.net/qq_39777550/article/details/147003726
今日推荐