4. 蓝牙/BLE测试:连接建立、吞吐量测试、功耗测试、射频指标

蓝牙测试,尤其是BLE测试,是我这些年打交道最多的环节之一。说实话,很多产品死就死在蓝牙上——连不上、断连、功耗高得离谱。你想想看,一个手环用户戴了一天就没电了,谁还愿意用?

这一章,我带你把蓝牙/BLE测试的四个核心维度捋清楚。分别是:连接建立、吞吐量、功耗、射频指标。每个点我都会结合项目经验来讲,希望能帮你少走弯路。

4.1 连接建立测试

连接建立,说白了就是设备能不能快速、稳定地连上手机。我见过太多设备,扫描半天搜不到,或者连上了几秒就断。嗯,这里要注意,连接建立测试不只是测“能不能连”,更要测“连得快不快”、“稳不稳”。

4.1.1 测试场景

  • 首次连接:设备出厂后第一次与手机配对。我建议至少测50次,记录成功率和平均耗时。
  • 重连测试:设备离开范围再回来,看能否自动重连。我曾经遇到一个项目,重连成功率只有60%,后来发现是广播间隔设置太短了。
  • 多设备干扰:周围同时有10台以上BLE设备在广播,看你的设备还能不能稳定连接。

4.1.2 关键指标

指标要求说明
连接建立时间< 2秒从发起连接到连接成功
连接成功率> 99%50次测试中失败不超过1次
重连成功率> 95%离开10米再回来,10秒内重连
我的小技巧:测试连接建立时,记得用频谱仪观察广播信道。如果三个广播信道(37/38/39)上有明显的干扰,连接时间一定会变长。我习惯先扫一遍环境,再开始测试。

4.2 吞吐量测试

吞吐量,说白了就是数据能跑多快。对于可穿戴设备,比如手表要传心率波形、耳机要传音频,吞吐量不够就会卡顿。我个人习惯用DUT(被测设备)测试仪之间跑数据流来测。

4.2.1 测试方法

  1. 设置BLE连接参数:连接间隔设为7.5ms(最小值),PDU长度设为251字节。
  2. 启动数据流:从DUT向测试仪发送数据,持续30秒。
  3. 记录吞吐量:测试仪统计接收到的有效字节数。

4.2.2 代码示例(测试脚本片段)

# BLE吞吐量测试脚本(Python伪代码)
def test_throughput(dut):
    # 设置连接参数
    dut.set_connection_interval(7.5)  # 单位ms
    dut.set_pdu_length(251)           # 单位字节
    
    # 启动数据流
    dut.start_data_stream(duration=30)  # 持续30秒
    
    # 读取结果
    bytes_received = tester.get_bytes_received()
    throughput = bytes_received / 30  # 单位bps
    
    return throughput
注意:吞吐量测试时,一定要确保测试环境没有其他BLE设备干扰。我曾经有一次测出来吞吐量只有理论值的60%,排查了半天,发现是隔壁工位的同事在测另一台设备,两个设备在同一个信道上打架。

4.3 功耗测试

功耗测试,这是可穿戴设备的命门。你想想看,一个手环如果一天一充,用户肯定骂娘。我建议把功耗测试分成三个场景:待机功耗连接功耗数据传输功耗

4.3.1 测试场景与指标

场景典型功耗测试方法
待机(未连接)< 10 μA设备广播但不连接,测30分钟平均电流
连接但无数据< 50 μA建立连接后,不传输数据,测10分钟
数据传输(高负载)< 5 mA以最大吞吐量传输数据,测5分钟

4.3.2 我的避坑指南

我曾经有一个项目,待机功耗测出来只有8μA,看起来很好。但实际用户使用中,电池两天就耗光了。后来发现,问题出在广播间隔上——待机时广播间隔设得太短(20ms),导致设备一直在发射。嗯,这里要记住:待机功耗测试时,广播间隔至少要设为1秒以上,否则测出来的数据没有参考价值。

核心要点:功耗测试要用高精度万用表或专用功耗分析仪,采样率至少1kHz。普通万用表测平均电流还行,但测峰值电流完全不准。

4.4 射频指标测试

射频指标,这是蓝牙测试的硬功夫。说白了,就是看你的设备发射信号强不强、接收灵敏度高不高。我习惯用综测仪(如Anritsu MT8852B或R&S CMW500)来测。

4.4.1 TX Power(发射功率)

发射功率决定了设备的通信距离。BLE的发射功率范围通常是-20 dBm到+10 dBm。我建议测三个频点:最低频点(2402 MHz)中间频点(2440 MHz)最高频点(2480 MHz)

频点目标功率允许偏差
2402 MHz+4 dBm±2 dB
2440 MHz+4 dBm±2 dB
2480 MHz+4 dBm±2 dB
经验之谈:如果三个频点的功率偏差超过2 dB,说明天线匹配有问题。我遇到过一款手环,低频点功率正常,高频点掉了5 dB,后来发现是天线走线太长,寄生电容太大。

4.4.2 RX Sensitivity(接收灵敏度)

接收灵敏度,说白了就是设备能收到多弱的信号。BLE标准要求灵敏度至少达到-70 dBm(误包率< 30.8%),但实际产品我建议做到-90 dBm以下。

测试方法很简单:综测仪以不同功率发射数据包,DUT接收并统计误包率(PER)。当PER超过30.8%时,对应的发射功率就是灵敏度。

# 接收灵敏度测试流程
1. 设置综测仪发射功率为 -70 dBm
2. DUT接收1000个数据包,统计PER
3. 如果PER < 30.8%,降低功率1 dB,重复步骤2
4. 直到PER刚好超过30.8%,记录当前功率
重要提醒:灵敏度测试必须在屏蔽箱中进行,否则环境噪声会严重影响结果。我曾经在开放环境下测灵敏度,测出来-95 dBm,高兴得不行。后来放到屏蔽箱里一测,实际只有-82 dBm。嗯,从那以后我再也不敢偷懒了。

4.5 总结

蓝牙/BLE测试,四个维度缺一不可。连接建立测的是用户体验,吞吐量测的是数据能力,功耗测的是续航,射频指标测的是硬件底子。我个人的习惯是:先过射频指标,再过功耗,最后测连接和吞吐量。因为射频不过,后面测了也白测。

好了,这一章就到这里。下一章我们聊聊传感器测试,那可是可穿戴设备的“眼睛”和“耳朵”。