BLE 示例
在 BLE (Bluetooth Low Energy) 协议栈中,设备间的通信由不同层协同完成。其中,BLE GAP(Generic Access Profile)负责 BLE 设备的通用访问配置,例如设备广播、扫描、连接及连接参数管理,实现设备发现与建立通信的功能。而GATT(Generic Attribute Profile)层定义了设备间如何组织、访问和传输属性(Attribute)数据。通过“服务(Service)—特征(Characteristic)—描述符(Descriptor)”的层级结构来管理设备数据,使客户端能够以统一方式发现和操作服务器端的功能和状态。进一步说明请参考 GATT 层。
在 GATT 架构中,GATT Server 是存放属性数据的设备,负责暴露服务和特征给客户端;GATT Client 则通过读取、写入或订阅特征来获取数据或控制设备。简单来说,Server 提供数据接口,Client 使用这些接口进行交互。
该功能常用于 BLE 外设的数据采集、状态报告、控制指令接收等场景。例如在智能手环、蓝牙音箱或传感器设备中,GATT Server 提供核心数据接口,GATT Client(如手机应用)通过这些接口与设备通信。
此文档整理了 ESP-IDF 官方提供的两个 BLE 示例:GATT Server Service Table 和 GATT Client。示例使用 Bluedroid 协议栈,如需参考 NimBLE 实现,可查看官方 NimBLE 示例说明。
为便于理解与使用,文档内容分为两部分:
通用步骤文档:总结 BLE 各模式的公共流程,包括初始化、驱动配置、GAP 设置、GATT 服务与特征注册、广播与扫描、连接管理及事件处理等内容,为示例提供统一参考。
示例文档:按功能函数说明各示例的实现,公共部分通过引用通用步骤文档避免重复,仅保留示例特有的逻辑与参数设置。
该分层结构便于先在通用步骤文档中了解整体流程,再在示例文档中学习特定功能的实现细节,从而更高效地理解 BLE 模块的工作原理与设计方法。更多关于 BLE 基础知识和工作原理的内容请参考 低功耗蓝牙。