4. 烧录协议与接口:SWD、JTAG、UART、SPI、I2C 烧录协议对比

做工厂烧录这么多年,我见过不少工程师一上来就问:“用哪种接口烧录最快?”其实这个问题问早了。你得先搞清楚你的芯片支持什么、产线节拍要求多高、要不要加密。接口选错了,后面全是坑。

今天咱们就把 SWD、JTAG、UART、SPI、I2C 这五种常见烧录协议掰开揉碎讲清楚。每种协议我会从电气特性、速度、引脚数、安全性、适用场景几个维度去说,最后再给一张对比表,方便你选型时直接翻。

核心观点: 没有“最好的协议”,只有“最适合产线的协议”。选接口前,先回答三个问题——芯片支不支持?产线节拍多少秒一片?要不要离线烧录?
烧录协议选型决策树 芯片支持哪些接口? 调试类:SWD / JTAG 通信类:UART / SPI / I2C 产线专用:离线烧录器 SWD:2线 JTAG:4线 UART:2线 SPI:4线 I2C:2线 通常用 SWD 或 UART 桥接 产线首选 速度快、引脚少 研发调试 边界扫描必备 Bootloader 成本最低 高速烧录 大容量Flash 传感器校准 小数据量 离线烧录器 适合大批量、安全要求高

4.1 SWD(Serial Wire Debug)

SWD 是 ARM 公司推出的调试接口,只有两根线:SWDIO(数据)和 SWCLK(时钟)。说白了,它就是 JTAG 的简化版,专门为 Cortex-M 系列设计的。

我个人习惯,只要芯片支持 SWD,产线烧录就优先用 SWD。为什么?两个原因:一是引脚少,工装夹具好做;二是速度快,10MHz 时钟下烧录 1MB 固件也就一两秒。

经验之谈: 我在项目中遇到过 SWD 线长超过 30cm 导致烧录不稳定的情况。产线上建议用屏蔽双绞线,长度控制在 20cm 以内。另外,SWD 的 RESET 引脚不是必须的,但加上能提高连接成功率。

4.2 JTAG(Joint Test Action Group)

JTAG 是 IEEE 1149.1 标准接口,用了 TMS、TCK、TDI、TDO 四根线。它比 SWD 多两根线,但功能也更强大——不仅能烧录,还能做边界扫描测试(BST)。

你想想看,如果你的板子上有 FPGA 或者复杂的 BGA 封装芯片,JTAG 的边界扫描功能就派上用场了。它可以检测焊接短路、断路,这在产线首件验证时特别有用。

不过要注意,JTAG 的时序比 SWD 复杂。我记得有一次产线反馈烧录失败率偏高,排查了半天,发现是 JTAG 链路上串联了多个器件,TCK 信号反射导致时序紊乱。后来加了终端电阻才解决。

避坑指南: 我曾经在一条产线上同时用 JTAG 烧录 8 片 MCU,结果发现链路上的器件越多,烧录速度越慢。如果只是为了烧录,SWD 比 JTAG 更合适。JTAG 留给研发调试和边界扫描用。

4.3 UART(Universal Asynchronous Receiver/Transmitter)

UART 烧录通常只需要 TX、RX 两根线,加上 GND 就是三根。很多芯片出厂时内部就预置了 UART Bootloader,所以不需要额外的调试器,一根 USB 转串口线就能烧录。

但说实话,UART 烧录的速度是硬伤。常见的波特率 115200bps,算上协议开销,实际传输速度也就 10KB/s 左右。烧个 512KB 的固件要将近一分钟,产线根本受不了。

那 UART 就没用了吗?也不是。我在做小批量试产或者现场升级时,UART 反而是最方便的。不用专用调试器,笔记本加一根串口线就能干活。另外,有些芯片的 UART Bootloader 支持加密传输,安全性也不错。

适用场景: 小批量试产、现场固件升级、芯片出厂默认烧录通道。不适合大批量产线,除非你愿意等。

4.4 SPI(Serial Peripheral Interface)

SPI 是全双工同步通信,四根线:SCK、MOSI、MISO、CS。它的速度可以跑到几十 MHz,是这几种协议里最快的。

我见过一些大容量 Flash 芯片,用 SPI 烧录 16MB 固件只需要几秒钟。产线上如果对节拍要求极高,SPI 是首选。但要注意,SPI 没有标准的烧录协议,各家芯片厂商的 SPI 烧录命令集都不一样,需要自己写驱动。

嗯,这里要注意:SPI 的 CS 引脚在产线多工位烧录时容易出问题。如果多个烧录器共用一个 SPI 总线,CS 必须独立控制,否则数据会串扰。

4.5 I2C(Inter-Integrated Circuit)

I2C 只有两根线:SCL 和 SDA,支持多主从通信。它的速度比 SPI 慢,标准模式 100kHz,快速模式 400kHz,高速模式能到 3.4MHz。

I2C 烧录在传感器校准、小容量 EEPROM 烧录中很常见。比如一些温湿度传感器,出厂前需要写入校准参数,用 I2C 就非常方便。

但我要提醒你:I2C 的驱动能力有限,总线电容不能太大。产线上如果烧录器到目标板的线缆太长,I2C 信号容易变形。我曾经遇到过 50cm 线缆下 I2C 通信失败,后来加了电平转换芯片才解决。

4.6 协议对比总表

协议 引脚数 最大速度 标准协议 安全性 产线适用性
SWD 2(+RESET) 50MHz ARM 标准 高(支持加密调试) ★★★★★
JTAG 4 50MHz IEEE 1149.1 高 ★★★★☆
UART 2 ~1Mbps 芯片厂商自定义 中(可加密) ★★☆☆☆
SPI 4 80MHz+ 芯片厂商自定义 低(明文传输) ★★★★☆
I2C 2 3.4MHz 芯片厂商自定义 低 ★★★☆☆

4.7 产线选型建议

说了这么多,最后给几条实在的建议:

  • ARM Cortex-M 系列: 无脑选 SWD。引脚少、速度快、安全性高。离线烧录器也基本都支持 SWD。
  • FPGA 或复杂 SoC: 用 JTAG。边界扫描功能在产线首件测试中不可替代。
  • 小批量或现场升级: 用 UART Bootloader。成本最低,工具最容易获取。
  • 大容量 Flash 烧录: 用 SPI。速度优势明显,但需要自己写协议驱动。
  • 传感器校准或小数据写入: 用 I2C。简单、引脚少,适合板级校准工位。
我的习惯: 设计新板子时,我会同时预留 SWD 和 UART 接口。SWD 用于产线高速烧录,UART 作为备用通道。万一 SWD 出问题,还能用 UART 救急。这叫“双通道冗余”,产线上吃过亏才学乖的。