第3章 BLE核心机制高频问题:广播、扫描、连接、断连、MTU、PHY
BLE核心机制是蓝牙嵌入式面试的必考模块,覆盖从设备发现到数据交互的完整链路。本章围绕广播→扫描→连接→参数协商→断连五大阶段,拆解面试官最常追问的6个技术点,提供可直接套用的回答框架与项目话术。
| 机制 | 关键参数 | 典型值/范围 | 面试考察重点 |
|---|---|---|---|
| 广播 | 广播间隔、通道、类型 | 20 ms – 10.24 s;37/38/39 ch | 功耗与发现速度的权衡 |
| 扫描 | 扫描窗口、间隔、模式 | 窗口 10 ms – 10.24 s;被动/主动 | 扫描参数对功耗的影响 |
| 连接 | 连接间隔、延迟、监督超时 | 7.5 ms – 4 s;延迟 0–499 | 连接参数计算与优化 |
| MTU | MTU 大小 | 默认 23 B,最大 247 B | MTU 协商时机与吞吐量 |
| PHY | 物理层速率 | 1M / 2M / Coded | 速率与距离的平衡 |
| 断连 | 断连原因码、监督超时 | 0x08 – 0x3E;100 ms – 32 s | 断连处理与重连策略 |
🎯 面试问题 1:请解释 BLE 的广播与扫描机制,并说明关键参数如何影响功耗和发现速度。
- 定义角色:Advertiser 发出广播,Scanner 接收扫描。
- 广播详解:37/38/39 三个通道,间隔 20 ms–10.24 s,可含广播数据与扫描响应数据。
- 扫描详解:被动扫描只收不答;主动扫描可发扫描请求获取更多数据。
- 参数影响:广播/扫描间隔越小,发现越快但功耗越高;间隔越大则反之。
- 项目落地:根据产品场景(如门锁 vs 手环)选择合适的间隔与模式。
BLE 广播在 37/38/39 三个专用通道上以可配间隔(如 100 ms)发出数据包,包含设备信息和广播数据。扫描分被动和主动两种:被动扫描仅监听,主动扫描可额外发起扫描请求获取更完整数据。广播间隔越短设备发现越快,但功耗线性上升;扫描窗口越大越容易捕获广播,但也更耗电。实际项目中,我对省电类设备采用 1 s 广播间隔 + 被动扫描,对交互类设备采用 50 ms 间隔 + 主动扫描。
- 广播数据包最大多少字节?(31 B,扩展广播可达 251 B)
- 如何避免广播冲突?(使用随机延迟 + 通道自适应)
- 主动扫描的扫描请求会消耗谁的电量?(发送方和接收方都有消耗)
🎯 面试问题 2:BLE 连接建立过程是怎样的?断连机制如何工作?
- 连接建立:Initiator 收到广播后发送连接请求,包含连接间隔、延迟、监督超时等参数。
- 连接参数:间隔 7.5 ms–4 s,延迟 0–499 个事件,监督超时 100 ms–32 s。
- 数据交互:连接后按协商间隔定期唤醒交换数据。
- 断连触发:任意端发断连请求(含原因码),或监督超时自动断开。
- 处理策略:记录断连原因,实现自动重连与异常上报。
BLE 连接由 Initiator 在收到可连接广播后发送 CONNECT_REQ 建立,包含连接间隔(如 30 ms)、延迟(0)和监督超时(2 s)。连接后双方按间隔定时唤醒通信。断连可由任一端发起断连请求并携带原因码(如 0x13 表示用户终止),也可因监督超时触发。我在项目中增加了断连原因解析模块,对超时断连触发重连,对主动断连则释放资源,避免无效重试。
- 连接间隔 7.5 ms 和 100 ms 分别适合什么场景?(低延迟交互 vs 省电数据同步)
- 监督超时如何计算?(超时 = 间隔 × (延迟 + 1) × 超时系数)
- 如何处理断连后的资源释放?(清除 GATT 缓存、关闭连接句柄、重置状态机)
🎯 面试问题 3:BLE 的 MTU 和 PHY 分别如何协商?对数据传输有什么影响?
- MTU 协商:Client 发 Exchange MTU Request,Server 回 Response,取较小值。
- MTU 影响:默认 23 B,最大 247 B;越大单包吞吐量越高,省电省时间。
- PHY 选择:通过 PHY Update 流程切换 1M / 2M / Coded。
- PHY 影响:2M 速率翻倍但距离减半;Coded 距离增强但速率降低。
- 优化策略:高速场景用 2M + 大 MTU,远距离用 Coded + 小 MTU。
MTU 协商在连接建立后由 Client 发起,通过 Exchange MTU Request/Response 完成,双方取较小值。默认 23 字节,协商后可达 247 字节,显著提升大包传输效率。PHY 通过 PHY Update 流程切换,2M PHY 适用于高吞吐场景(如 OTA 升级),Coded PHY 适用于远距离弱信号场景。我在项目中针对固件升级使用了 2M + MTU 247 的组合,升级时间缩短了 60%。
- MTU 协商失败会怎样?(默认 23 B,通信降级但不会断连)
- 2M PHY 实际测得的速率能达到多少?(约 1.4 Mbps,受间隔和协议开销影响)
- Coded PHY 的 S=2 和 S=8 有什么区别?(S=8 抗干扰更强但速率更低)
📁 项目案例:智能穿戴设备 BLE 通信模块
| 项目名称 | 智能运动手环 BLE 数据同步与通知系统 |
| 业务背景 | 实现手环与手机 App 之间的实时心率、步数同步,以及来电/消息推送通知,支持 iOS 和 Android 双平台。 |
| 规模指标 | 日活跃用户 12 万 + ;连接成功率 99.2% ;平均数据同步延迟 < 2 s ;OTA 升级成功率 98.7% 。 |
| 技术栈 | BLE 5.0 、Nordic nRF52832 、Android BLE API 、iOS CoreBluetooth 、RTOS (FreeRTOS) 、GATT 自定义 Service |
| 核心难点 |
|
| 面试高频追问 |
|
| 可迁移回答话术 |
话术模板:“在 [项目] 中我们遇到了 [具体问题],通过 [方案] 解决了 [指标] 的瓶颈。核心是平衡了 [参数A] 和 [参数B] 的 trade-off,最终在 [场景] 下达到了 [量化结果] 。这个思路也可以应用到 [其他场景] 。”
示例:“在手环项目中功耗与延迟冲突,我们通过动态广播间隔平衡了二者——运动模式 50 ms 保证实时性,待机 1 s 延长续航,最终在保持 99% 连接成功率的同时,待机功耗降低了 40%。这个动态策略也可以用于其他穿戴或 IoT 设备。” |