1. BLE吞吐测试概述:什么是吞吐量、为什么重要、测试场景分类

吞吐量——这个词你肯定不陌生。但说真的,很多人一上来就问我:「老师,BLE到底能跑多快?」

嗯,这个问题其实没那么简单。吞吐量不是固定的数字,它跟你用的芯片、协议栈配置、空中环境、甚至测试方法都有关系。我做了这么多年蓝牙开发,见过太多人把「理论速率」和「实际吞吐」混为一谈,结果产品量产了才发现性能不达标。

这一章,我们先打好基础。把吞吐量的概念、重要性、以及测试场景理清楚。后面再一步步动手测。

1.1 什么是BLE吞吐量?

吞吐量,说白了就是单位时间内成功传输的有效数据量。单位通常是 bps(bits per second)或 KB/s、MB/s。

注意我强调的「有效」两个字。你发出去100个包,对方只收到了80个,那吞吐量只能按80个算。重传的、丢掉的、协议开销的,都不算。

举个例子:

  • BLE 4.2 的理论速率是 1 Mbps
  • 但实际应用层吞吐,我测下来通常在 300~700 Kbps 之间
  • BLE 5.0 引入了 2M PHY,理论 2 Mbps,实际能到 1.2~1.4 Mbps 左右

核心公式:

实际吞吐量 = (有效数据字节数 × 8) / 总传输时间

总传输时间 = 连接间隔 × 连接事件数 + 重传时间 + 协议处理延迟

你想想看,协议栈每发一个包,都要走完「应用层 → 主机层 → 控制器层 → 空中 → 对端控制器 → 对端主机 → 对端应用」这么长的链路。每一层都有开销。所以实际吞吐永远低于理论值。

1.2 为什么吞吐量测试这么重要?

我遇到过不止一个项目,开发阶段功能跑得挺好,一到客户现场就崩了。为什么?因为客户要的是「每秒传 500 KB 文件」,而我们只在实验室里测了「能不能连上、能不能发几条指令」。

吞吐量测试的重要性,我总结为三点:

  1. 验证产品性能是否达标——你的产品标称「支持 BLE 5.0 高速传输」,那实际能跑多少?客户会拿这个数据验收。
  2. 发现协议栈和硬件瓶颈——吞吐上不去,可能是 MTU 没配大、可能是连接间隔太短、也可能是射频干扰。不测,你永远不知道问题在哪。
  3. 保证用户体验——OTA 升级、日志传输、固件下载,这些场景用户等不起。吞吐太低,用户直接退货。

避坑提醒:

我曾经在一个项目中,芯片手册写的是「BLE 5.0 2M PHY 支持」,结果实际测下来吞吐只有 400 Kbps。查了两周才发现,是协议栈的 DLE(数据长度扩展)没使能。所以,不要相信手册,要相信你亲手测出来的数据。

1.3 测试场景分类

吞吐测试不是一把尺子量到底。不同的场景,关注点完全不同。我个人习惯把测试场景分成三类:

场景类型 典型应用 核心关注点 常见瓶颈
点对点吞吐 手机 ↔ 设备、设备 ↔ 设备 最大有效数据速率 PHY、MTU、连接间隔
多连接吞吐 网关同时连接多个传感器 总吞吐 vs 单连接吞吐 调度策略、内存带宽
干扰环境吞吐 Wi-Fi 共存、多 BLE 设备同区域 抗干扰能力、重传率 射频设计、跳频算法

咱们这门课,主要聚焦在 点对点吞吐 上。因为这是最基础、最常用的场景。你把这个搞明白了,多连接和干扰场景自然能举一反三。

1.4 影响吞吐量的关键因素

这里我列一个清单,都是我在项目中踩过坑的地方:

  • PHY(物理层):1M、2M、Coded(125K/500K)。2M 最快,但距离短;Coded 最慢,但穿墙好。
  • MTU(最大传输单元):默认 23 字节,可以协商到 512 甚至更大。MTU 太小,吞吐直接腰斩。
  • DLE(数据长度扩展):BLE 4.2 引入,让单个包能装更多数据。不使能,一次只能发 27 字节;使能后能到 251 字节。
  • 连接间隔:7.5 ms ~ 4 s。间隔越短,吞吐越高,但功耗也越大。
  • CPU 处理能力:协议栈处理需要时间。MCU 太慢,吞吐上不去。
  • 空中干扰:Wi-Fi、Zigbee、甚至微波炉,都会抢 2.4 GHz 频段。

我的经验:

刚开始做 BLE 吞吐测试时,我建议你先把 MTU 设到 247、连接间隔设到 7.5 ms、PHY 选 2M。这样能排除大部分配置问题,直接看到芯片的「底力」。然后再逐步调整参数,找到性能和功耗的平衡点。

1.5 本章知识体系

下面这张图,帮你把这一章的核心逻辑串起来:

BLE吞吐测试知识体系(第1章) BLE吞吐量 什么是吞吐量 为什么重要 测试场景分类 有效数据 vs 理论速率 单位:bps / KB/s 验证产品性能 发现协议栈/硬件瓶颈 保证用户体验 点对点吞吐 多连接吞吐 干扰环境吞吐 本章重点:理解概念 → 明确价值 → 分清场景 → 掌握影响因素

1.6 小结

这一章我们聊了三个核心问题:

  • 吞吐量是什么——有效数据速率,不是理论速率
  • 为什么重要——验证性能、发现瓶颈、保证体验
  • 测试场景分类——点对点、多连接、干扰环境