物理层与射频基础:频段与信道、GFSK调制、发射功率与接收灵敏度、射频测试入门
各位同学,咱们今天聊聊BLE的物理层。说白了,这就是蓝牙通信的“物理世界”。你写的代码再漂亮,最终都得靠无线电波把数据发出去。我刚开始做蓝牙开发时,总觉得射频是硬件工程师的事,软件写好就行。结果有一次,产品在实验室跑得好好的,一到客户现场就断连……嗯,从那以后我再也不敢轻视物理层了。
2.1 频段与信道
BLE工作在2.4GHz ISM频段。这个频段是开放的,全球通用。你想想看,Wi-Fi、Zigbee、微波炉……全挤在这个频段里。所以BLE的设计从一开始就考虑了抗干扰。
整个2.4GHz频段从2400MHz到2483.5MHz,BLE把它分成了40个信道。每个信道带宽2MHz。这40个信道又分成三类:
- 广播信道(3个):37信道(2402MHz)、38信道(2426MHz)、39信道(2480MHz)
- 数据信道(37个):0-36信道,用于连接后的数据传输
为什么广播信道只有3个?我个人的理解是:广播信道要避开Wi-Fi的常用信道。Wi-Fi的1、6、11信道正好卡在2.4GHz频段的三个位置,BLE的37、38、39信道就巧妙地插在它们之间。这样干扰就小多了。
核心要点:BLE的40个信道中,3个广播信道用于设备发现和连接建立,37个数据信道用于连接后的通信。信道索引从0到39,但37、38、39是广播信道,0-36是数据信道。别搞混了。
信道跳频是BLE的一大特色。连接建立后,主从设备会按照一个伪随机序列在37个数据信道之间跳变。每次连接事件换一个信道。这样做的好处很明显:如果某个信道被Wi-Fi占了,数据包丢了,下次跳过去就好了。
经验之谈:我在调试一个智能门锁项目时,发现门锁在路由器旁边经常断连。后来用抓包工具一看,BLE正好跳到了Wi-Fi占用的信道上。调整了跳频算法的信道映射表后,问题就解决了。所以,信道映射表是可以优化的,别死用默认值。
2.2 GFSK调制
BLE用的是GFSK调制。全称是高斯频移键控。名字听着唬人,其实原理不复杂。
FSK就是用两个不同的频率代表0和1。比如频率f1代表0,频率f2代表1。GFSK就是在FSK前面加了一个高斯滤波器,让频率切换变得平滑。为什么要平滑?因为陡峭的频率变化会产生高频分量,占用额外的带宽,还会干扰相邻信道。
BLE的GFSK参数如下:
| 参数 | 值 | 说明 |
|---|---|---|
| 调制方式 | GFSK | 高斯频移键控 |
| BT值 | 0.5 | 高斯滤波器带宽与比特率的比值 |
| 调制指数 | 0.5 | 频率偏移与比特率的比值 |
| 频率偏移 | ±250kHz | 代表0和1的频率偏差 |
| 数据速率 | 1Mbps | BLE 4.x/5.0的LE 1M PHY |
BT值0.5是什么意思?说白了就是高斯滤波器的带宽是数据速率的一半。这样滤波后的信号既平滑,又不会把码间干扰搞得太严重。我刚开始做射频测试时,看到频谱仪上GFSK信号的频谱像个钟形,两边很干净,这就是高斯滤波器的功劳。
注意:BLE 5.0引入了LE 2M PHY,数据速率翻倍到2Mbps。但调制方式还是GFSK,只是BT值和频率偏移做了调整。2M PHY的BT值还是0.5,但频率偏移变成了±500kHz。别搞混了。
2.3 发射功率与接收灵敏度
这两个参数直接决定了你的蓝牙能传多远。我见过不少开发者,代码写得飞起,结果产品通信距离只有几米,一查发现发射功率设成了最低档。
发射功率:BLE的发射功率范围通常是-20dBm到+10dBm。dBm是个相对单位,0dBm对应1毫瓦。每增加3dBm,功率翻倍。所以+10dBm就是10毫瓦。
实际项目中,发射功率不是越大越好。功率大了,功耗高,还会干扰其他设备。我个人的习惯是:先设成0dBm测试,如果距离不够再逐步增加。别一上来就开满功率。
接收灵敏度:这是接收机能检测到的最小信号强度。BLE的典型灵敏度是-90dBm到-97dBm。数值越小,灵敏度越高。
链路预算的计算公式很简单:
链路预算 = 发射功率(dBm) + 发射天线增益(dBi) + 接收天线增益(dBi) - 路径损耗(dB)
路径损耗 ≈ 40 + 20 * log10(距离) (2.4GHz自由空间模型)
举个例子:发射功率0dBm,天线增益都是0dBi,接收灵敏度-90dBm。那么链路预算就是90dB。代入公式算一下,理论距离大约30米。但实际环境中,墙壁、人体、多径效应都会衰减信号,所以实际距离可能只有10米左右。
实战建议:做产品时,别只看芯片手册上的灵敏度参数。那个是在理想条件下测的。实际产品要考虑天线效率、PCB损耗、外壳遮挡等因素。我建议留出10-15dB的余量。
2.4 射频测试入门
射频测试是蓝牙开发中绕不开的一环。你产品做出来,总得过认证吧?FCC、CE、蓝牙SIG认证,哪个都离不开射频测试。
常用的射频测试项目包括:
- 发射功率测试:测量各信道的发射功率是否在规范范围内
- 频率偏移测试:测量载波频率是否准确,偏差不能超过±150kHz
- 调制特性测试:测量GFSK的调制指数和眼图
- 接收灵敏度测试:测量不同信道的误包率(PER)
- 带外杂散测试:测量发射机在频段外的杂散辐射
测试设备主要有频谱仪、信号发生器、蓝牙测试仪(如Anritsu MT8852B、R&S CMW500)。
我刚开始做射频测试时,犯过一个低级错误:测试发射功率时,没接衰减器。结果频谱仪的输入端口烧了。嗯,从那以后我再也不敢不接衰减器了。BLE的发射功率虽然只有10mW,但频谱仪的输入端口通常只能承受-20dBm到+30dBm,直接接上去还是有风险的。
测试小技巧:做接收灵敏度测试时,建议用信号发生器发送已知数据包,然后统计DUT收到的误包率。BLE规范要求PER不超过30.8%。但实际产品,我建议做到10%以下,留点余量。
下面这张图展示了BLE物理层的整体架构和测试流程:
射频测试的流程一般是:先测发射指标(功率、频率、调制),再测接收指标(灵敏度、PER),最后测杂散。我建议你在产品开发阶段就做这些测试,别等到送认证时才发现问题。那时候改板子,成本就高了。
认证提醒:蓝牙SIG认证要求射频测试必须在蓝牙认证的测试实验室进行。自己测的数据只能用于开发调试,不能用于认证。但开发阶段自己测一遍,能省不少认证时的返工时间。
好了,物理层和射频基础就讲到这里。这些内容虽然偏硬件,但作为蓝牙协议栈开发者,你必须懂。下次调试连接不稳定时,你至少知道该从哪个方向排查——是信道干扰?是发射功率不够?还是接收灵敏度太差?心里有数,手上不慌。