4、通信协议详解:SWD、JTAG、UART、SPI、I2C烧录模式的特点与选择
做量产烧录这么多年,我经常被问到同一个问题:
「这么多烧录协议,我到底该选哪个?」
说实话,没有标准答案。
每种协议都有自己的脾气。选对了,事半功倍;选错了,调试到崩溃。
今天我就把这五种常见的烧录协议掰开揉碎讲清楚。
SWD、JTAG、UART、SPI、I2C,一个一个来。
核心观点:没有最好的协议,只有最合适的场景。
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
| 特性 | SWD | JTAG |
|---|---|---|
| 线数 | 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 如何选择?我的建议
说了这么多,到底怎么选?
我总结了一个简单的决策流程:
- 看芯片:ARM芯片优先选SWD,FPGA选JTAG
- 看引脚:引脚少选SWD或I2C,引脚多选JTAG或SPI
- 看速度:大固件选SPI,小固件选SWD或UART
- 看成本:不想买调试器选UART,有预算选SWD
- 看产线:效率优先选SWD或SPI,灵活性优先选UART
最终建议:量产烧录,我个人最推荐SWD。
速度快、引脚少、稳定可靠。
除非你的芯片不支持SWD,否则别犹豫。
好了,这五种协议的特点和选择就讲到这里。
每种协议都有自己的脾气,关键是要摸透它。
可可精品资料库