BLE 连接建立与参数优化考点定位面试官常问“BLE 从扫描到连接建立中间经历了什么”“Connection Interval 和 Latency 怎么调调错了会怎样”这个章节在蓝牙开发面试中属于中高频考点权重约 7/10。通常出现在初级岗位考察连接流程是否清晰能否说出关键参数中高级岗位追问参数优化逻辑、功耗与吞吐量的权衡、实际调试经验典型问法“说说 BLE 连接的建立过程从 Advertiser 和 Scanner 两个角色分别讲”“Connection Interval 设成 7.5ms 和 100ms 分别有什么影响”“Slave Latency 是干什么的设成 0 和设成 10 有什么区别”1. BLE 连接建立流程核心概念BLE 连接是两个设备通过广播-扫描-连接请求三步握手建立一条双向、分时、跳频的数据通道。原理展开第一步广播Advertising外设Peripheral以固定间隔Advertising Interval典型值 20ms~10.24s发送广播包广播包包含设备地址、设备名称、服务 UUID、发射功率等广播类型分三种可连接广播、可扫描广播、不可连接广播面试常考区分第二步扫描Scanning中央设备Central在扫描窗口内监听广播信道37/38/39收到广播后可以选择发送扫描请求Scan Request外设回复扫描响应Scan Response——这步不是必须的但能获取更多信息第三步连接请求Connection Request中央设备发送 CONNECT_REQ PDU包含连接参数Connection Interval、Slave Latency、Supervision Timeout跳频算法种子Channel Map、Hop Increment两个设备的访问地址Access Address外设收到后回复一个空包连接建立连接建立后双方在约定的 Connection Interval 内交替收发数据包使用跳频机制在 37 个数据信道上通信。面试常考细节广播信道和数据信道是分开的广播只在 37/38/39 三个信道连接后跳到 37 个数据信道。面试官可能问“为什么蓝牙要保留三个广播信道”——为了避开 Wi-Fi 的 1/6/11 信道干扰。CONNECT_REQ 的时序窗口外设发送广播后会在 150μs 内开启接收窗口等待连接请求。如果中央设备在这个窗口外发送连接会失败。这就是为什么广播间隔和扫描窗口需要匹配。连接建立的“竞态条件”多个中央设备同时扫描同一个外设时谁先发送 CONNECT_REQ 谁就建立连接。外设无法拒绝——这是 BLE 设计决定的。面试话术参考“BLE 连接建立本质上是外设主动暴露自己中央设备主动发起连接的过程。外设通过广播宣告存在中央设备在扫描到广播后可以发送连接请求。关键点是连接请求必须在外设的接收窗口内到达否则连接失败。实际开发中我遇到过因为广播间隔设得太短比如 20ms导致中央设备来不及处理或者设得太长比如 1s导致连接建立太慢的问题。后来通过调整广播间隔到 100ms同时让中央设备连续扫描才达到平衡。”2. 核心连接参数详解参数含义典型值面试高频考点Connection Interval两次连接事件之间的时间间隔单位 1.25ms7.5ms ~ 4000ms影响吞吐量和功耗Slave Latency从设备可以跳过多少个连接事件而不响应0 ~ 499影响功耗但会引入延迟Supervision Timeout连接超时时间单位 10ms100ms ~ 32000ms必须大于 (1Latency)×Interval×22.1 Connection Interval核心概念两个设备约定每隔多少时间交换一次数据。原理每个连接事件Connection Event中Master 先发Slave 后发一来一回算一次数据交换Interval 越小数据交换越频繁吞吐量越高但功耗也越高Interval 越大设备可以更长时间休眠功耗低但延迟大面试常考细节最小间隔限制iOS 要求 Connection Interval ≥ 20ms15 个 1.25ms 单位Android 通常允许 7.5ms但部分设备有硬件限制吞吐量计算公式理论吞吐量 ≈ (251 字节 × 包数/事件) / Interval。例如 Interval7.5ms每个事件发 4 包吞吐量 ≈ 251×4/0.0075 ≈ 133KB/s实际吞吐量远低于理论值因为要考虑 PHY 速率1Mbps/2Mbps、包间隔150μs、CRC 校验等面试话术“Connection Interval 是 BLE 连接最核心的参数。调小能提高吞吐量但代价是功耗上升。我做过一个项目需要传输音频数据把 Interval 从 50ms 降到 15ms吞吐量从 20KB/s 提升到 60KB/s但设备续航从 3 天降到了 1 天。后来用了 2M PHY 和 Data Length Extension在 30ms 的 Interval 下达到了 80KB/s功耗反而更低。”2.2 Slave Latency核心概念从设备可以“偷懒”不回应 Master 的轮询但最多能连续跳过多少个连接事件。原理正常情况下每个连接事件 Slave 都必须回复即使没有数据也要回空包设置了 Latency 后Slave 可以连续跳过 N 个连接事件不回复只在第 N1 个事件回复这允许 Slave 在无数据时更长时间休眠面试常考细节Latency 不减少 Master 的功耗Master 仍然在每个 Interval 发送轮询包只是 Slave 可以不回Latency 引入的延迟最坏情况下数据需要等待 (Latency1)×Interval 才能发送。例如 Interval50msLatency9最坏延迟500msSupervision Timeout 必须大于 (1Latency)×Interval×2否则连接会因超时断开对比表格场景Latency0Latency10 (Interval50ms)Slave 功耗高每 50ms 唤醒一次低每 550ms 唤醒一次最坏延迟50ms550ms适用场景实时控制、音频传感器数据上报、低功耗设备2.3 参数优化策略面试常考问法“给你一个智能门锁电池供电要求 1 年续航偶尔开锁时响应时间 1s你怎么配参数”参考答案思路连接建立阶段广播间隔设 500ms兼顾发现速度和功耗扫描窗口设 300ms连接参数协商初始连接Interval50msLatency0保证首次交互快速空闲后通过 Connection Parameter Update Request 改为 Interval500msLatency10这样空闲时实际唤醒间隔 (101)×500ms 5.5s功耗极低开锁时再次更新参数到 Interval20msLatency0保证响应 100msSupervision Timeout设为 10s大于 (110)×500ms×2 11s留余量3. 进阶追问连接参数协商过程核心概念连接参数不是一成不变的连接建立后双方可以通过Connection Parameter Update Procedure协商修改。原理通常由 Slave 发起请求因为 Slave 更清楚自己的功耗需求请求包含最小 Interval、最大 Interval、Latency、TimeoutMaster 可以接受、拒绝或提出自己的建议值iOS 有更严格的参数要求拒绝率较高面试常考细节iOS 的“黑盒”限制iOS 只允许在特定范围内修改参数且不接受过于激进的请求。很多开发者遇到“Android 能连iOS 连不上”的问题就是因为参数不符合 iOS 规范协商失败的处理如果 Master 拒绝Slave 可以继续使用当前参数或者断开重连LL_CONNECTION_PARAM_REQ PDU这是链路层的数据包不是 ATT/GATT 层的面试话术“连接参数协商是 BLE 开发中容易踩坑的地方。我遇到过一个问题在 Android 上可以正常修改 Interval 到 7.5ms但在 iOS 上总是失败。后来查了 Apple 的 BLE 规范发现 iOS 要求 Interval 必须是 15 的倍数即 18.75ms 以上而且 Latency 不能超过 4。最后我们把 Interval 设为 30msLatency 设为 0两边都正常工作了。”4. 举一反三变化问法“BLE 连接建立时如果两个设备同时发起连接请求会怎样”答BLE 协议规定了 Master 和 Slave 角色只有中央设备可以发起连接。如果两个设备都配置为 Central它们不会互相连接——这是协议设计的单向性。“Connection Interval 和 MTU 有什么关系”答两者独立。MTU 决定每个数据包的最大长度默认 23 字节可协商到 247 字节Interval 决定发送频率。优化吞吐量需要同时调整两者。“为什么 BLE 连接会断开怎么排查”答常见原因Supervision Timeout 触发、信号干扰、参数不匹配、设备进入休眠。排查方法抓 air log用 Ellisys 或 Nordic nRF Sniffer看断开前的最后一个包是什么。“BLE 5.0 的 Coded PHY 对连接参数有什么影响”答Coded PHY 速率低125Kbps/500Kbps但传输距离远。连接参数需要相应调整Interval 可以设大一些因为每个包传输时间更长但 Supervision Timeout 也要相应增大。总结面试官想听什么不是背参数面试官不关心你记得 Interval 的单位是 1.25ms而是你知不知道为什么这么设计要有对比思维能主动说出“如果 Interval 小会怎样大会怎样”要有实际经验能举出真实项目中的参数配置和踩坑经历要有系统思维能把连接参数和功耗、吞吐量、延迟、兼容性串起来讲一句话记住连接建立是“广播-扫描-连接请求”三步握手参数优化是“功耗-延迟-吞吐量”三角权衡。
BLE 连接建立与参数优化
发布时间:2026/6/3 1:36:05
BLE 连接建立与参数优化考点定位面试官常问“BLE 从扫描到连接建立中间经历了什么”“Connection Interval 和 Latency 怎么调调错了会怎样”这个章节在蓝牙开发面试中属于中高频考点权重约 7/10。通常出现在初级岗位考察连接流程是否清晰能否说出关键参数中高级岗位追问参数优化逻辑、功耗与吞吐量的权衡、实际调试经验典型问法“说说 BLE 连接的建立过程从 Advertiser 和 Scanner 两个角色分别讲”“Connection Interval 设成 7.5ms 和 100ms 分别有什么影响”“Slave Latency 是干什么的设成 0 和设成 10 有什么区别”1. BLE 连接建立流程核心概念BLE 连接是两个设备通过广播-扫描-连接请求三步握手建立一条双向、分时、跳频的数据通道。原理展开第一步广播Advertising外设Peripheral以固定间隔Advertising Interval典型值 20ms~10.24s发送广播包广播包包含设备地址、设备名称、服务 UUID、发射功率等广播类型分三种可连接广播、可扫描广播、不可连接广播面试常考区分第二步扫描Scanning中央设备Central在扫描窗口内监听广播信道37/38/39收到广播后可以选择发送扫描请求Scan Request外设回复扫描响应Scan Response——这步不是必须的但能获取更多信息第三步连接请求Connection Request中央设备发送 CONNECT_REQ PDU包含连接参数Connection Interval、Slave Latency、Supervision Timeout跳频算法种子Channel Map、Hop Increment两个设备的访问地址Access Address外设收到后回复一个空包连接建立连接建立后双方在约定的 Connection Interval 内交替收发数据包使用跳频机制在 37 个数据信道上通信。面试常考细节广播信道和数据信道是分开的广播只在 37/38/39 三个信道连接后跳到 37 个数据信道。面试官可能问“为什么蓝牙要保留三个广播信道”——为了避开 Wi-Fi 的 1/6/11 信道干扰。CONNECT_REQ 的时序窗口外设发送广播后会在 150μs 内开启接收窗口等待连接请求。如果中央设备在这个窗口外发送连接会失败。这就是为什么广播间隔和扫描窗口需要匹配。连接建立的“竞态条件”多个中央设备同时扫描同一个外设时谁先发送 CONNECT_REQ 谁就建立连接。外设无法拒绝——这是 BLE 设计决定的。面试话术参考“BLE 连接建立本质上是外设主动暴露自己中央设备主动发起连接的过程。外设通过广播宣告存在中央设备在扫描到广播后可以发送连接请求。关键点是连接请求必须在外设的接收窗口内到达否则连接失败。实际开发中我遇到过因为广播间隔设得太短比如 20ms导致中央设备来不及处理或者设得太长比如 1s导致连接建立太慢的问题。后来通过调整广播间隔到 100ms同时让中央设备连续扫描才达到平衡。”2. 核心连接参数详解参数含义典型值面试高频考点Connection Interval两次连接事件之间的时间间隔单位 1.25ms7.5ms ~ 4000ms影响吞吐量和功耗Slave Latency从设备可以跳过多少个连接事件而不响应0 ~ 499影响功耗但会引入延迟Supervision Timeout连接超时时间单位 10ms100ms ~ 32000ms必须大于 (1Latency)×Interval×22.1 Connection Interval核心概念两个设备约定每隔多少时间交换一次数据。原理每个连接事件Connection Event中Master 先发Slave 后发一来一回算一次数据交换Interval 越小数据交换越频繁吞吐量越高但功耗也越高Interval 越大设备可以更长时间休眠功耗低但延迟大面试常考细节最小间隔限制iOS 要求 Connection Interval ≥ 20ms15 个 1.25ms 单位Android 通常允许 7.5ms但部分设备有硬件限制吞吐量计算公式理论吞吐量 ≈ (251 字节 × 包数/事件) / Interval。例如 Interval7.5ms每个事件发 4 包吞吐量 ≈ 251×4/0.0075 ≈ 133KB/s实际吞吐量远低于理论值因为要考虑 PHY 速率1Mbps/2Mbps、包间隔150μs、CRC 校验等面试话术“Connection Interval 是 BLE 连接最核心的参数。调小能提高吞吐量但代价是功耗上升。我做过一个项目需要传输音频数据把 Interval 从 50ms 降到 15ms吞吐量从 20KB/s 提升到 60KB/s但设备续航从 3 天降到了 1 天。后来用了 2M PHY 和 Data Length Extension在 30ms 的 Interval 下达到了 80KB/s功耗反而更低。”2.2 Slave Latency核心概念从设备可以“偷懒”不回应 Master 的轮询但最多能连续跳过多少个连接事件。原理正常情况下每个连接事件 Slave 都必须回复即使没有数据也要回空包设置了 Latency 后Slave 可以连续跳过 N 个连接事件不回复只在第 N1 个事件回复这允许 Slave 在无数据时更长时间休眠面试常考细节Latency 不减少 Master 的功耗Master 仍然在每个 Interval 发送轮询包只是 Slave 可以不回Latency 引入的延迟最坏情况下数据需要等待 (Latency1)×Interval 才能发送。例如 Interval50msLatency9最坏延迟500msSupervision Timeout 必须大于 (1Latency)×Interval×2否则连接会因超时断开对比表格场景Latency0Latency10 (Interval50ms)Slave 功耗高每 50ms 唤醒一次低每 550ms 唤醒一次最坏延迟50ms550ms适用场景实时控制、音频传感器数据上报、低功耗设备2.3 参数优化策略面试常考问法“给你一个智能门锁电池供电要求 1 年续航偶尔开锁时响应时间 1s你怎么配参数”参考答案思路连接建立阶段广播间隔设 500ms兼顾发现速度和功耗扫描窗口设 300ms连接参数协商初始连接Interval50msLatency0保证首次交互快速空闲后通过 Connection Parameter Update Request 改为 Interval500msLatency10这样空闲时实际唤醒间隔 (101)×500ms 5.5s功耗极低开锁时再次更新参数到 Interval20msLatency0保证响应 100msSupervision Timeout设为 10s大于 (110)×500ms×2 11s留余量3. 进阶追问连接参数协商过程核心概念连接参数不是一成不变的连接建立后双方可以通过Connection Parameter Update Procedure协商修改。原理通常由 Slave 发起请求因为 Slave 更清楚自己的功耗需求请求包含最小 Interval、最大 Interval、Latency、TimeoutMaster 可以接受、拒绝或提出自己的建议值iOS 有更严格的参数要求拒绝率较高面试常考细节iOS 的“黑盒”限制iOS 只允许在特定范围内修改参数且不接受过于激进的请求。很多开发者遇到“Android 能连iOS 连不上”的问题就是因为参数不符合 iOS 规范协商失败的处理如果 Master 拒绝Slave 可以继续使用当前参数或者断开重连LL_CONNECTION_PARAM_REQ PDU这是链路层的数据包不是 ATT/GATT 层的面试话术“连接参数协商是 BLE 开发中容易踩坑的地方。我遇到过一个问题在 Android 上可以正常修改 Interval 到 7.5ms但在 iOS 上总是失败。后来查了 Apple 的 BLE 规范发现 iOS 要求 Interval 必须是 15 的倍数即 18.75ms 以上而且 Latency 不能超过 4。最后我们把 Interval 设为 30msLatency 设为 0两边都正常工作了。”4. 举一反三变化问法“BLE 连接建立时如果两个设备同时发起连接请求会怎样”答BLE 协议规定了 Master 和 Slave 角色只有中央设备可以发起连接。如果两个设备都配置为 Central它们不会互相连接——这是协议设计的单向性。“Connection Interval 和 MTU 有什么关系”答两者独立。MTU 决定每个数据包的最大长度默认 23 字节可协商到 247 字节Interval 决定发送频率。优化吞吐量需要同时调整两者。“为什么 BLE 连接会断开怎么排查”答常见原因Supervision Timeout 触发、信号干扰、参数不匹配、设备进入休眠。排查方法抓 air log用 Ellisys 或 Nordic nRF Sniffer看断开前的最后一个包是什么。“BLE 5.0 的 Coded PHY 对连接参数有什么影响”答Coded PHY 速率低125Kbps/500Kbps但传输距离远。连接参数需要相应调整Interval 可以设大一些因为每个包传输时间更长但 Supervision Timeout 也要相应增大。总结面试官想听什么不是背参数面试官不关心你记得 Interval 的单位是 1.25ms而是你知不知道为什么这么设计要有对比思维能主动说出“如果 Interval 小会怎样大会怎样”要有实际经验能举出真实项目中的参数配置和踩坑经历要有系统思维能把连接参数和功耗、吞吐量、延迟、兼容性串起来讲一句话记住连接建立是“广播-扫描-连接请求”三步握手参数优化是“功耗-延迟-吞吐量”三角权衡。