上个月帮一个做无线传感网的朋友救火。他们的产品在实验室里跑得好好的,一到现场就出问题:设备上电后能连上,但每隔几十秒就断一次,断了之后重连又正常,然后再断。现场十几台设备,有的断得频繁,有的偶尔断,完全没有规律。
他们最开始怀疑是天线匹配的问题,换了天线,没用。又怀疑是电源纹波,换了LDO,还是没用。折腾了快两周,代码改了好几版,问题依旧。
我到现场之后,先让他们把一台“故障设备”拿回实验室。结果在实验室里跑了一整天,一次都没断。这就很有意思了——同样的硬件,同样的固件,实验室不断,现场断。
后来我用了一个笨办法:把现场那台设备的射频校准数据读出来,和实验室那台对比。一看就明白了——现场那几台设备的校准数据区,有一半是空的。
这就是今天要聊的话题:射频校准数据缺失,为什么会导致连接不稳定,以及这类问题在现场怎么判断、怎么取舍。
先搞清楚校准数据到底在干什么
很多做嵌入式软件的人对射频校准的理解停留在“出厂的时候产线会写一些值进去”。至于这些值是什么、不写会怎样、写错了会怎样,基本没概念。
简单说,射频链路上有几个关键参数是随器件个体差异而变化的。比如:
- 载波频率偏移
- 发射功率的增益表
- 接收通路的增益配置
- 不同频点上的匹配补偿
这些参数没法用一套固定值覆盖所有板子,因为每块板子的晶振精度、滤波器一致性、PCB走线阻抗都有差异。所以产线会逐板测量,把测量结果写进一个非易失存储区,固件启动时读出来,配到射频前端。
关键点在于:这些数据不是“可选优化”,而是射频链路正常工作的前提条