1. BLE ATT协议基础概念解析
在蓝牙低功耗(BLE)技术体系中,Attribute Protocol(ATT)扮演着核心角色。作为BLE协议栈的数据传输基础层,ATT定义了设备间数据交换的基本规则和格式。理解ATT的工作原理,是掌握BLE开发的关键一步。
1.1 ATT在BLE协议栈中的位置
BLE协议栈采用分层架构设计,ATT位于逻辑链路控制与适配协议(L2CAP)层之上。具体来看:
- 物理层(PHY):负责2.4GHz频段的无线信号调制与解调
- 链路层(LL):处理广播、连接建立和数据包加密
- 主机控制器接口(HCI):连接控制器和主机的标准接口
- L2CAP层:提供逻辑信道复用和简单数据分段
- ATT层:管理属性数据的存储和访问
- GATT层:在ATT基础上定义服务发现和特征操作的标准方法
ATT固定使用L2CAP的信道ID 0x0004进行通信,这种设计确保了协议栈各层间的明确分工和高效协作。
1.2 客户端-服务器模型
ATT采用经典的客户端-服务器(C/S)架构:
-
ATT服务器:作为数据持有者,通常由资源受限的设备(如传感器节点)实现。服务器维护一个属性表,包含设备提供的所有数据和服务。
-
ATT客户端:作为数据访问者,通常是功能更强的设备(如智能手机)。客户端通过发送请求来读取或修改服务器上的属性值。
这种非对称设计充分考虑了BLE设备的资源差异。在实际应用中,一个设备可以同时充当客户端和服务器,实现双向数据交换。
提示:虽然GATT也使用相同的C/S模型,但GATT更关注服务发现和特征操作,而ATT处理底层的数据传输。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 属性(Attribute)详解
2.1 属性的组成要素
ATT协议的核心概念是属性,每个属性包含四个关键部分:
-
句柄(Handle):16位唯一标识符,相当于属性的内存地址。客户端通过句柄访问特定属性。
-
类型(Type):用UUID(16位或128位)表示,定义属性的语义和格式。例如:
- 0x2800:主服务声明
- 0x2803:特征声明
- 0x2A19:电池电量
-
值(Value):实际存储的数据,
