4. nRF54烧录接口与协议详解
nRF54系列(如nRF54H20、nRF54L15)在调试与烧录接口上延续了Nordic一贯的SWD主线,同时因多核架构(应用核+网络核/协处理器)和更高的安全要求,接口选择比nRF52时代更讲究。生产环境中常见的六类通道是:SWD、JTAG、UART、USB DFU、SPI、QSPI。它们并非互相替代,而是分别服务于"研发调试""产线首次烧录""现场升级""外挂存储访问"等不同阶段。理解每条通道的物理层、协议层和适用边界,是设计产线工装和烧录节拍的前提。
一、SWD:nRF54的主力调试与烧录通道
SWD(Serial Wire Debug)是ARM CoreSight定义的两线制调试协议,使用SWCLK与SWDIO两根信号线,外加可选的SWO(单线跟踪输出)和nRESET。nRF54的调试访问端口(DAP)通过SWD暴露AHB-AP,调试器(如nRF54 DK板载的J-Link OB或独立J-Link)借此读写内核寄存器、Flash控制器和内存。烧录时,nRF Connect Programmer或nrfjprog通过SWD把固件写入内部Flash,并可通过CTRL-AP配置APPROTECT、SECUREAPPROTECT等访问保护位。
SWD的关键参数是时钟频率。nRF54L15在3.3V、短线(<10cm)条件下,SWDCLK可稳定运行在4~8MHz;产线若使用10cm以上的排线,建议降到1~2MHz以避免采样错误。SWD的优点是引脚少、速度快、可在线调试;缺点是必须物理接触,且一旦APPROTECT被使能,未授权调试器将无法访问,需要执行Erase All才能恢复——这在量产中意味着"烧录前必须确认保护位状态"。
二、JTAG:兼容性通道,而非首选
JTAG使用TCK、TMS、TDI、TDO四线(加可选TRST),是SWD的"前身"协议。nRF54的DAP同时支持JTAG-DP和SWD-DP,但Nordic官方工具链默认走SWD。JTAG的价值在于:当SWDIO/SWCLK引脚被复用为GPIO或损坏时,JTAG可作为备用访问路径;某些第三方烧录器或边界扫描测试(BST)场景也要求JTAG。生产环境中JTAG很少作为主烧录通道,因为占用4个引脚、布线更复杂、速率通常不占优。若产线需要做PCB连通性边界扫描,可保留JTAG测试点,但烧录仍走SWD。
三、UART:Bootloader与日志通道
UART本身不是烧录协议,而是nRF54上UART Bootloader的物理载体。Nordic提供的串口Bootloader(如基于nRF Connect SDK的MCUboot serial recovery)通过UART接收固件镜像,典型配置为115200或921600波特率、8N1、无流控。上位机用nrfutil或mcumgr发送镜像,Bootloader校验签名后写入Flash。UART烧录速率受波特率限制:921600bps理论约92KB/s,实际因协议开销约60~80KB/s,远低于SWD。它的优势是只需TX/RX两线、可用普通USB转串口模块、适合现场无调试器时的恢复升级。生产线上若用UART烧录,需预留进入Bootloader的触发方式(如按键组合或特定GPIO电平)。
四、USB DFU:面向终端用户的升级通道
USB DFU(Device Firmware Upgrade)在nRF54上通常由USB设备控制器+MCUboot实现。设备枚举为DFU类设备后,上位机(nrfutil、dfu-util或自定义工具)通过控制传输下发镜像。USB 2.0 Full Speed理论12Mbps,实际DFU吞吐约200~400KB/s,明显快于UART。DFU适合产品出厂后的固件更新,也适合产线中"整机已装配、只留USB口"的场景。注意:DFU依赖Bootloader已烧录且未被保护位锁死,因此产线首次烧录仍需SWD完成Bootloader+应用镜像的初始写入。
五、SPI与QSPI:外挂Flash的访问通道
SPI和QSPI不是用来烧录nRF54内部Flash的,而是访问外挂串行Flash(如MX25R、W25Q系列)的接口。nRF54通过SPIM/QSPI外设连接外部Flash,用于存放固件镜像、文件系统或OTA备份。QSPI使用4条数据线(IO0~IO3),在DDR模式下nRF54L15的QSPI时钟可达32MHz,理论带宽约16MB/s(4线×32MHz×2),远高于单线SPI。生产环境中,若产品带外挂Flash,烧录流程通常分两步:先用SWD烧内部Bootloader,再通过Bootloader或专用工装把镜像写入外挂Flash。QSPI的引脚(SCK、CSN、IO0~IO3)需在设备树中正确配置,否则会出现"读回全0xFF"的典型故障。
六、生产环境中的接口选择与性能对比
把六条通道放到产线节拍里看,选择逻辑就清晰了。首次烧录(Bootloader+应用镜像+保护位配置)几乎必然走SWD,因为只有SWD能直接访问DAP和Flash控制器,且能读取芯片ID、校验保护位状态。以nRF54L15、1MB固件为例,SWD在4MHz下写入约需8~12秒(含擦除和校验),这是产线单站节拍的主要构成。若产品带外挂Flash且镜像较大,可把外挂Flash的写入并行到另一个工位,用QSPI工装直接烧写,避免占用SWD工位时间。
UART和USB DFU更适合"二次升级"或"返修恢复"。产线若已烧好Bootloader,后续小版本更新可用UART以921600bps完成,1MB镜像约15~20秒;USB DFU则约3~6秒。两者都不需要拆机接调试器,适合整机测试后的最终版本刷新。JTAG仅在SWD引脚不可用或需要边界扫描时启用,不应作为常规烧录路径。SPI/QSPI的"性能"要区分:单线SPI在8MHz下约1MB/s,QSPI在32MHz DDR下约16MB/s,但这是访问外挂Flash的带宽,与内部Flash烧录不是同一件事,比较时不能混为一谈。
综合来看,nRF54生产烧录的接口策略可以概括为:SWD做"首次写入与保护位配置"的主通道,UART/USB DFU做"已装配产品的升级与恢复"通道,SPI/QSPI做"外挂存储的独立烧录"通道,JTAG仅作备用与边界扫描。理解每条通道的物理约束(引脚数、速率、是否需要Bootloader)和保护位交互,才能把烧录节拍、工装成本和返修风险控制在可接受范围内。