ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Nucleo-WL55JC演示固件实战:从AT命令到LoRaWAN入网

Nucleo-WL55JC演示固件实战:从AT命令到LoRaWAN入网 1. 拿到Nucleo板之后为什么先要玩转演示固件STM32CubeWL这颗芯片在ST的无线产品线里地位很特殊它和之前那些需要外挂射频芯片的方案不一样Sub-GHz收发器直接集成在MCU内部一颗芯片就把LoRa、Sigfox这些远距离低功耗通信的应用场景都覆盖了。我最早接触STM32WL55JC的时候第一反应是终于不用再纠结SX126x和MCU之间的SPI接口怎么布线了但紧接着就发现芯片集成度越高软件栈的复杂度也越往上走。射频部分不是简单把寄存器配置对了就能发数据的协议栈、调制参数、天线匹配、省电策略全都搅在一起纯靠啃参考手册起步很容易陷进去出不来。所以拿到NUCLEO-WL55JC开发板之后我强烈建议你先别急着改代码第一件事就是把官方演示固件完整跑一遍。所谓演示固件说白了就是ST官方为这块板子定制的二进制备份里面已经把Sub-GHz无线通信、AT命令解析、LoRaWAN入网、点对点传输这些基础功能都编译好了。你只需要通过USB把开发板连上电脑打开串口终端就能通过AT命令测试无线电收发能力整个过程完全不碰编译器和调试器。这套固件对初次上手的人价值很大至少体现在三个层面。第一它给出了一个出厂即是可用状态的基线你可以先确认硬件本身没问题天线和射频链路是通的第二它演示了AT命令和物理层射频、LoRaWAN协议层之间是怎么衔接的这对理解整个软件架构有直接帮助第三它本身就是一个很好的SDK参考代码等你熟悉了流程之后完全可以基于它改出自己的应用不用从零搭工程。很多老工程师拿到新板子喜欢直接看示例工程开撸我个人的习惯是先跑预编译固件再做二次开发。这就像拿到一台新仪器接上标准源先看读数对不对再去测量自己的信号。你如果跳过这个验证步骤直接灌自己的程序万一无线不通你根本不知道是硬件问题、软件配置问题还是天线问题排查起来非常痛苦。下面的内容我会从开发板的基本情况讲起把演示固件里每个组成部分的原理和使用方法都拆开讲清楚包括AT命令集的工作机制、LoRaWAN的入网流程、物理层点对点通信的坑最后再分享一些我对从演示固件迁移到实际项目开发的经验。这篇文章适合两类读者一类是刚拿到NUCLEO-WL55JC的初学者先通过演示固件建立整体认知另一类是把STM32WL用在真实产品里的工程师想搞明白官方的这套东西到底能复用多少。2. 预编译固件背后的硬件平台与工具链2.1 NUCLEO-WL55JC板级资源概述NUCLEO-WL55JC是一块LQFP48封装的开发板板载了STM32WL55JC这颗双核芯片。所谓双核是指它内部有一个Cortex-M4应用核和一个Cortex-M0射频核这个M0核专门用来处理LoRa和Sigfox的协议栈M4核跑用户应用。这种架构的好处是复杂的射频协议栈不会抢占应用核的资源坏处是你第一次调试的时候可能会被两个核的并行交互搞晕。板子的另一头是ST-LINK调试器部分通过一个USB口就能实现供电、程序下载、虚拟串口三合一功能。板上已经集成了SMA天线座和一套匹配网络默认覆盖868MHz和915MHz频段国内2.4GHz的ISM频段不在这块板子的考虑范围内这是需要注意的。另外板上还引出了Arduino兼容排针方便外接传感器模块。预编译演示固件就是针对这块板子定制的它依赖了板载的ST-LINK虚拟串口作为AT命令输入输出通道物理层天线通过SMA座外接天线测试。这里有个容易忽略的细节NUCLEO-WL55JC板载的射频开关和匹配网络默认是支持LoRa频段的但如果你要测试Sigfox需要确认你的固件版本里有对应的Region配置否则发射频率可能不符合当地的频率规划只会在室内做射频摸底倒问题不大真要外场测试就得细心检查。2.2 需要的软件环境和烧录方式玩演示固件最少需要的软件工具是STM32CubeProgrammer。你可以从ST官网下载它会同时支持命令行和图形界面两种模式。烧录方式也简单把NUCLEO板用USB线连到电脑板上的ST-LINK就会被识别为一个编程接口打开STM32CubeProgrammer选择STM32WL55JC型号把预编译的hex文件拖进烧录框点下载就行。如果你手头已经装了STM32CubeIDE那也可以直接通过IDE的Run Configuration来完成烧录。不过这里有个细节STM32CubeWL的演示固件仓库里release版本会直接提供hex文件而开发版源码则需要你用CMake或者IDE自行编译。建议初学阶段直接下载release包里面附带了预编译好的多个工程hex比如AT_Slave、LoRaWAN_EndNode、PingPong这些按需烧录就行了。串口终端我用的是MobaXterm其实任意支持串口的终端工具都行关键是注意波特率。演示固件默认的AT命令串口波特率是115200bps数据位8无校验位一个停止位这是ST官方的默认配置。有些网友喜欢改成9600或者921600改动之后记得把板子重新复位设置才会生效。2.3 首次上电与版本确认拿到板子插入USB线之后如果出厂时固件已经被预先烧录好你会看到板上的LED快速闪烁同时电脑的设备管理器里会出现一个COM口。部分批次可能出厂不带固件或者固件被人动过这时不会出现任何反应。先用STM32CubeProgrammer读一下芯片的Flash内容判断是否有有效程序如果你不想用编程器看也可以直接按住板上的复位键然后在串口终端看有没有打印信息。我习惯烧录后的第一件事就是发一条AT命令确认系统活着。如果返回OK说明AT命令解析链路没问题。随后我建议发AT?查看所有支持的命令列表固件版本信息一般通过ATI或者ATVER之类的命令查看不同版本的演示固件命令格式略有差异。通过这一轮的确认你就对自己的板子处于什么状态有了清晰认知后面所有测试都是在已知基线之上进行的出问题也容易隔离。3. 演示固件的源码结构与三大核心模式3.1 源码目录怎样读才高效从ST官网下载STM32CubeWL固件包之后解压开你会看到好几个大目录初次接触的人往往不知道该从哪看起。这里我建议按Projects/NUCLEO-WL55JC/Applications/这条路径走里面会按应用场景分层比如AT_Slave、LoRaWAN_EndNode、PingPong、Sigfox_EndNode等。每个应用文件夹下都包含Inc、Src、EWARM、STM32CubeIDE这些标准子目录源码和工程文件分别存放。我不建议打开源码就一头扎进main.c从头读到尾。更好的顺序是先看应用层的readme.txt每个示例工程都会有一个readme文件里面记录了硬件连接方式、默认参数、预期行为以及如何测试。然后看App目录下的应用层代码最后才是去翻驱动库和底层接口。以AT_Slave为例它的核心逻辑集中在at_slave.c和at_cmd.c这几个文件里你先弄明白这些文件里的状态机和命令映射表整个程序的处理流程就清晰了。固件包里的Middlewares目录存放的是LoRaWAN和Sigfox的协议栈源码这是ST官方或协议联盟提供的库一般不需要你去改动。在调自己应用的时候你要做的事情更多是和这个协议栈API打交道比如LoRaMac_Join、LoRaMac_Send这些接口而不是去修改协议栈内部实现。3.2 AT命令模式把射频能力变成一张命令表AT_Slave这个演示项目实际上是把STM32WL的射频能力封装成了一个可以通过串口调用的命令集合。你可以先通过串口发送ATJOIN发起LoRaWAN入网然后发送ATMSGHello上报一条数据整个过程不需要写一行代码。这对没有嵌入式背景的应用开发者非常友好而且对设备厂商来说也方便做产线测试。AT命令集的核心设计思路是命令-响应模式。STM32WL的AT固件在板子上维护了一个命令解析器它从UART口读取数据按行分隔命令匹配命令名后执行对应动作并把结果通过UART返回。这中间涉及一个重要的设计点AT命令的响应可以是同步的也可以是异步的。比如ATMSG发送数据物理层发完后立刻返回OK但如果是LoRaWAN上行数据入网确认和下行数据到达是随时可能发生的这时固件会主动上报RX:开头的消息这就是异步事件通知。理解这个同步/异步的区别能避免你在调试时误以为程序卡死了。我在实测AT_Slave的时候踩过一个小坑默认固件里AT命令的最大行长是128字节如果你在串口工具里粘贴了带换行符的超长数据命令解析可能会被截断。这点在写自动化脚本时特别需要注意每次发送命令后等待响应再发送下一条不要连续发送大量命令。另外ATRESET并不仅仅是软复位MCU它会重新初始化射频寄存器这个命令在频繁切换测试场景的时候非常有用但要注意它会丢失之前设置的参数需要重新配置。3.3 LoRaWAN EndNode从裸节点到入网上行如果说AT模式是把射频当外设那LoRaWAN_EndNode这个示例就是把完整的LoRaWAN协议栈跑起来。它的代码量比AT_Slave大不少因为涉及了入网激活、会话密钥管理、数据上下行确认、重传机制等完整链路。初次看这个工程的时候我建议你重点看两个文件LoRaWAN_EndNode.c里的应用逻辑以及LoRaWAN_App里的初始化流程。演示固件默认的入网方式是OTAAOver-The-Air Activation也就是节点通过发送Join Request消息向网络服务器请求会话密钥。你需要填对三样东西DevEUI设备唯一标识、AppEUI应用标识、AppKey应用密钥。在演示固件里这些值默认是一组ST预置的测试密钥只能用于和ST官方提供的网络服务器配合测试真要和自己的LoRaWAN服务器对接必须替换成你自己分配的密钥。入网流程走的是LoRaMac_Join-LoRaMac_IsJoined这个流程入网成功后代码会打印JOINED字样。这里有个很常见的调试陷阱LoRaWAN使用随机退避算法Join失败后节点会等待一个随机时间再次重试这个时间可能是几秒到几十秒不等如果你的测试环境里服务器没配好你会看到终端不断打印重试信息但这里并不是代码死循环是协议栈在正常工作。3.4 PingPong最直接验证无线链路的方式PingPong示例是一个我特别推荐的快速验证硬件工具。它做的事情很简单两个节点互相发送数据包每收一包就回一包同时通过LED指示灯和串口日志把收发情况展示出来。你如果手头只有一块NUCLEO-WL55JC也可以让它进入单节点模式通过串口命令触发对方节点回包。PingPong的默认射频频率是868.1MHz你在使用它做验证时需要确保区域内使用的频率符合当地规定。它的调制参数是LoRa SF7带宽125kHz码率4/5这是最常见的LoRa配置。如果你要测试其他扩频因子下的通信距离需要修改radio_board_settings.h里的参数重新编译。PingPong代码里最值得学习的是它的事件驱动状态机模型。它用Radio.IrqProcess()处理射频中断用Radio.GetRxPayload读取接收数据整个循环在while(1)中不断查询状态而不是阻塞等待。这种非阻塞的架构在处理低功耗无线设备时非常重要因为它允许MCU在等待射频事件时进入睡眠模式。看懂PingPong的状态机你就基本理解了STM32WL裸机射频应用的组织方式。4. 动手实测从AT命令到LoRaWAN入网的完整过程4.1 实测场景搭建我建议的实测环境是两块NUCLEO-WL55JC板子一块烧AT_Slave固件另一块烧PingPong或LoRaWAN_EndNode这样能同时测单向命令控制和双向数据通信。如果你只有一块板子也没关系AT_Slave模式自带本地回环测试功能发ATTESTRFCFG之类的测试命令也能验证射频状态。硬件准备方面需要留意天线。ST包装盒里通常会附带一根弹簧天线或棒状天线插到SMA座上就能用。如果你手头的天线规格是433MHz的用在868MHz的板子上不仅增益很差还可能因为驻波比过高导致射频前端发热受损。换天线之前先看频率范围这是射频实验的基本素养。串口连接用两个USB口分别对应两块板子的虚拟串口。如果你的电脑USB口不够可以给其中一块板子外接一个USB转TTL模块把TX/RX交叉连接。注意虚拟串口的供电能力有限如果外接模块功耗稍高建议用单独的5V电源给板子供电。4.2 AT命令实测日志拆解下面是AT_Slave固件下的一组典型操作日志我加上了注释解释每条命令的实际作用AT OK ATVER? NVM: 1.0.0 OK ATMODETEST OK ATTESTRFCFG,868.1,SF7,125,0,20,0,8 OK ATTESTTXLRPKT,HelloWL OK这里我做几个关键解释。ATMODETEST是把模块切换到射频测试模式在该模式下可以使用ATTEST系列命令直接操作物理层不必走完整的LoRaWAN协议栈。RFCFG后面的参数依次是频率、扩频因子、带宽、CRC开关、发射功率、是否启用低数据率优化、报文长度。如果你不熟悉LoRa物理层参数一开始直接复制这一行就行之后通过ATTESTRXLRPKT进入持续监听模式用另一块AT_Slave板发数据就能验证无线收发通不通。这里有个容易忽略的点LoRaWAN模式下物理层发帧会附加CRC和协议开销所以用户数据长度和空中实际传输的数据长度不是一回事。比如你发送ATMSGHelloWL空中实际承载的帧可能比这长很多。在计算发射占空比和功耗预算时这部分的额外开销必须算进去。4.3 LoRaWAN入网实测连接官方服务器我使用ST官方的LoRaWAN网络服务器做演示时操作步骤是这样的。首先把示例代码里的DevEUI、AppEUI、AppKey改成服务器分配的值重新编译烧录。然后打开服务器端的设备管理页面确认设备状态已经入网。串口终端上会依次出现JOINED和TX_COMPLETED这样的打印信息同时服务器端的后台能看到节点上行数据的记录。这里我强烈建议你把串口日志保存下来因为它记录的不仅是调试信息还包含了入网的信道参数和重试次数这对后续真实站点部署时排查同步和接入问题很有帮助。在入网后你可以通过服务器端下发一个下行命令比如设置节点的工作模式或查询节点状态然后在串口终端观察是否能收到对应的RX:异步上报。一个小技巧LoRaWAN入网的调试优先看串口日志里是否出现EV_JOINED之类的关键词这个事件能直观反映协议栈是否成功处理了入网接受帧。如果一直在反复Join多半是密钥不匹配如果完全没有Join请求多半是射频参数配置错误连物理层发送都没起来。5. 射频测试中的关键参数如何配置才不踩坑5.1 LoRa调制参数对照表与选型逻辑LoRa调制有四个基本参数频率、扩频因子SF、带宽BW、编码率CR。这四个参数的组合直接决定了通信速率、灵敏度和抗干扰能力。拿STM32WL来说它的Sub-GHz射频支持从150MHz到960MHz的连续频段但实际可用的中心频率和带宽受限于区域法规比如国内常用的470MHz到510MHz以及863MHz到870MHz这些频段的使用各有要求。我把典型的组合参数整理成一张表方便你对照参考场景频率扩频因子带宽码率理论速率备注城市短距快速868.1MHzSF7125kHz4/55.47kbps延迟低吞吐高城郊中距均衡868.1MHzSF9125kHz4/51.76kbps灵敏度提升约6dB远距离长电池868.1MHzSF12125kHz4/80.29kbps极限灵敏度-137dBm高速移动868.1MHzSF7250kHz4/510.9kbps抗多普勒较好抗强干扰868.1MHzSF7125kHz4/84.37kbps冗余度高SF每增加1接收灵敏度大约提升2.5到3dB但代价是空中时间翻倍。在电池供电的场景里SF从7升到12意味着单次发射的能耗可能增加16倍以上这是功耗预算里最需要关注的因素。开发者在选型时不要单独追求某个参数的极限要综合通信距离、数据量、电池寿命三个约束来平衡。5.2 发射功率与电流消耗的关系STM32WL的最大发射功率可以配置到22dBm听起来不高但在Sub-GHz频段里这已经是不错的输出能力了。需要注意的是22dBm并不是在所有频段和所有调制方式下都可用它跟供电电压、射频匹配网络、温度都有关。在实际测试中我把发射功率从14dBm调到22dBm发射电流从38mA增加到了108mA左右这个差值在电池供电的设备里非常可观。更关键的是LoRaWAN协议栈本身对发射功率有根据地区规范自动调整的机制。比如在EU868区域协议栈会根据当地的占空比限制和最大EIRP要求自动限制节点的发射频率和功率。你即便在代码里配置了22dBm如果区域规范不允许协议栈也可能把它限制到16dBm。这属于正常行为不是Bug。我建议你在做射频摸底时用频谱仪观察一下发射信号的频谱掩模尤其在配置高功率和高SF时。LoRa调制本身有较好的频谱效率但如果匹配网络调试不当会出现杂散发射超标这在做产品认证时会很麻烦。演示固件不涉及这部分调试但它能帮你快速确认天线链路是否工作正常。5.3 通信距离实测的经验值官方资料里经常提到LoRa在视距环境下可以通信几公里甚至十几公里但真实场景中这个数字很难复现。我实测过的经验数据是在城市密集环境下SF12、125kHz带宽、14dBm发射功率接收灵敏度约-137dBm通信距离大概能到1到2公里在郊区或者水面开阔地带这个距离能扩展到5公里以上。如果你的节点在室内距离会急剧缩短到几百米甚至几十米因为建筑物对Sub-GHz信号的衰减相当明显。如果你要做距离摸底我建议用两块板子的PingPong模式加一个RSSI打印功能走到哪里随时看接收信号强度。演示固件里虽然没有现成的RSSI打印但PingPong工程已经有获取RSSI的接口稍微改几行代码就能在每次收包后打印实时RSSI这对快速评估现场通信质量非常有用。6. 从演示固件走向实际项目开发的关键路径6.1 基于AT还是基于SDK的开发选型演示固件里提供了两种完全不同的开发方式AT命令模式和SDK源码模式。这两种方式面向的开发者和应用场景差别很大我个人的判断是如果你要做一个快速原型验证比如先把网关、云端的链路打通AT模式是最快的选择。你不需要关心MCU内部的复杂初始化甚至不需要写一行嵌入式代码用Python或者Node-RED通过串口就能驱动节点上报数据。这个模式在我做售前演示和产线测试时非常好用。但如果你要做一个真正的产品比如一个低功耗的土壤传感器节点AT模式就有瓶颈了。因为AT模式下射频收发虽然可用但整个系统的功耗控制、外设管理、协议栈调优还是受限于预编译固件的能力边界你没法让它在上报间隙进入深度睡眠。这时候就必须基于STM32CubeWL的SDK源码做二次开发。我一般建议的路径是先用AT模式验证业务逻辑和网络通路再基于SDK把核心通信逻辑替换成协议栈API最后做低功耗优化。6.2 功耗优化的几个参考思路STM32WL的优势在于它能在保持无线连接的同时做到极低功耗。但这不是默认配置需要你主动优化。我实测过在加入低功耗管理后节点的平均电流可以做到几十微安级别但前提是无线上报频率很低比如每15分钟上报一次。如果你希望每秒或每几秒就上报一次那平均电流会显著上升因为射频活动占了很大比例。功耗优化的核心思路是尽可能缩短活跃时间尽可能延长睡眠时间。MCU在活跃状态下M4核全速运行射频发射的电流可能超过100mA但睡眠模式下可以降到1微安以下。所以你要做的是把业务逻辑压缩到最短时间窗口内完成然后立刻进入睡眠。这需要用到RTC唤醒和外部中断唤醒两种方式在STM32WL的例程里低功耗相关的示例可以在Projects/NUCLEO-WL55JC/Examples/下找到。6.3 协议栈与应用层之间的典型协作方式STM32WL的双核架构和普通MCU的一个显著区别是LoRaWAN协议栈运行在M0核上你的用户应用运行在M4核上。两个核通过IPCInter-Processor Communication机制通信。在SDK里这些细节已经被封装好你不需要直接操作IPC寄存器但要理解这个架构对调试的影响。比如你在M4核上设置了断点M0核上的射频协议栈可能还在继续运行这会导致高频中断持续存在影响M4核的调试体验。我调试的时候通常会先把射频活动停止比如通过AT命令关闭射频收发再在M4核上跑断点调试否则中断风暴会让调试器变得很卡。协议栈和应用层之间的事件传递在代码里是通过回调函数实现的。节点状态变化、收到下行数据、入网成功这些事件都会触发对应的回调你的应用只需要在回调里处理业务逻辑即可。这种事件驱动模型在使用时需要特别注意不要在回调函数里做耗时操作因为回调函数是在协议栈的上下文中执行的执行时间过长会影响协议栈的实时性。正确做法是回调里只记录事件标志主循环里再处理业务逻辑。7. 调试实操中我总结的几个避坑经验7.1 串口乱码的正确处理方式使用演示固件时串口打印乱码是一个高频问题。大多数情况下原因不是代码问题而是串口终端工具的编码或波特率设置不对。STM32CubeWL固件的打印信息默认是ASCII格式如果你在终端里选择了UTF-8或GBK编码某些特殊字符可能显示乱码。但如果你发现大部分内容是正常的只有个别字符不对那多半是终端编码的问题不是数据损坏。如果整个串口终端全是乱码首先检查波特率。演示固件默认115200但有些旧版本的测试固件可能用9600。进设备管理器查看虚拟串口确认一下端口号是否正确。还有一种情况是串口被其他程序占用比如你同时打开了STM32CubeProgrammer和串口终端这会导致终端收不到数据或数据错误。7.2 两个节点同时测试时的干扰处理用两块板子同时测试时最常见的现象是一块板子发数据另一块板子收不到或者收到了但RSSI异常低。这时候先检查两块板子的频率配置是否一致我遇到过好几次因为改了其中一个的测试参数忘了同步另一个导致频率不匹配的情况。其次要检查两个节点的天线是否有互相遮挡近距离测试时天线贴在一起反而会因为阻抗变化导致接收灵敏度下降保持一定距离至少0.5米比紧贴着效果更好。如果你发现发送节点的RSSI在接收端一直很低比如-90dBm以下而两个板子距离只有几十厘米那大概率是天线没有接好或者馈线断裂。拔掉SMA天线在近距离用导线代替天线做测试可以快速判断是天线问题还是射频前端问题。这个方法虽然粗暴但很实用。7.3 固件更新与回退的方法演示固件有很多个版本不同版本之间的命令集和API可能有差异。如果你更新固件后发现某些功能不工作了别急着怀疑硬件先查看版本号文档确认是不是命令格式变了。ST官方在发布新固件时通常会提供发布说明里面会列出命令变更点这个文档是你排查问题的首选依据。需要回退固件的话从ST官网下载旧版本固件包用STM32CubeProgrammer把旧版本的hex烧回去就行。注意烧录时选择的是整片擦除还是部分擦除模式如果选错可能会残留一些配置数据。我建议在烧录新固件前先把芯片的Option Bytes和Flash内容备份一下这样一旦新固件有问题可以快速恢复现场。7.4 演示固件中隐藏的可用工具很多人在使用演示固件时只关注它演示的那些功能但其实里面还隐藏了一些适合开发和测试的辅助功能。比如AT_Slave模式里有RFUART透传功能可以走串口直接把数据发给另一端这个模式在产线测试两个节点连通性时非常高效。再比如LoRaWAN_EndNode示例里有一个LoRaWAN_App_GetDevEUI()函数你可以直接读取设备唯一ID这个ID在设备接入管理平台时往往需要用到。挖掘这些隐藏接口能让你在开发调试时少写很多代码。8. 从一块Nucleo到真实产品的三步走演示固件跑通之后很多人会问那我接下来怎么把它变成自己的产品我的建议是分三步走每一步都控制好评估范围不要想一口吃成胖子。第一步基于官方SDK新建一个最小工程不加入任何业务逻辑只实现上电后通过按键触发一次LoRaWAN入网和一条数据上报。这步的目标是确认你自己的工具链、开发环境和网络服务器链路全部打通。如果这一步能稳定重复执行10次以上不失败说明基础链路是可靠的。第二步加入真实业务逻辑比如传感器采集、本地数据缓存、故障上报。这步的目标是验证业务与无线通信的耦合方式是否合理。这里要特别注意一个设计问题业务逻辑的执行时间和射频窗口的冲突管理。如果传感器采集需要2秒而射频模块刚好在这个时间段收到下行数据你要有合理的缓存机制避免数据丢失。第三步做低功耗和可靠性设计。这步需要你对电源树、时钟树、外设功耗状态做全面梳理同时完善设备诊断机制比如信号质量指示、供电电压监测、软件看门狗等。产品化阶段这些非功能需求往往比功能本身更影响用户体验。我手头做过的几个项目里从原型到量产最耗时间的并不是无线协议栈本身而是电磁兼容和结构散热问题。STM32WL的射频前端在连续发射时会产生明显热量如果设备外壳是密封且无散热的可能导致晶振频偏加大进而影响射频指标。这些问题在设计之初就要考虑避免等功能全跑通了再改结构那返工成本会非常高。在我个人的实际体验里STM32CubeWL这套演示固件最大的价值是给了一个既能验证硬件又能学习协议栈的活教材。你每做完一次AT命令测试或者LoRaWAN入网实验对无线协议栈的认知就会加深一层。那些官方文档里写得比较含蓄的设计意图比如为什么入网要有随机退避、为什么接收窗口要留余量、为什么M0核要独占射频外设在你亲手操作一遍之后都会变得容易理解得多。如果你手头正有一块NUCLEO-WL55JC今天就把固件烧进去连上串口发一条AT命令试试吧所有对无线协议栈的疑问都会在日志里找到答案。
返回列表