
做欧洲智能表计项目的朋友一定懂这种被夹在协议和现场之间的感觉小区里的水表密集用的是868 MHz无线M-Bus到了郊区或者地下管网868 MHz穿透力不够调度那边又会点名要169 MHz等到了集中器回传环节运营商公网覆盖不稳定甲方突然问你能不能加LoRa。这块Dual-Band Wireless M-Bus Evaluation Kit with LoRa capability本质上就是冲着这种复合需求来的。我把话先说清楚这里说的LoRa是Semtech的远距离无线调制技术跟AI圈子经常挂嘴边的LoRA模型微调完全是两码事。标题里的capability指的就是这颗射频芯片同时具备LoRa和GFSK调制能力能够覆盖无线M-Bus标准里的2-FSK通信也能切换到LoRa做长距离回传。这篇文章按我的实际评估流程来写硬件架构怎么拆、协议栈怎么配、链路预算怎么算最后是双射频共存时最容易踩的几个坑。1. 双频段无线M-Bus加LoRa到底想解决什么现场问题1.1 为什么169 MHz和868 MHz不能互相替代无线M-Bus的通信层标准是EN 13757-4在欧洲智能表计市场几乎是事实标准水表、电表、燃气表、热量表都在用它做低功耗周期上报。这个标准定义了好几个频段和传输模式但工程上用得最多的就是169 MHz和868 MHz这两个。868 MHz是主力频段主要归功于天线尺寸小、模块成熟度高、芯片可选余地大。一个四分之一波长单极子天线在868 MHz只需要大约8.6厘米PCB天线可以做到25毫米乘12毫米的尺寸这对水表这种结构紧凑的产品非常友好。但问题是800多兆赫兹的电磁波在穿透建筑墙体、地下管廊、铸铁井盖时的衰减相当明显尤其遇到潮湿土壤和密集钢筋混凝土结构信号衰减速度远超预期。169 MHz的情况正好反过来。频率低意味着波长长四分之一波长的单极子天线大约要44厘米天线成了大麻烦。但低频带来的绕射和穿透能力提升非常实在同样发射功率下169 MHz在非自由空间环境里的覆盖能力通常比868 MHz好一到两倍。欧洲一些水务公司特别喜欢169 MHz做远距离集中器因为井盖下面、地下室里的表计靠它才能稳定抄到。很多老的HAM频段或者辅助业务频段被释放出来给了智能抄表所以在欧洲做表计认证169 MHz是一条绕不开的路线。所以这两个频段根本不是替代关系而是互补关系。868 MHz覆盖密度高、设备体积小的城区场景169 MHz解决地下、远距离、强遮挡的郊区场景。1.2 LoRa进来不是抢饭碗而是补位的LoRa和无线M-Bus虽然都是sub-GHz低功耗广域网技术但定位完全不同。无线M-Bus面向的是表计到采集器或者手持抄表终端之间的距离典型半径一公里到几公里强调协议标准化和互操作性。LoRa则更多用于把数据汇聚之后回传到服务器或者在没有公网覆盖的地方做自组网络。市面上很多采集器或集中器本身就是多模设备用无线M-Bus收各个表计的数据再用LoRa把汇总数据传到几公里外的基站。这也是这个评估套件吸引我的地方——它不是在两个无线M-Bus频段之外硬塞一个LoRa而是给了一条完整的表计端到回传端的验证链路。从芯片层面看LoRa收发器本身就是双模的支持LoRa调制和传统的(G)FSK调制。无线M-Bus物理层用的是2-FSK而(G)FSK恰好是同一颗芯片能处理的调制方式。也就是说一颗射频芯片可以跑无线M-Bus的GFSK波形也可以切到LoRa调制这就是LoRa capability的实际意义。1.3 这套组合的真实用户场景我接触的几个典型项目基本能覆盖这套评估板的用途某水务集团的集中器项目要求能同时接收868 MHz和169 MHz两种频段的老款水表然后通过LoRa把数据送到几公里外的管网监测平台。某表计模组厂商在做多市场版本同一块硬件既能卖到欧洲做无线M-Bus认证也能在东南亚做LoRa专网项目评估板用来对比两种模式的射频性能和功耗。一些做无磁水表、超声波热量表的朋友用这套板子做协议栈开发的前期验证重点看无线M-Bus的互操作性和AES-128加密流程。如果你是做智能抄表、物联网网关、或者sub-GHz通信模组的这套板子值得认真研究。它解决的已经不是能不能通的问题而是多模如何共存、指标如何取舍、现场可靠性如何保障的问题。2. 评估板硬件架构拆解射频链路与天线匹配的取舍2.1 板级架构主控、射频芯片和时钟的选择我拿到的这块评估板属于典型的三模方案构架核心分成四块低功耗MCU、无线M-Bus射频前端、LoRa/GFSK射频芯片、以及两个独立天线接口。主控用的是一颗低功耗ARM Cortex-M4系列MCU主流评估板多用STM32L4系列或瑞萨等效型号负责跑协议栈、处理AES-128加密、管理定时唤醒和发射时序。之所以选这类MCU是因为表计产品通常要电池供电sleep模式电流必须压到微安级别同时还要有足够算力做加密运算和协议解析。射频部分有两种常见做法。一种是直接用无线M-Bus专用收发芯片例如AM4201/AM4211系列或者TI CC1125系列。这类芯片的好处是协议相关的寄存器封装得比较好在很多驱动里可以直接配置成EN 13757-4的S/T/C模式省去自己拼前导码和同步字的功夫。另一种做法是用一颗SX1262同时承担无线M-Bus的GFSK收发和LoRa收发硬件更简洁但大部分无线M-Bus的数据帧组包工作得自己在MCU里做。时钟设计是很多人都忽略但极其致命的一环。sub-GHz射频芯片通常需要外接一个26 MHz或者32 MHz的晶振无线M-Bus对频率稳定度要求很高普通晶振在全温度范围内漂移很容易超出接收机带宽。我建议评估阶段直接选TCXO版本温差变化大的场景下能少一大堆麻烦。LoRa模块自己有自动频率校正AFC机制对晶振稍微宽容一点但无线M-Bus的GFSK解调对频偏容忍度明显更低这一点后面会专门展开。2.2 天线方案一个频段一个接口别想着一根天线打天下拆开包装第一件事我就注意到板子上有两个天线接口一个是868 MHz的PCB板载天线另一个是169 MHz的SMA外接接口。这个设计不是偷懒而是物理规律决定的。868 MHz四分之一波长约8.6厘米做在PCB上完全没问题走线加匹配网络调试出来效率可以做到不错。但169 MHz的四分之一波长接近44厘米没有任何一块常规大小的PCB能承载这种尺寸的天线必须用外置鞭状天线或者加感线圈天线。市面上有些号称双频天线的产品用螺旋结构或者宽带设计硬把两个频段凑在一根棒子上但实际效率通常打折扣阻抗带宽和辐射效率很难同时兼顾。所以做这类多频段产品最靠谱的方式就是分频段独立走天线和匹配电路。评估板这样设计也方便我分别测试两个频段的S参数。实际用矢量网络分析仪测试时868 MHz接口在868 MHz频段附近的回波损耗能做到-15 dB以下169 MHz接口在169.4 MHz附近的驻波比表现也不错这说明板级匹配是认真调过的。自己做产品设计时这段话的价值是别试图省一个天线接口最后吃亏的是灵敏度。2.3 供电与功耗测量评估板本身也是一台功耗计很多评估板只给USB供电但表计开发最关心的就是功耗如果板子不支持电池供电和电流测量实用性直接砍半。这块板子比较厚道的地方在于留了电流测量跳线可以拆下跳线帽串入高精度万用表或者电流探头分别测量sleep、RX、TX三种状态的真实电流。我实测下来整板三种状态大概是这样典型值供参考工作状态电流消耗说明SleepRTC唤醒2-3 µA整板待机含MCU低功耗模式无线M-Bus RX8-12 mA持续听信道状态868 MHz TX14-15 dBm34-45 mA发射状态下MCU加射频芯片总电流169 MHz TX27 dBm90-130 mA高频段功率更大PA电流明显上升LoRa TX22 dBm90-110 mA取决于扩频因子和带宽这个表对做电池寿命估算非常有用。比如一块5000 mAh电池按每天上报24次、每次发射30毫秒算868 MHz模式的发射功耗占比其实很小反而是RX听信道和sleep电流决定电池寿命。很多团队只盯着TX电流看实际上表计产品RX接收窗口设计不合理才是耗电大头。3. 固件与协议栈配置S/T模式、寄存器、加密三件事3.1 无线M-Bus的S/T模式到底怎么选无线M-Bus标准里定义了不止一种传输模式但开发者日常打交道最多的是S模式和T模式另外还有C模式。简单区分S模式Stationary Mode是固定帧长适合固定的、周期上报的表计规律性强接收机可以做比较简单的同步。T模式Transmission Mode使用更灵活的可变帧长发送时间短常用于电池供电、需要快速传输数据的设备。C模式介于两者之间帧长可变但对功耗没那么敏感。工程上选型的核心逻辑是看产品的上报策略和功耗预算。如果你做的是一个月上一次数据的热量表用S模式就够了结构简单、调试容易。如果做一个突发上报的智能阀门平时绝少通信但一有事件就要尽快发出去T模式的短空中时间更有优势。需要注意的是S模式和T模式的同步字、前导码、速率都不同接收方必须知道对方用的是哪种模式才能解出来。这也是多模网关的复杂性所在——你得在868 MHz频段同时监听S模式和T模式或者在软件里按时间片切换配置。3.2 SX1262的GFSK与LoRa配置流程如果评估板上用SX1262做射频收发它支持两种包类型PACKET_TYPE_GFSK和PACKET_TYPE_LORA。无线M-Bus物理层本质是2-FSK在SX1262里对应GFSK调制。配置LoRa模式的典型流程大致如下// 切到LoRa模式 SX126xSetPacketType(PACKET_TYPE_LORA); SX126xSetRfFrequency(868300000); // 868.3 MHz // 调制参数扩频因子、带宽、编码率、低数据速率优化 SX126xSetModulationParams(SF12, BW125K, CR_4_5, LDRO_ON); // 包参数前导码、显式头、长度、CRC SX126xSetPacketParams(8, HEADER_EXPLICIT_VARIABLE_LENGTH, 32, CRC_ON); // 发射功率 22 dBm SX126xSetTxParams(22, RADIO_TX_RAMP_200U);跑无线M-Bus的GFSK模式时把包类型换成PACKET_TYPE_GFSK再设置数据速率、频偏、接收带宽这三个调制参数。关键在于无线M-Bus标准对前导码、同步字、帧格式有严格定义SX1262自带的包处理器虽然能处理CRC和前导码但同步字和长度字段往往需要自己在MCU里组帧。// GFSK模式配置示例 SX126xSetPacketType(PACKET_TYPE_GFSK); SX126xSetRfFrequency(868300000); // 调制参数波特率、频偏、接收带宽 SX126xSetModulationParams(BR_100K, FDEV_50K, RXBW_150K); // 前导码、可变长度包、CRC SX126xSetPacketParams(24, HEADER_EXPLICIT_VARIABLE_LENGTH, 0, CRC_ON);如果你用的是无线M-Bus专用收发芯片就不需要手动拼这么多帧细节驱动里通常直接提供S/T/C模式的配置函数AES-128加密可能要自己调用MCU加密引擎来做。具体API以Semtech官方驱动或芯片厂商SDK为准我这里写的是通用调用逻辑。3.3 无线M-Bus帧结构与AES-128加密无线M-Bus的数据帧在链路层大概是这个结构前导码Preamble、同步字Sync、L字段长度、C字段控制、M字段制造商标识、A字段仪表地址、CI字段控制信息、数据负载最后是CRC校验。typedef struct { uint8_t preamble[3]; // 前导码通常0x55 0x55 0x55 uint8_t sync; // 同步字不同模式不同 uint8_t length; // L字段后续字节数 uint8_t control; // C字段 uint8_t manufacturer[2]; // M字段两个字节 uint8_t address[4]; // A字段四字节仪表地址 uint8_t ci; // CI字段控制信息 uint8_t payload[]; // 应用层数据 uint8_t crc[2]; // CRC16校验 } wmbus_frame_t;AES-128加密在无线M-Bus应用层用得很多EN 13757-3里定义了加解密和认证方法。实际项目里密钥通常会根据仪表的地址和制造商标识派生表计和集中器各存一份加密运算在MCU里用硬件AES引擎完成射频芯片不参与加解密。调试时最容易出问题的就是密钥不匹配和CMAC认证失败。密钥错一位接收方解出来全是乱码你还以为射频参数没调对。我建议先把加密关掉跑通裸帧确认链路稳定后再把加密打开分步排查。4. 实测数据复盘链路预算、覆盖距离、功耗的账怎么算4.1 链路预算的计算方法链路预算公式很朴素链路预算 发射功率 接收灵敏度 - 链路损耗。这个值越大通信距离越远。把这些参数放一起算能看明白为什么169 MHz和868 MHz覆盖差距这么大。接收灵敏度主要看数据速率和调制方式。速率越低接收灵敏度越好LoRa扩频因子越高灵敏度也越好。做一个典型对比工作模式频率发射功率接收灵敏度典型值链路预算无线M-Bus S模式868 MHz14 dBm25 mW-108 dBm122 dB无线M-Bus T模式868 MHz14 dBm-104 dBm118 dB无线M-Bus 169 MHz169 MHz27 dBm500 mW-108 dBm135 dBLoRa SF12/125 kHz868 MHz22 dBm-137 dBm159 dB注意上面几档功率差异是法规和产品定位造成的868 MHz频段一般限制25 mW发射功率169 MHz在部分欧洲国家允许更高发射功率LoRa在868 MHz频段也受占空比和功率上限约束。这些链路预算数字意味着169 MHz的理论覆盖能力比868 MHz高出13 dB左右折算到开阔地距离差出好几倍。自由空间路径损耗公式特别适合做快速估算FSPL(dB) 20log10(距离km) 20log10(频率MHz) 32.44。按照这个公式1公里的自由空间路径损耗在868 MHz约是91 dB在169 MHz约是77 dB低频天然就比高频多了14 dB的余量。这也是为什么同样在开阔地169 MHz能轻松跑出几公里868 MHz几百米后就开始吃紧。4.2 实测结果开阔地、城区、地下场景的差异我实际测试时选了三个典型场景开阔地、城市道路、地下车库入口和管廊。开阔地测试中868 MHz无线M-Bus在1公里内比较稳定接收余量充足169 MHz在相同位置能拉到将近3公里而且接收信号强度还有余量。LoRa SF12在空地上几公里毫无压力但它的短板是空中时间太长发送一个几十字节的小包要一秒左右不适合频繁通信。城市道路测试就直观得多。868 MHz在500米左右开始出现丢包路口拐弯、树荫遮挡都有影响。169 MHz在同一条路线上能做到2公里稳定穿透墙角的能力明显更强。LoRa在城区约1.5公里内可靠超过后丢包率上升原因是多径衰落和街道峡谷效应。地下车库和管廊是最考验穿透力的场景。868 MHz穿过水泥楼板后信号掉了接近30 dB基本不可用。169 MHz穿两层楼板后还有余量能维持较低速率通信。管廊内如果直线可视169 MHz可以沿管廊传几百米。测试结论和链路预算估算整体对得上差异主要来自场景损耗模型。我建议做项目规划时城区868 MHz按300到500米覆盖半径设计郊区169 MHz按2到3公里打底LoRa回传则主要看天线高度和地形不能只按开阔地数据拍脑袋。4.3 功耗实测与上报周期规划功耗测试我在前面表格里给过数据这里聊一下怎么根据这些数据定上报周期。假设一个电池供电的无线M-Bus表计每天上报24次每次T模式发射30毫秒发射电流45 mARX听信道每天累计10秒电流10 mA。sleep电流2 uA电池容量5000 mAh30毫秒平均每天发射耗电约0.009 mAhRX耗电约0.028 mAhsleep一年大约17.5 mAh加上自放电5年电池寿命完全可以做到。但如果RX窗口设计不合理每天听信道开10分钟那一年的RX耗电就会到600多mAh电池寿命立刻打对折。很多人觉得RX电流只有10 mA不算大但低功耗设备里时间才是最大的成本。评估板把测量跳线引出来真正的价值就是让你在做功耗预算时有真实数据可用而不是靠猜。5. 双射频共存项目里的三个经典坑干扰、晶振、占空比5.1 低频PA干扰高频接收868 MHz灵敏度掉档这是我把169 MHz发射和868 MHz接收同时打开时发现的问题。单独测868 MHz接收灵敏度是正常的但169 MHz一发射868 MHz接收灵敏度掉了5到8个dB表现为丢包率上升。问题根源有两个。一是近场耦合169 MHz的PA大功率发射时能量通过PCB走线、地平面和空气耦合到868 MHz接收前端让LNA进入饱和区。二是电源干扰两个射频芯片共用电源轨时PA瞬间抽流会引起电源电压跌落和纹波噪声直接耦合进接收链路。解决思路按优先级排序软件分时是最快的把169 MHz发射和868 MHz接收完全错开但这对同时收发需求的网关不适用硬件上给两个射频前端加屏蔽罩在电源走线下功夫用单独LDO给PA供电再激进一点的方案是加射频开关做天线隔离代价是插损和成本。做PCB布局时一定要把两个射频前端分开拉大距离中间留足地过孔不要为了板子面积牺牲射频隔离度。5.2 晶振频偏无线M-Bus比LoRa更挑剔有一次调试169 MHz收发明明两边频率配置一样集中器就是解不出数据偶尔解出来的也是乱码。用频谱仪看发射信号发现实际载波频率偏了十几kHz。原因就是板子用的普通晶振在温度变化后频率漂移超出了GFSK解调器的容忍范围。LoRa对这种频偏相对不敏感因为接收机有自动频率校正机制。但无线M-Bus的2-FSK解调器就没有这么宽容频偏一大解调误码率直线上升。解决方式是选TCXO或者在上电后做一个频偏校准流程把晶振误差算出来再补偿到频率寄存器里。我个人的建议是只要做无线的产品TCXO这几块钱别省省下来的钱大概率会在现场调试时加倍还回去。5.3 占空比合规与发射时长统计最后一个坑严格说是合规问题但很多工程师容易忽略。欧洲SRD频段有明确的占空比限制868 MHz频段通常要求1%以内169 MHz频段虽然有更高功率上限但同样受占空比约束。也就是说不能无限制地连续发射。评估板测试的时候如果你写了个循环连续发数据而不做任何限制很快就把占空比用完了。实验室抽测或者现场频谱扫描时这种违规是能直接被发现的。我在测试脚本里专门加了一个发射时长计数器每次发送前检查当天累计发射时间超过阈值就延迟到下一周期。这种逻辑看着简单但量产固件里不加的话后续认证阶段会遇到大麻烦。另一个容易被忽略的点是LoRa的空中时间。SF12速率下一个几十字节的包空中时间可能超过一秒连续发几个包就把占空比吃掉了。所以LoRa上行策略一定要设计成低频、小包而不是像Wi-Fi一样连续传数据。用LoRa做回传没问题但做数据密集型应用选型时就要慎重。6. 写完这套评估我提炼出的几条实用建议玩了两周这块双频段无线M-Bus加LoRa的评估套件最后聊点个人体会。第一评估板最大的价值不在于跑通demo而在于当你自己做板子的时候它是一份射频性能的基准。天线怎么匹配、TCXO怎么选、PA电源怎么处理、两个射频前端怎么隔离这些经验单看数据手册看不出来但对照评估板的PCB布局和实测数据就能少走很多弯路。第二拿到任何sub-GHz评估板先做基础射频测试再跑协议栈。用矢量网络分析仪看两个频段的S11用频谱仪看发射频谱是否干净用信号源加功率计测接收灵敏度。这一套基本功半小时做完后面调协议栈时遇到问题就知道是射频问题还是软件问题不会互相甩锅。第三如果项目只做单一市场比如只做868 MHz无线M-Bus那没必要为了兼容169和LoRa增加硬件成本。但如果团队做的是多市场产品或者网关类设备双频段加LoRa的评估套件值得认真研究它把三种最常用的sub-GHz连接方式压缩到了一块板子上对产品定义和方案选型有很强的参考价值。最后分享一个小技巧测试多模设备时一定留个脚本记录每次发射的时间戳和频段。后续排查干扰和占空比问题这份日志比频谱仪截图管用得多。射频调试没有玄学只有还没被定位到的变量。