第3章 BLE协议深度解析:GAP与GATT、服务与特征值、广播与扫描、连接参数
本章聚焦蓝牙低功耗(BLE)协议栈的核心层,重点拆解GAP/GATT、服务/特征值、广播/扫描机制以及连接参数配置。面试中常通过“从广播到连接的数据流向”或“参数选择对功耗的影响”来考察候选人对协议的理解深度和系统性思维。
面试问答卡片
📌 面试问题:请解释GAP和GATT在BLE协议栈中的作用和区别。
面试官考察点:是否理解BLE分层架构;能否区分连接管理与数据通信;是否知道广播时协议的选择依据。
回答框架:① 简述BLE协议栈层次(Controller / Host / Application);② GAP定义角色(Broadcaster、Observer、Peripheral、Central)和连接流程;③ GATT定义数据交互的层次结构(Service→Characteristic→Value);④ 对比:GAP管“谁与谁连”,GATT管“连上后传什么”。
简短示例回答:GAP负责设备发现、连接建立和角色分配,例如外设通过广播等待中心连接;GATT建立在连接之上,通过服务(Service)和特征值(Characteristic)组织数据。简单说,GAP解决“谁能连、怎么连”,GATT解决“连上后怎么传数据”。
可能追问:① BLE广播时GAP角色有哪些?② GATT中一个特征值可以包含哪些属性?③ 低功耗模式下GAP如何控制扫描间隔?
避坑提醒:❌ 不要混用GAP和GATT的功能,如说“GAP用于传输数据”;✅ 强调GAP是连接管理层,GATT是应用数据层。
📌 面试问题:请描述BLE中服务(Service)和特征值(Characteristic)的关系,以及如何实现数据通信?
面试官考察点:是否熟悉GATT结构;能否举例说明读写/通知机制;是否知道UUID与自定义服务的区别。
回答框架:① 层次结构:Profile → Service → Characteristic → Descriptor;② Service是功能集合(如心率服务0x180D),包含多个Characteristic;③ Characteristic包含Value和属性(Read/Write/Notify/Indicate);④ 通信过程:客户端发现服务→写入CCCD开启通知→服务端主动推送数据。
简短示例回答:Service是一组相关功能的集合,例如电池服务包含一个“电量水平”Characteristic,支持Notify属性。外设通过GATT Server提供该特征值,手机作为Client读取或订阅通知,当电量变化时外设自动推送数据,实现低功耗实时通信。
可能追问:① CCCD(Client Characteristic Configuration Descriptor)的作用是什么?② 一个Service最多能有多少个Characteristic?③ 如何通过GATT实现大数据分片传输?
避坑提醒:❌ 不要认为Characteristic只能存储单一数据,实际可包含多个字段(封装在Value里);✅ 记住Notify比Indicate更快但无ACK,适合丢包可容忍的场景。
📌 面试问题:广播和扫描过程中,蓝牙设备如何发现彼此?连接参数如何影响功耗和性能?
面试官考察点:是否掌握广播类型(ADV_IND/ADV_DIRECT_IND等);能否分析连接参数(间隔、延迟、超时)对功耗和延迟的权衡;是否知道主动扫描与被动扫描的区别。
回答框架:① 广播设备在三个信道(37/38/39)周期发送ADV包,携带设备信息;② 扫描设备监听并可能发送SCAN_REQ获取扫描响应数据(主动扫描);③ 连接参数由连接请求指定:连接间隔(7.5ms-4s)、从机延迟(0-499个事件)、监督超时(100ms-32s);④ 间隔越小功耗越高、延迟越低;从机延迟允许设备跳过部分连接事件以省电。
简短示例回答:广播设备在三个信道发送ADV_PDU,扫描端监听并决定是否发起连接。连接参数中,连接间隔影响功耗和实时性:间隔短(如30ms)延迟低但耗电;间隔长(如400ms)省电但响应慢。从机延迟可额外让从机休眠1-3个事件,进一步节省功耗,适合低频率数据上报场景。
可能追问:① 主动扫描和被动扫描的区别?② 连接参数协商过程由谁发起?③ 如何根据应用(如鼠标vs温度传感器)选择合适的连接间隔?
避坑提醒:❌ 不要忽略监督超时(Supervision Timeout)必须大于连接间隔乘(1+从机延迟),否则连接容易断开;✅ 面试时主动说明参数配置的安全性检查,体现工程意识。
💡 核心提炼:BLE协议面试的关键在于理清“分层职责”和“参数权衡”。GAP/GATT天然对应“连接管理”与“数据通信”两个层次;广播/扫描是发现机制,连接参数是功耗与性能的平衡杠杆。回答时多用“谁、什么、如何”来结构化表达,避免零散记忆。