4、通信协议详解:SWD、JTAG、UART、SPI、I2C烧录模式的特点与选择

做量产烧录这么多年,我经常被问到同一个问题:
「这么多烧录协议,我到底该选哪个?」

说实话,没有标准答案。
每种协议都有自己的脾气。选对了,事半功倍;选错了,调试到崩溃。

今天我就把这五种常见的烧录协议掰开揉碎讲清楚。
SWD、JTAG、UART、SPI、I2C,一个一个来。

核心观点:没有最好的协议,只有最合适的场景。

烧录协议 选择指南 SWD 2线,ARM专用,速度快 JTAG 4-5线,通用性强 UART 2线,依赖Bootloader SPI 4线,高速,全双工 I2C 2线,多设备,速度较慢 调试/烧录协议 通信/烧录协议

4.1 SWD:ARM芯片的「专属快车道」

SWD,全称Serial Wire Debug。
说白了,就是ARM公司专门为自家Cortex-M系列芯片设计的调试接口。

特点:

  • 只需要2根线:SWDIO(数据)和SWCLK(时钟)
  • 速度可达几十MHz
  • 支持热插拔(嗯,大部分情况下)
  • 占用引脚少,对PCB布局友好

我的经验:量产烧录中,SWD是我最常用的协议。为什么?
因为只需要2根线,夹具设计简单,接触不良的概率也低。
我曾经在一个项目中,用SWD同时烧录8片STM32,效率非常高。

适用场景:

  • ARM Cortex-M系列MCU
  • 引脚受限的小封装芯片
  • 需要高速烧录的产线

注意:SWD不是万能的。有些国产ARM芯片对SWD协议的支持并不完整,我遇到过烧录到一半卡死的案例。量产前一定要做兼容性测试。

4.2 JTAG:老牌劲旅,通用之王

JTAG是IEEE 1149.1标准,诞生于上世纪90年代。
你想想看,一个协议能活30年,说明它确实有两把刷子。

特点:

  • 标准5线:TMS、TCK、TDI、TDO、TRST(可选)
  • 支持边界扫描,可以测试PCB焊接质量
  • 几乎支持所有主流MCU和FPGA
  • 速度通常比SWD慢一点

我个人习惯在调试阶段用JTAG,因为边界扫描功能太香了。
有一次板子焊完不工作,用JTAG扫了一遍,发现是BGA芯片虚焊。省了我半天排查时间。

适用场景:

  • FPGA、CPLD烧录
  • 多芯片联合调试
  • 需要边界扫描测试的产线

对比:SWD vs JTAG

特性SWDJTAG
线数2线4-5线
速度更快较慢
通用性仅ARM几乎所有芯片
边界扫描不支持支持
产线推荐度★★★★★★★★★

4.3 UART:最朴实的串口烧录

UART烧录,说白了就是通过串口把固件灌进去。
很多芯片出厂时内部就有Bootloader,上电后通过串口接收数据。

特点:

  • 只需要TX、RX两根线
  • 速度一般,115200bps到几Mbps
  • 依赖芯片内部的Bootloader
  • 不需要专用的调试器,USB转串口就行

我记得有一次出差去客户现场,发现他们的产线烧录器坏了。
临时用USB转串口模块,配合串口烧录工具,硬是把2000片芯片烧完了。
嗯,UART烧录虽然慢,但胜在「救急」。

避坑指南:我曾经遇到过芯片Bootloader版本不一致,导致串口烧录失败的情况。量产前一定要确认Bootloader版本,最好统一固件。

适用场景:

  • 小批量生产或原型验证
  • 芯片已经内置Bootloader
  • 没有专用调试器的低成本方案

4.4 SPI:高速传输的「数据管道」

SPI烧录,通常用于外部Flash或特定芯片的固件加载。
比如,把固件烧录到W25Q64这样的SPI Flash里。

特点:

  • 4线:SCK、MOSI、MISO、CS
  • 全双工,收发可以同时进行
  • 速度极快,几十MHz很常见
  • 适合大容量固件烧录

我在做物联网模块量产时,固件有8MB大小。
用UART烧录要等3分钟,换成SPI后,30秒搞定。
你想想看,产线一天烧几千片,省下来的时间就是钱。

适用场景:

  • 外部SPI Flash烧录
  • 大容量固件(>1MB)
  • 对烧录速度有要求的产线

技巧:SPI烧录时,注意CS引脚的时序。有些Flash芯片对CS的拉高拉低时间有严格要求,搞不好会烧录失败。

4.5 I2C:多设备共存的「慢速总线」

I2C烧录,常见于一些低功耗芯片或传感器模块。
只需要SDA和SCL两根线,而且可以挂多个设备。

特点:

  • 2线:SDA(数据)和SCL(时钟)
  • 支持多主多从
  • 速度较慢,标准模式100kHz,快速模式400kHz
  • 需要上拉电阻

说实话,I2C烧录我用得不多。
因为速度太慢了,量产时效率上不去。
但有些芯片只支持I2C烧录,比如某些低功耗蓝牙芯片,那就没办法了。

适用场景:

  • 低功耗MCU或传感器
  • 引脚极少的封装
  • 多设备共用总线

注意:I2C烧录时,上拉电阻的阻值很关键。阻值太大,信号上升沿变慢;阻值太小,功耗增加。我一般选4.7kΩ,大部分场景都适用。

4.6 如何选择?我的建议

说了这么多,到底怎么选?
我总结了一个简单的决策流程:

  1. 看芯片:ARM芯片优先选SWD,FPGA选JTAG
  2. 看引脚:引脚少选SWD或I2C,引脚多选JTAG或SPI
  3. 看速度:大固件选SPI,小固件选SWD或UART
  4. 看成本:不想买调试器选UART,有预算选SWD
  5. 看产线:效率优先选SWD或SPI,灵活性优先选UART

最终建议:量产烧录,我个人最推荐SWD。
速度快、引脚少、稳定可靠。
除非你的芯片不支持SWD,否则别犹豫。

好了,这五种协议的特点和选择就讲到这里。
每种协议都有自己的脾气,关键是要摸透它。

可可精品资料库