FEATURED · 精选文章

双频无线M-Bus+LoRa评估板设计:从架构到实测

发布时间 / 2026/8/27 20:07:10
来源 / 创域科博编辑部
栏目 / 资讯中心
双频无线M-Bus+LoRa评估板设计:从架构到实测 1. 为什么要做双频无线M-Bus加LoRa的评估板我在智能抄表这个圈子里泡了将近十年做过的表计方案、集中器方案、无线模块方案少说也有几十套。前两年接了一个欧洲客户的预研项目需求很简单但也很刁钻他们要一套能同时覆盖169MHz和868MHz两个频段的无线M-Bus评估套件而且还得预留LoRa通道。当时市面上能买的评估板基本都只支持单个频段要么是169MHz的远距离型要么是868MHz的通用型想做跨频段对比测试就得同时买好几块板子换来换去非常痛苦。这套评估套件的核心价值其实就在于“组合”二字。无线M-Bus是欧洲智能表计领域的事实标准EN 13757-4协议定义了169MHz和868MHz两个主要频段的工作方式。169MHz频段穿透能力强、覆盖距离远适合农村、郊区这种表计分散的场景868MHz频段天线尺寸小、数据速率高适合城区密集安装的场景。而LoRa通道的加入解决的是“最后一公里”的回传问题——当表计数据通过M-Bus汇集到集中器之后集中器怎么把数据送到云端传统方案是走GPRS或者有线网络但在地下室、偏远工业现场这类地方LoRa往往比蜂窝网络更靠谱。这篇文章我想把这套评估套件的完整设计思路、硬件选型、软件架构、实测数据和踩坑记录都摊开来聊聊。如果你是做智能抄表、工业数据采集、智慧城市传感器网络的或者正准备评估M-Bus和LoRa这两种无线技术在自家产品里怎么选型这篇文章应该能帮你省下不少调研时间。2. 整体架构设计三个无线通道怎么和平共处拿到这个项目需求之后我第一反应不是去挑芯片而是先把系统架构理清楚。评估套件不是最终产品它的使命是让工程师能在同一块板子上快速验证不同频段、不同协议的通信效果所以架构设计必须够灵活。2.1 双频M-Bus的应用场景差异先说说为什么非要双频。很多国内的工程师对无线M-Bus不太熟我先花点篇幅把背景交代清楚。EN 13757-4把无线M-Bus的工作频段划分成几个区域最常用的是868-870MHz的“标准频段”和169MHz的“低频段”。868MHz频段的物理层速率通常是32.768kbps或100kbps信道间隔25kHz适合表计密集的城区场景——一栋楼里几十块表大家分时隙上报吞吐量够用。而169MHz频段的速率就低多了典型的配置是2.4kbps或4.8kbps但换来的是更好的绕射能力在农村、山地、地下管网这种环境里169MHz能穿过的墙体数量和覆盖距离都明显优于868MHz。实际项目里不同国家、不同水司燃气公司对这个频段的偏好差异很大。比如北欧国家因为地广人稀很多项目直接选169MHz一个集中器可以覆盖方圆几公里的表计而中欧国家的城区项目则更倾向868MHz因为表计密度高需要更高的系统容量。做产品的人最头疼的就是这个——同一块主板只支持一个频段就得做两个硬件版本。所以评估套件做成双频直接让测试人员在一块板子上对比两种频段的覆盖差异省去大量重复的硬件调试工作。2.2 LoRa通道的定位补盲和回传LoRa在这个架构里的定位我反复斟酌过不能简单理解成“多一种无线协议”那么简单。从评估套件的视角看LoRa通道有三个典型用法。第一种用法是集中器数据回传。M-Bus网络把表计数据汇聚到集中器之后集中器侧的LoRa模块可以把数据传到几公里外的网关摆脱SIM卡和有线网络的限制。这是LoRa最天然的应用场景。第二种用法是盲区补点。有些表计安装在M-Bus信号覆盖不到的角落比如地下深井、金属井盖下方的水表这时候可以在旁边部署一个带LoRa的低功耗中继节点把M-Bus数据转成LoRa报文发出去中继节点用电池供电也能跑好几年。第三种用法是非计量数据的宽带信道。M-Bus的报文结构主要是为计量数据设计的但你如果想定期读取表计的状态信息、告警日志甚至是固件版本用LoRa这种更灵活的报文格式反而更方便。评估套件把LoRa加进来本质上就是给测试人员提供多一个工具箱。2.3 系统框图与模块划分我画系统框图的时候把整个评估套件划分成五个核心模块主控单元、双频M-Bus射频单元、LoRa射频单元、电源管理单元和人机交互单元。主控单元我选的是STM32L476系列Cortex-M4内核主频80MHz片上资源丰富关键是低功耗性能很能打。射频单元这边M-Bus两个频段我用了独立的射频前端芯片而不是用一个宽频芯片软件切换——这样设计的好处是两个频段可以同时监听互不干扰对于评估套件来说这是必须的因为你经常需要对比两个频段的信号质量如果只能分时工作测试效率会低很多。LoRa部分用了Semtech的SX1262这颗芯片从150MHz到960MHz全覆盖一个芯片就能支持LoRa和FSK两种调制方式后续如果想用FSK跑自定义协议也方便。电源管理部分既要支持USB供电方便调试又要支持锂电池供电模拟真实的低功耗运行场景。人机交互就是一块小LCD屏加几个按键用来切换测试模式和显示接收到的报文内容。整体做下来板子的尺寸控制在10cm×10cm以内方便放到各种测试工装里。3. 核心硬件选型与设计细节硬件选型这块我踩过不少坑挑几个重点展开说都是实际项目中总结出来的经验。3.1 双频M-Bus射频芯片选型对比M-Bus射频前端的选择直接决定通信性能。我调研阶段看了几款主流的方案包括TI的CC1120/CC1125、NXP的OL2385还有AMBER wireless的系列模块。简单对比一下芯片/模块支持的频段发射功率接收灵敏度接口方式典型场景TI CC1120868MHz14dBm-121dBm2.4kbpsSPI868MHz M-BusTI CC1125169MHz16dBm-125dBm2.4kbpsSPI169MHz M-BusNXP OL2385868MHz14dBm-118dBm38.4kbpsSPI/UART868MHz M-Bus双向通信AMBER AMR-II系列双频可选14dBm-120dBm左右UART模块化快速开发我自己最后选了TI的方案原因是TI的SmartRF Studio调试工具太方便了寄存器配置可以可视化调整还能直接导出配置文件嵌入到代码里。对于评估套件这种需要频繁调整射频参数的场景这个工具能省掉大量查数据手册的时间。3.2 天线设计与布局的物理约束天线这块是整个硬件设计里最容易被低估的部分。169MHz和868MHz的波长差异巨大直接决定了天线的物理尺寸169MHz的1/4波长单极子天线大约44cm而868MHz只要8.6cm。如果设备外壳比较小169MHz天线根本不可能在内部展开只能用外置鞭状天线或者螺旋天线做小型化处理。评估套件上我的做法是三个射频通道都通过SMA连接器外接天线。板载的话筒天线只预留了868MHz的PCB天线焊盘位置方便在没有外置天线的时候做快速功能验证。这里有个很重要的经验多天线同时工作时天线之间的间距至少要保持半个波长以上否则强信号会灌入相邻接收通道导致接收机阻塞。868MHz半波长约17cmLoRa在470MHz半波长约32cm169MHz半波长约89cm——这意味着169MHz天线和另外两个天线之间很难做到足够的物理隔离。实操中只能依赖两个手段一是天线分时工作二是靠前端滤波器增强选择性和隔离度。3.3 射频前端滤波与隔离设计隔离问题是双频M-Bus加LoRa这个架构里最核心的硬件难题。三个射频通道同时工作发射的时候如果不做好滤波杂散辐射会直接淹没相邻通道的接收。我在板子上为每个射频通道配置了独立的SAW滤波器。169MHz通道用村田的窄带SAW带宽约几百kHz把带外信号抑制到40dB以上868MHz通道选择通带较宽的SAW覆盖868-870MHz整个M-Bus频段LoRa通道因为SX1262本身就集成了不错的收发开关和匹配网络我主要依靠外部低通滤波器做谐波抑制。另外还有一个细节值得注意双频M-Bus芯片的中频频率处理。CC1120和CC1125的中频规划不同如果两个芯片共用一套参考时钟和PCB布局中频泄漏可能会在另一个频段上产生寄生响应。我的解决办法是让两个芯片使用独立的TCXO虽然增加了成本但作为评估套件稳定性和可预测性更重要。3.4 低功耗设计从硬件层面打好底子评估套件虽然不像量产表计那样对功耗苛刻到微安级别但既然是针对抄表场景的评估工具功耗数据必须真实可信否则客户拿你的板子测出来的功耗和量产板差太多后面有的扯皮。我的功耗设计思路分三路主控、射频、外设。STM32L476在停止模式下的功耗可以压到1μA以下这在MCU里已经算非常优秀了。射频芯片的睡眠功耗差异很大CC1120在shutdown模式下的电流大约是0.3μASX1262的睡眠模式约0.6μA都算可接受。但要注意的是TCXO的功耗往往被忽略——很多TCXO工作时电流要1.5-2mA如果一直通电会直接把待机功耗拉上去。所以我的板子上TCXO的供电由MCU的GPIO控制只在射频收发的时候才打开。实测下来的待机功耗是双M-Bus射频芯片进入shutdown、SX1262进入sleep、MCU进入stop模式整板电流约3μA。这个数据在后面给客户做功耗预算估算的时候非常有说服力。4. 软件架构与协议栈处理硬件搞定之后软件是另一个大工程。评估套件的软件要做到“开箱即用”客户拿到手插上USB串口就能收发数据同时又要保留足够的灵活性让客户改协议参数做二次开发。4.1 双协议栈共存的调度策略评估套件同时支持M-Bus和LoRa两种协议栈系统里必须有一个统一的调度层来管理三路射频通道。我用的方法是基于状态机的裸机调度没有引入RTOS原因主要有两个。第一评估套件的典型操作模式是“监听-转发”数据流基本上是单向的并发度很低RTOS带来的线程切换开销和优先级配置复杂度完全没有必要。第二裸机状态机在低功耗模式下更容易控制——想进stop模式的时候所有状态机都处于空闲态直接进就行不用担心某个线程还在等待队列里导致无法睡眠。调度层的核心是一个事件队列。射频中断服务函数只做一件事把接收到的数据包放进队列然后置位事件标志。主循环检测到事件标志后根据当前的工作模式决定如何处理数据包。工作模式由按键和串口指令共同控制比如在“M-Bus透传模式”下169MHz收到的数据直接通过LoRa转发出去在“双频监听模式”下两个M-Bus频段的数据都会打印到串口调试终端上。4.2 M-Bus协议栈解析与实现M-Bus协议栈我完整实现过一遍把EN 13757-4的数据链路层和应用层都吃透了。这里说实话工作量比预想的大很多。EN 13757-4里的三种传输模式——S模式、T模式和C模式我评估套件里主要支持T模式。T模式是表计自动上报的标准方式表计周期性地发送数据帧集中器侧只需要监听。T模式的帧结构包含前导码、同步字、数据区和校验数据区的MAN帧Meter Application Frame承载具体的表计数据。解析MAN帧的时候核心是对DLMS/COSEM信息对象的处理包括表计ID、累计用量、瞬时流量、状态标志等数据项。这个解析过程我建议用状态机而不是逐字节处理的瀑布式代码。原因很简单M-Bus帧里经常包含变长字段如果只是顺序解析遇到异常帧很容易越界。状态机可以把“找同步字”“解析头”“解析数据体”“校验”分成独立的状态每一帧处理完再做CRC校验校验失败直接丢弃。这套代码我现在还在用稳定性和可维护性都很满意。4.3 LoRa参数配置与Duty Cycle控制LoRa部分的代码相对简单SX1262有Semtech官方提供的驱动库但有几个参数设置必须注意。首先是频段规划。欧洲地区LoRa常用的频段是863-870MHz的SRD频段但如果你的M-Bus也工作在868MHz两个系统在频率上会有重叠。我实测下来除非天线隔离度做得特别好否则LoRa发射时会对M-Bus接收产生明显的同频干扰。所以我在评估套件上默认把LoRa配置在470-510MHz这个中国常用的频段上——一方面避开了和868MHz M-Bus的频率冲突另一方面这个频段在城市环境下的传播特性更适合用来模拟“跨区域回传”的场景。如果你在别的区域使用可以通过命令行参数重新配置频率。其次是Duty Cycle限制。ETSI规定868MHz频段在某些子带的占空比不能超过1%也就是说设备在1小时内发射时间不能超过36秒。这个限制对于评估套件来说是个大坑——客户在测试的时候不会管你什么法规限制他们就是要长时间连续发数据看质量。但作为负责任的评估工具代码里我还是加了一个可配置的Duty Cycle检查函数默认在“合规模式”下开启连续发射超过限制会自动插入等待时间。如果客户明确表示只想做实验室测试不在乎合规性可以用“演示模式”把这个检查关闭。4.4 低功耗唤醒与事件管理评估套件的电池供电模式下软件需要支持定时唤醒和无线唤醒两种方式。定时唤醒很好处理RTC定时器定期触发中断MCU醒来后轮流打开三个射频通道的前端做短暂监听看是否有数据到达。无线唤醒则要靠M-Bus的WMBUS唤醒帧格式——特定格式的唤醒报文会让射频芯片在接收模式下检测到信号然后通过引脚中断唤醒MCU。这里有一个容易出问题的细节三个射频通道的监听时序要错开。如果168MHz通道和868MHz通道同时监听两个芯片的接收本地振荡器互调可能会产生虚假的唤醒信号。我在调度器里把三个通道的监听窗口设计成时间片轮转每个通道监听窗口约10ms三个通道轮完一圈是30ms。实测下来表计上报通常持续几百毫秒30ms的轮转周期不会漏掉数据包。5. 实测过程与关键数据软件和硬件都调完了接下来是评估套件最重要的环节——实测。这部分我直接把我实际测试的数据和结论贴出来包括环境、方法、结果给大家做个参考。5.1 测试环境搭建测试分室内和室外两个阶段。室内测试在公司办公楼的走廊里做走廊长约80米两侧是办公室和混凝土墙模拟“楼内抄表”的典型环境。室外测试找了一个工业园区有一条近500米长的开阔道路两侧是低矮厂房模拟“户外远距离抄表”的场景。测试仪器包括频谱分析仪用于观测发射频谱和杂散、矢量网络分析仪用于天线匹配调试、逻辑分析仪用于抓取射频芯片与MCU之间的SPI通信时序、以及两台评估套件一收一发。5.2 灵敏度与链路预算对比接收灵敏度是无线通信最核心的指标我测了三个通道在不同速率下的灵敏度表格如下通道调制方式速率实测灵敏度理论灵敏度参考169MHz M-Bus2-FSK2.4kbps-123dBm-125dBm868MHz M-Bus2-FSK32.768kbps-117dBm-118dBmLoRaLoRaSF10/125kHz-129dBm-132dBm实测值比理论值差2-3dB这个差距在可接受范围内主要原因是天线效率和测试线缆损耗。有意思的是在对比169MHz和868MHz链路预算的时候虽然169MHz灵敏度和发射功率都更好但实际覆盖测试中在室外环境下两者差距并没有想象中那么大——因为868MHz频段的路径损耗本身就比169MHz小。真正让169MHz在穿透场景胜出的是它更低的频段在穿透多层墙体时的绕射能力。5.3 室内室外覆盖测试结果室内走廊测试868MHz M-Bus在走廊尽头的接收成功率约95%169MHz M-Bus约99%LoRaSF10/125kHz约98%。如果把节点移动到走廊旁边的封闭会议室里868MHz的信号瞬间降到约60%成功率169MHz和LoRa仍然能保持90%以上。这个结果非常直观验证了我前面说的频段特性。室外500米测试169MHz M-Bus和LoRa在视距条件下都能100%接收868MHz M-Bus在距离拉长到约400米时开始出现丢包。继续拉到800米169MHz和LoRa仍然工作正常868MHz已经基本不可用。LoRa的低速率优势在这里体现得淋漓尽致——SF12/125kHz的灵敏度比SF10还要高约3dB把距离再拉长到1公里完全没问题。5.4 功耗实测波形功耗测试是客户最关心的部分之一。我用示波器的电流探头记录了评估套件在“周期上报模式”下的电流波形。在一个完整的上报周期内每30秒上报一次电流波形分为几个阶段睡眠阶段电流约3μA唤醒后MCU初始化约5mA持续约2ms射频发射阶段电流约40mA持续约20ms随后回到睡眠。算下来平均功耗约0.05mW如果用一节2000mAh的锂电池供电理论待机时间超过5年。这个数据给客户做系统级功耗预算提供了可靠依据。6. 常见问题与排查记录评估套件开发过程中遇到的问题不少挑四个最有代表性的分享出来这些问题在后续客户反馈里也反复出现说明很有共性。6.1 双频同时收发时的接收机阻塞第一次做双频并发测试时发现169MHz通道在868MHz通道发射的同时接收数据误包率明显上升。排查过程比较曲折一开始怀疑是电源耦合后来用频谱仪观察才发现是868MHz发射的谐波分量落进了169MHz的接收带宽内。解决办法是三层硬件上增强SAW滤波器的带外抑制软件上在调度器里增加“发射静默窗口”——某一路发射期间其他接收通道的数据会被丢弃避免把干扰数据误判为有效帧。另外在天线布局上尽量拉开三个天线的空间距离能有效降低耦合干扰。6.2 SX1262的TCXO校准问题SX1262在低功耗模式下如果TCXO供电断开重新上电后需要做校准否则频率可能偏离数百赫兹导致接收灵敏度下降。这个问题在代码里比较容易忽略但影响很大。我的做法是在每次SX1262从sleep模式唤醒后都主动执行一次校准流程并等待校准完成中断后再进入收发状态。这个改动让LoRa通道的接收灵敏度稳定了约2dB。6.3 M-Bus帧丢同步字问题M-Bus T模式的数据帧前导码由多个0x55字节组成然后是同步字0xA5。在一些弱信号环境下接收方可能因为前导码长度不足而错过同步字。排查中发现这往往不是射频灵敏度的问题而是接收端的“同步字检测逻辑”要求过严。解决方案是在接收端软件里增加“前导码长度自适应”逻辑——如果检测到部分前导码但同步字校验失败不立即丢弃而是继续监听一个较长的时间窗口等待可能的重传帧。这个优化在弱信号环境下能把帧接收率提升5-10个百分点。6.4 天线不匹配导致的驻波比问题客户反馈说LoRa通道发射距离很短检查后发现是天线匹配问题。SMA连接器到天线之间的板级传输线做了50Ω匹配但客户用的第三方天线阻抗偏离了50Ω导致驻波比偏高反射功率大。这个问题的排查思路是先用矢量网络分析仪测量天线端的S11参数确认驻波比在可用范围内然后在发射通路里增加连续波发射测试模式用频谱仪直接观测天线端的发射功率。实测发现S11在-6dB以上驻波比约3:1时发射效率会下降30%以上。评估套件的使用文档里我专门加了两页天线选型和安装指南提醒客户注意天线匹配和布置间距。6.5 问题速查表问题现象可能原因排查方法解决方案双频并发误包率高射频前端隔离不足/谐波干扰频谱仪观测各通道带外信号加强SAW滤波/错开发射窗口LoRa距离短天线驻波比差/TCXO未校准网分测S11/检查校准流程更换天线/补校准流程M-Bus帧丢失前导码检测过严/信号弱抓SPI报文/检查接收时序自适应前导码窗口待机电流偏大射频芯片未完全休眼逐个量各芯片待机电流通过GPIO关断TCXO供电7. 这套评估套件的扩展方向评估套件做完了手里留着这块板子后续扩展空间还很大我自己已经试通了一部分说几个我认为最值得做的方向。第一个方向是把LoRa通道升级成完整的LoRaWAN协议栈。目前评估套件的LoRa通道只做了点对点通信如果接上LoRaWAN网关和网络服务器就能完整模拟“表计数据通过M-Bus汇聚再通过LoRaWAN上云”的全链路系统。这对评估端到端方案的客户价值很大。第二个方向是增加M-Bus C模式双向通信的支持。目前评估套件主要监听T模式的表计自动上报但很多客户需要下行控制功能比如远程关阀、远程配置表计参数。如果增加C模式支持评估套件就能扮演集中器的角色直接和表计做双向交互。第三个方向是把三个通道的数据融合到同一个可视化仪表盘。我在PC端写了一个简单的数据可视化工具把三路通道接收到的数据按时间轴展示可以直观地对比同一时间点不同通道的信号质量。这个工具如果做成网页版再加上地图定位功能就相当接近一个专业的无线网络路测工具了。第四个方向是支持通过USB虚拟串口进行自动化测试。评估套件板载的USB转串口芯片支持在PC端直接收发AT指令这些指令可以嵌入到自动化测试脚本里实现“一键跑完所有射频指标测试”的半自动化测试流程。我目前已经在用Python脚本通过串口控制评估套件做灵敏度自动测试一个人可以同时跑三块板子效率提升非常明显。从实际项目角度说这个评估套件最大的价值还不是那些指标和参数而是它把M-Bus和LoRa这两套生态放在同一块板子上让团队里的硬件工程师、软件工程师和测试工程师有了一个统一的调试平台。以前遇到通信问题硬件说是软件调度问题软件说是硬件干扰问题现在拿着这块板子谁能复现问题谁负责定位扯皮的效率低多了。如果你也在做类似的无线通信方案评估强烈建议优先把“多协议共存的验证平台”这件事放在立项的第一步后面能省下大量的跨团队沟通成本。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻