4. 信号强度指标:RSSI、LQI、SNR 概念与测量方法

做无线通信调试,最怕什么?

怕信号时好时坏,找不到原因。

我早年做一款车载蓝牙模块,设备在实验室跑得稳稳的,一装车就断连。折腾了两周,最后发现是天线附近有颗螺丝钉改变了阻抗。从那以后,我养成了一个习惯——先看信号指标,再动硬件。

这一章,我们就来聊聊三个最核心的指标:RSSI、LQI 和 SNR。说白了,它们就是无线通信的“体温、脉搏和血压”。

4.1 RSSI:接收信号强度指示

RSSI 是最直观的指标。它告诉你,对方发过来的信号,到你这边还剩多少“力气”。

概念

RSSI 的单位是 dBm,数值越大(越接近 0),信号越强。比如 -30 dBm 就是“满格”,-90 dBm 基本就是“断连边缘”。

经验值参考(2.4GHz 频段)

  • -30 dBm ~ -50 dBm:信号极好,适合高速通信
  • -50 dBm ~ -70 dBm:信号良好,日常使用没问题
  • -70 dBm ~ -85 dBm:信号较弱,可能出现丢包
  • -85 dBm 以下:信号很差,基本不可靠

测量方法

大多数无线芯片都内置了 RSSI 寄存器。你直接读它就行。我习惯在代码里加一个定时打印,每 100ms 输出一次 RSSI 值。

// 以 TI CC2530 为例
uint8 rssi_value;
rssi_value = halRssi();  // 读取 RSSI 寄存器
printf("RSSI: %d dBm\n", (int8)rssi_value - 0x80);

我的小技巧

别只看瞬时值。我一般取 10 次平均值,再画成曲线。这样能看出信号波动规律,比单个数值有用得多。

4.2 LQI:链路质量指示

RSSI 只看“力气”,LQI 看“质量”。

概念

LQI 衡量的是接收到的数据包“干净程度”。它跟误码率直接相关。不同芯片的 LQI 范围不一样,有的 0~255,有的 0~100。你得先看数据手册。

我记得有一次,RSSI 显示 -60 dBm,信号挺强,但通信就是卡。一查 LQI,只有 30(满值 255)。原来是附近有台微波炉在干扰。RSSI 骗了你,LQI 说了实话。

测量方法

LQI 通常在接收数据包时附带。你从接收结构体里取就行。

// 以 Nordic nRF24L01 为例
uint8 lqi_value;
lqi_value = nrf_read_register(RPD);  // 读取 LQI 相关寄存器
printf("LQI: %d\n", lqi_value);

注意

LQI 和 RSSI 不是线性关系。RSSI 强不代表 LQI 好。干扰源多的时候,LQI 会先恶化。我建议你把两个指标一起看,别只看一个。

4.3 SNR:信噪比

SNR 是“信号”和“噪声”的比值。它告诉你,信号有没有被噪声淹没。

概念

SNR 的单位也是 dB。数值越高,信号越清晰。一般 SNR > 20 dB 就算不错,低于 10 dB 就容易出问题。

你想想看,在嘈杂的酒吧里跟人说话,你得提高音量。无线通信也一样。噪声大了,信号就得更强,否则就听不清。

测量方法

SNR 不能直接读寄存器。你得自己算:

SNR (dB) = RSSI (dBm) - 底噪 (dBm)

底噪怎么测?我一般在不发送数据的时候,读 RSSI 值。那个值就是当前环境的底噪。

我的做法

在系统启动时,先花 1 秒钟测底噪。取 20 次 RSSI 的平均值,作为底噪基准。然后实时计算 SNR。这样能自动适应不同环境。

4.4 三个指标的关系与对比

这三个指标不是孤立的。它们从不同角度描述链路质量。

指标 含义 单位 谁影响它 典型范围
RSSI 信号强度 dBm 距离、遮挡、天线 -30 ~ -100
LQI 链路质量 无单位 干扰、多径、调制方式 0 ~ 255
SNR 信噪比 dB 噪声源、发射功率 0 ~ 40

我个人的判断逻辑是这样的:

  • RSSI 高 + LQI 高 + SNR 高:链路完美,放心用。
  • RSSI 高 + LQI 低 + SNR 低:有干扰源,查环境。
  • RSSI 低 + LQI 低 + SNR 低:距离太远或天线问题。
  • RSSI 低 + LQI 高 + SNR 高:少见,可能是数据率低但信号干净。

4.5 知识结构图

下面这张图,帮你理清三个指标的关系和测量流程。

RSSI、LQI、SNR 关系与测量流程 无线信号三大指标关系图 无线信号 RSSI 信号强度 LQI 链路质量 SNR 信噪比 读 RSSI 寄存器 从接收包取 LQI RSSI - 底噪 判断逻辑 • RSSI 高 + LQI 高 + SNR 高 → 链路完美 • RSSI 高 + LQI 低 + SNR 低 → 存在干扰源 • RSSI 低 + LQI 低 + SNR 低 → 距离远或天线问题

4.6 实战中的避坑指南

最后,分享几个我踩过的坑。

我曾经...

只盯着 RSSI 看,觉得 -60 dBm 没问题。结果设备一移动就断连。后来发现是天线方向性导致信号波动。从那以后,我每次测试都让设备转一圈,记录不同角度的 RSSI。

我的建议

做信号测试时,别只看一个点。拿个小板子,把设备放在不同位置、不同高度、不同角度,各测 30 秒。数据多了,规律自然就出来了。