4. 烧录协议与接口:SWD、JTAG、UART、SPI、I2C 烧录协议对比
做工厂烧录这么多年,我见过不少工程师一上来就问:“用哪种接口烧录最快?”其实这个问题问早了。你得先搞清楚你的芯片支持什么、产线节拍要求多高、要不要加密。接口选错了,后面全是坑。
今天咱们就把 SWD、JTAG、UART、SPI、I2C 这五种常见烧录协议掰开揉碎讲清楚。每种协议我会从电气特性、速度、引脚数、安全性、适用场景几个维度去说,最后再给一张对比表,方便你选型时直接翻。
4.1 SWD(Serial Wire Debug)
SWD 是 ARM 公司推出的调试接口,只有两根线:SWDIO(数据)和 SWCLK(时钟)。说白了,它就是 JTAG 的简化版,专门为 Cortex-M 系列设计的。
我个人习惯,只要芯片支持 SWD,产线烧录就优先用 SWD。为什么?两个原因:一是引脚少,工装夹具好做;二是速度快,10MHz 时钟下烧录 1MB 固件也就一两秒。
4.2 JTAG(Joint Test Action Group)
JTAG 是 IEEE 1149.1 标准接口,用了 TMS、TCK、TDI、TDO 四根线。它比 SWD 多两根线,但功能也更强大——不仅能烧录,还能做边界扫描测试(BST)。
你想想看,如果你的板子上有 FPGA 或者复杂的 BGA 封装芯片,JTAG 的边界扫描功能就派上用场了。它可以检测焊接短路、断路,这在产线首件验证时特别有用。
不过要注意,JTAG 的时序比 SWD 复杂。我记得有一次产线反馈烧录失败率偏高,排查了半天,发现是 JTAG 链路上串联了多个器件,TCK 信号反射导致时序紊乱。后来加了终端电阻才解决。
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。简单、引脚少,适合板级校准工位。