1. 先搞清楚datasheet上的数字到底怎么来的
想复现-132dBm、-128dBm、-112dBm这组RX灵敏度数据,第一件事不是急着打开RadioExplorer GUI,而是先弄明白ST在datasheet上这三个数字分别代表什么条件。
灵敏度本身不是一个固定值,它跟调制方式、数据速率、频偏、接收带宽、误码率判定门限都有直接关系。同一个射频前端,把速率从2.4kbps拉到200kbps,灵敏度能差出15dB以上。所以复现的首要原则是:找到datasheet中灵敏度参数对应的“测试条件”那一列,把所有条件逐一复现,而不是随便找一个配置就去测。
1.1 三档灵敏度的物理含义
以STM32WL33这颗Sub-GHz无线SoC为例,它的射频前端集成了LNA和射频匹配网络,整体链路设计得比较紧凑。datasheet上标注的通常分三档:
| 档位 | 典型值 | 典型配置 |
|---|---|---|
| 第一档 | -132dBm | 低速率FSK/窄带模式,2.4kbps左右,窄IF带宽 |
| 第二档 | -128dBm | 中等速率FSK/GFSK,10~50kbps,中等带宽 |
| 第三档 | -112dBm | 高速率模式或特殊调制,100kbps以上,宽带接收 |
第一档跑的是极窄带模式,IF带宽压得很窄,噪声被限制在很小的频带内,所以能听到极其微弱的信号。这个值的测量条件是PER或BER在某个阈值以下,通常要求误码率不超过0.1%,数据包长度、前导码长度也有规定。
第二档是工程上最常用的模式,兼顾了速率和灵敏度。第三档的高速模式灵敏度差,是因为带宽一宽,底噪也跟着涨,这是物理规律,不是芯片设计的问题。理解这层物理约束很重要,很多人测出来数字对不上,其实就是没搞清楚自己选择的是哪一档配置。
1.2 “复现”真正要复现的是什么
很多工程师拿着信号源直接给NUCLEO-WL33灌一个-132dBm的CW载波,然后发现RadioExplorer GUI上显示RSSI大概是-130左右,就开始怀疑测试方法有问题。这个操作有个基础性误解:灵敏度不是看能不能“听到”载波,而是看能不能在指定误码率下“解调出有效数据”。
所以真正要复现的是一个完整链路:信号源发出的信号要经过正确的调制、正确的前导码、正确的数据包格式,接收端要能解调并校验通过。只要数据包里任何一位出错,这个功率点就算失败。RadioExplorer GUI的价值在于,它把配置寄存器、调制参数、数据包格式、RSSI读数、PER统计都集中到一个界面上,省去了写固件和手工读寄存器的功夫,但它不会替你做物理层的判断,测量方案还是得自己把握。
提示:正式开始之前,先打开目标板卡对应的datasheet,把灵敏度表格下面的所有“Test Conditions”截图存下来。后面每一步配置都以这个为基准,而不是以你的直觉为基准。
2. 测量环境搭建:硬件与仪表的准备工作
复现灵敏度不是接根线就能开测的。在-120dBm这个量级,周围任何一点干扰、任何一个接地环路、任何一段线缆损耗都会直接反映在结果上。我见过很多人在办公室测试台上测出来的结果比datasheet差5~8dB,最后发现是USB供电噪声耦合进了射频链路。
2.1 NUCLEO-WL33开发板上的射频通路
NUCLEO-WL33板载了完整的射频前端,包含天线匹配网络。板上有几个关键点需要提前确认:
- 板载天线与SMA座之间通常有一个可调的射频开关或0欧电阻焊盘,用于选择信号走板载天线还是走SMA口。测量时必须把射频路径切换到SMA口,否则信号会被板载天线分走一部分,或者更糟——SMA口根本没接到射频前端上。
- 板上的USB口在数据通信和供电的同时,也会把电脑的开关电源噪声带进板子。测量灵敏度这种微伏级的信号,最好用电池给板子供电,或者用隔离USB线。
- 检查跳线JPx的设置,确保板子不是处于低功耗模式或RF_TX模式。上电后先用RadioExplorer GUI读一下芯片的版本号和当前工作频率,确认射频部分已经初始化成功。
2.2 信号源的选择与校准
能输出-132dBm甚至更低功率的信号源,本身就要有足够低的底部噪声。普通的入门级信号源标称能到-130dBm,但实际输出精度在这么低的功率档位上往往是±1~2dB,而且杂散可能很大。建议至少用中端以上型号,比如是德N5182B或罗德与施瓦茨SMBV100A这一类,并做以下准备:
- 把信号源输出频率设到与datasheet测试条件一致的频率点,例如868MHz或915MHz,依据你手里的板子型号决定。
- 做功率校准。在信号源输出端接功率计,先把输出功率设到-20dBm左右校准,再通过设置衰减步进降低到目标功率。注意不能直接从-20dBm切到-132dBm就认为输出准确,低功率档的绝对精度通常需要用功率计在相近功率点标定一次。
- 记录射频线缆的插损。Sub-GHz频段线缆损耗不算大,但也会有几dB的偏差,测量前用网络分析仪或者用信号源+功率计测一下线损,在计算最终接收功率时补偿。
注意:-132dBm到-112dBm这段范围横跨了20dB,信号源的自动电平控制(ALC)在不同功率档之间可能引入误差。最稳妥的做法是每一个测试功率点都实际用功率计验证一次,而不是完全相信信号源面板的读数。
2.3 屏蔽环境:为什么不能直接裸奔测试
在-120dBm量级,周围环境里的蓝牙、Wi-Fi、微波炉、甚至LED灯的开关噪声都会对结果产生干扰。办公室环境下的底噪通常在-95到-105dBm左右,这看起来比-132dBm高很多,但你要知道灵敏度测试观察的是“解调失败的概率”,而不是RSSI读数本身。
当信号强度接近底噪时,解调误码率会急剧恶化。如果环境底噪比信号还高,即使信号源输出正确,接收端解调时也会因为噪声叠加而错误。所以最佳做法是把整个测试放到屏蔽箱里,或者至少把板子和天线接口用屏蔽罩隔离起来。如果实在没有屏蔽箱,必须在晚间或远离无线设备的位置测试,并把信号源输出电平提高到至少高于环境底噪5dB以上,再观察误码率曲线拐点,间接推算灵敏度。
实测经验:在无屏蔽环境下测得的灵敏度通常会比datasheet差3~5dB,且数据点抖动很大。如果你看到同一功率点多次测量的PER从2%跳到20%,基本就是环境噪声在捣乱。
2.4 天线端接与负载
测量灵敏度时,NUCLEO-WL33板上天线必须断开,改为在SMA端口接一个50欧的射频负载。这一步非常关键,原因有两个:
- 板载天线如果不拆除,它依然会接收环境中的干扰信号,这些信号进入接收机后叠加在测试信号上。
- 如果SMA口悬空,输出阻抗不匹配会造成反射,干扰测量。
正确做法是:射频路径选择SMA口,SMA口上接信号源线缆,板载天线位置使用50欧负载端接(或者通过跳线断开)。
3. RadioExplorer GUI操作指南
RadioExplorer GUI是ST面向WL33系列推出的射频调试工具,界面很直观,但很多人第一次用的时候还是找不到设置项。这块我把关键操作拆开讲,已经用过的人可以直接跳到配置表部分看参数。
3.1 安装与连接
先把工具软件装好,它通常是和CubeMonitor或者ST官方的射频评估套件一起发布的独立工具。安装完成后,通过USB把NUCLEO-WL33连接到电脑。注意插入USB时先按住板上的复位按钮,让板子进入调试模式,再在RadioExplorer GUI里选择对应的COM口。
连接成功以后,界面左侧会显示当前芯片的型号、版本号、温度、供电电压。如果这里读不到芯片信息,先检查驱动是否装好,再看板子的JP跳线是不是把调试口关掉了。
3.2 频率与调制参数配置
进入“Radio Configuration”面板,这里有三个核心区域:
- 频率设置:把中心频率设到测试条件指定的频点,例如868MHz。频率的准确度直接影响灵敏度测试,里面有一个频偏校准参数(Xtal trim),如果芯片内部晶振偏差比较大,会导致接收频率偏出去几十kHz,灵敏度直接掉好几dB。
- 调制方式:可选FSK、GFSK、OOK等。灵敏度测试用的通常是FSK或GFSK,如果datasheet里没有明确标注,就用FSK。
- 数据速率与带宽:这是不同灵敏度档位之间最大的差异来源。低速率档要把数据速率降到几kbps级别,同时把IF带宽收窄;高速率档则要放宽带宽。RadioExplorer GUI里通常有预设的档位,直接选“Narrow”或“Standard”模式,也可以手动填参数。
3.3 数据包格式配置
灵敏度测试需要一个固定的数据包格式来统计误包率。RadioExplorer GUI里有“Packet Configuration”面板,常见设置如下:
- 前导码长度:取datasheet测试条件里规定的字节数,通常4~8字节。
- 同步字:设为一个固定值,接收端只有等到同步字才会开始接收数据。
- 数据长度:一般20~64字节即可,越长对灵敏度要求越苛刻,因为出错概率随数据长度线性上升,用不同长度测出来的灵敏度值会有差异。
- CRC/FCS:开启CRC校验,只有CRC通过的包才算有效包。
这些配置不是随便填的,建议先在低功率(-80dBm)下验证收发链路正常,再降到低功率点做灵敏度测试。如果低功率下包都收不到,大概率是同步字或前导码配置两边不匹配。
3.4 收发控制与PER统计
配置完成后,把信号源切到“调制打开”状态,连续发送测试数据包,然后在RadioExplorer GUI里操作接收端:
- 点击“RX Mode”,进入连续接收状态。
- 观察“RSSI”读数,确认接收频率上有信号,且电平与信号源输出基本吻合。
- 打开“Packet Statistics”面板,记录Total Packets、CRC Errors、PER等统计值。
- 逐步降低信号源功率,每档保持发送1分钟以上,记录该功率点上的PER。
提示:RadioExplorer GUI的RSSI读数在-120dBm以下时,本身就有±2dB的跳动,这是正常现象。不要拿RSSI读数当作精确功率,要以信号源的设置值为准。
4. 完整实操流程:从-80dBm一路测到-135dBm
下面这套流程是我在实际测试中反复用过的,按这个顺序走,基本不会漏掉关键步骤。整个测试大概需要40分钟,其中大头时间花在每个功率点的等待上。
4.1 系统初始化与链路验证
先把整套系统跑通。具体步骤:
- 信号源输出设为:868MHz,FSK调制,频偏±20kHz(或者你目标档位对应的频偏),数据速率与RadioExplorer GUI配置保持一致。
- 信号源功率先设到-60dBm,调制开启。
- RadioExplorer GUI里进入RX模式。
- 确认PER为0%,RSSI读数在-60dBm左右。
- 如果这一步收不到包,优先检查调制参数两边是否一致、同步字是否匹配、频偏符号是否反了。
链路验证这一步非常必要。从-60dBm开始,一路确认到-100dBm,每个点PER都为0%,才能说明链路基本正常。如果中间某一档突然出现大量丢包,很可能是频率偏移、数据包过长、或信号源参数被误改。
4.2 按功率点步进测试灵敏度
链路验证通过后,进入正式测量:
- 把信号源功率降到-110dBm,持续发送1分钟。
- 在RadioExplorer GUI里记录PER。如果PER在0%~1%之间,继续降功率。
- 每次降低2dB,每一档观察至少1分钟,并记录PER。
- 当PER接近并开始超过0.1%(也就是误包率阈值,对应datasheet里通常规定的BER 0.1%),把功率调整到PER刚好在0.1%的位置,这就是实测灵敏度。
需要注意,每个功率点需要耐心等一段时间。数据包速率如果只有几kbps,1分钟也就能收几百个包,统计意义足够。只测5秒钟就判断收不到,那大概率是统计样本太少造成误判。
4.3 三档条件的完整配置参考
下面是我测试三档灵敏度时使用的一组起始配置,可以直接参考:
| 配置项 | 第一档(-132dBm目标) | 第二档(-128dBm目标) | 第三档(-112dBm目标) |
|---|---|---|---|
| 调制方式 | FSK | GFSK | GFSK |
| 数据速率 | 2.4kbps | 50kbps | 256kbps |
| 频偏 | ±12.5kHz | ±25kHz | ±100kHz |
| IF带宽 | 窄带(约50kHz) | 中等(约150kHz) | 宽带(约500kHz) |
| 前导码 | 8字节 | 4字节 | 4字节 |
| 同步字 | 固定 | 固定 | 固定 |
| 数据长度 | 32字节 | 32字节 | 32字节 |
| CRC | 开启 | 开启 | 开启 |
| 频点 | 868MHz | 868MHz | 868MHz |
注意:不同批次芯片、不同频率点的实际最优配置会有细微差别。如果你测出来的灵敏度与datasheet差距在1~2dB以内,属于正常偏差,可以尝试微调IF带宽或频偏,看能否把数值拉回来。如果差到5dB以上,先检查环境干扰、线损补偿、信号源精度,而不是怀疑芯片。
4.4 数据记录与结果判断
把每个功率点的PER记录下来,最后整理成一张表。以-132dBm档为例,一次成功的测试数据大致是这样的形态:
| 信号源功率 | 发送包数 | CRC错误 | PER | 结论 |
|---|---|---|---|---|
| -128dBm | 500 | 0 | 0% | 通过 |
| -130dBm | 500 | 1 | 0.2% | 接近阈值 |
| -131dBm | 500 | 2 | 0.4% | 已超阈值 |
| -132dBm | 500 | 5 | 1.0% | 不通过 |
如果-128dBm时PER为0%,-130dBm时PER跳到1%以上,那么实测灵敏度大约在-129dBm左右,比datasheet的-132dBm差3dB。这时候不需要急着下结论说芯片不行,优先排查:
- 线缆插损补偿了没有?
- 信号源在-130dBm附近的实际输出校准过吗?
- 环境底噪是多少?
- IF带宽和频偏是否与datasheet测试条件一致?
我遇到过最典型的“假劣化”案例:信号源面板显示-132dBm,但实际输出到DUT口的功率只有-128dBm,原因是忽略了线缆插损却是负值补偿。修正之后灵敏度立刻恢复到-132.5dBm,甚至比datasheet还好0.5dB。
5. 常见问题与排查技巧实录
这一节整理我在实际复现过程中踩过以及帮助别人排查过的坑,按出现频率排序。
5.1 问题:PER持续偏高,RSSI读数正常
RSSI读数正常说明射频链路和信号强度没错,问题出在解调环节。常见原因包括:
- 频偏设置不匹配。发射端和接收端的频偏不一致,解调器性能会严重劣化。
- 调制指数不当。FSK的调制指数(频偏/速率)太低,接收端难以区分0和1,灵敏度直接掉几个dB。
- 同步字配置不一致。接收端同步字与信号源发送的同步字不同,导致大量包无法进入接收流程。这个错误在GUI里看不明显,因为发送端和接收端分别配置,GUI不会自动校验两边一致。
排查方法:先用-80dBm强信号跑通,确认能收包;再逐项检查调制参数;最后把信号源输出设为“未调制”状态,对比RSSI读数的变化,确认射频链路本身没有问题。
5.2 问题:信号源功率降到-120dBm以下时,接收端完全收不到包
这种现象需要区分两种情况。第一种是信号源输出不准确,在极低功率档位上实际输出比面板显示高或低很多;第二种是环境底噪太高,把微弱信号完全淹没。
排查步骤:
- 用功率计在信号源输出端实测-120dBm点,确认功率准确。
- 断开信号源与板卡的连接,在板卡SMA口接50欧负载,观察RadioExplorer GUI的RSSI底噪读数。正常环境下应该低于-115dBm,如果底噪在-100dBm以上,说明环境干扰严重,需要屏蔽箱。
- 检查信号源是否开启了调制。如果调制未开启,接收端也收不到包。
5.3 问题:测出的灵敏度比datasheet低5dB以上
这种大偏差基本不是芯片的问题,而是一个或多个环节的系统误差叠加。按概率从高到低排列:
| 可能原因 | 检查方式 |
|---|---|
| 环境电磁干扰 | 关掉周边无线设备,用屏蔽箱验证 |
| 线缆损耗未补偿 | 用功率计实测线损,并计入最终功率 |
| 信号源低功率档位输出不准确 | 用功率计校准每个测试点 |
| IF带宽设置过宽 | 与datasheet测试条件核对 |
| PCB天线未断开 | 检查射频路径选择,SMA口是否真正生效 |
| 供电噪声大 | 改用电池供电,对比测试结果 |
这六个原因覆盖了绝大多数“灵敏度异常”的场景。排查顺序建议从最省事的开始:先断开天线、再检查线损补偿、最后看供电环境和信号源校准。
5.4 实操心得:经验校准法
如果手上没有功率计,也可以用一种“经验校准法”做个粗略验证。在-90dBm到-70dBm这个范围内,信号源的输出精度通常比较高(±0.5dB以内),而且接收端RSSI读数在这个区间也很准。那么:
- 在-80dBm点,读取RadioExplorer GUI的RSSI值。
- 降低信号源功率到-110dBm,再读一次RSSI。
- 两次RSSI的差值应该等于信号源功率的变化量(-30dB)。
- 如果RSSI差值小于-30dB,说明低功率档位的实际衰减比预期大;反之说明实际衰减比预期小。
这个方法虽然不如功率计精确,但能帮你判断信号源在低功率档是否存在明显非线性。
5.5 关于软件版本与固件匹配
RadioExplorer GUI更新比较频繁,新版本可能会改变默认的射频配置参数或数据包格式定义。如果你用一份旧笔记上的配置参数,在新版本软件上复测,结果可能会有1~2dB的差异。建议每次测量前确认三件事:
- RadioExplorer GUI的版本号。
- NUCLEO-WL33板载固件版本。
- 与datasheet测试条件对应的配置是否在新版本中仍然有效。
如果软件版本与固件版本不匹配,GUI可能能连接但寄存器写入失败,表面上看起来一切正常,实际上射频配置根本没生效。这种问题最隐蔽,因为RSSI读数和包统计看起来都有数据,但灵敏度就是不对。
6. 写在最后的测量心得
复现datasheet的灵敏度数据,本质上是在验证你对“测试条件”理解的准确度。同样的芯片、同样的仪表,不同的人测出来结果可以差10dB以上,原因基本都在环境、线损、配置这三块,而不是芯片本身的性能。
根据我个人反复测试的经验,最容易被忽略的是IF带宽这个参数。很多人紧盯数据速率配置,却忘了把带宽收窄到与速率匹配,导致灵敏度被宽带噪声拉低。实际上,在低速率窄带模式下,IF带宽每翻一倍,灵敏度大约退化3dB。反过来,把带宽压得太窄又会造成符号间干扰,同样恶化灵敏度。所以正确的做法是找到带宽与速率的匹配点,这也是为什么datasheet上的测试条件一定要逐项复现,而不是只复现一个“速率”参数。
另外还有一个建议:测量过程中不要频繁切换RadioExplorer GUI的配置,在同一个配置下把整条灵敏度曲线完整测完,再换下一档。因为GUI在重新配置寄存器时会让射频前端的初始状态发生变化,连续切换会导致前后数据不一致,增加排查问题的难度。我一般是一次一个配置,从高功率到低功率逐步推进,测完整个功率扫描区间,再切换下一档,这样得到的数据既完整又便于回溯。
如果你第一次测出来的结果比datasheet差了2~3dB,先别急着调整参数,把环境干扰源清一遍、重新校准线损,再测一次。很多情况下,第二次和第一次的结果差距会大于你调整参数带来的改善。测试灵敏度这件事,耐心比技术更宝贵。