STM32(ARM32)烧录方式详解:串口、JTAG、SWD
·
我们学习STM32时,要注意有多种烧录(编程)和调试方式,不同方式适用于不同场景。
而在当前嵌入式开发中,最主流、应用范围最广的调试接口主要有 3 种,分别覆盖 “全功能调试”“精简调试” 和 “辅助调试” 三大核心场景,几乎能满足从 32 位 MCU 到复杂处理器的大部分开发需求,具体如下:
一、接口类型
1. JTAG(IEEE 1149.1 标准)——“全功能通用调试接口”

- 核心定位:最经典的通用调试接口,支持 “调试 + 程序下载” 双功能,是跨架构(如 Cortex-M/R/A、FPGA、DSP、部分工业芯片)的 “万能接口”。
- 关键特点:
- 引脚:通常需 4 根核心引脚(TCK 时钟、TMS 模式选择、TDI 数据输入、TDO 数据输出),部分场景加 TRST 复位引脚(共 5 根);不包括供电的vcc和接地的gnd;包括就7条
- 优势:支持 “多芯片级联调试”(如一块电路板上多个芯片通过 JTAG 链串联,用一个调试器同时调试),功能全面(断点、寄存器 / 内存查看、代码单步执行等);
- 不足:引脚数量相对多,对 PCB 布线时序要求稍高(高速场景下需控制阻抗)。
- 主流应用:32 位 MCU 复杂项目(如 STM32H7、NXP i.MX 系列)、FPGA 开发(如 Xilinx、Altera 芯片)、工业控制芯片调试 —— 只要芯片支持 JTAG,几乎能兼容所有主流 IDE(Keil、IAR、VS Code+GDB)。
2. SWD(Serial Wire Debug)——“精简高效调试接口”

- 核心定位:ARM 针对 Cortex-M 系列 MCU 推出的 “精简版调试接口”,是目前 32 位 MCU(尤其是中小规模项目)的绝对主流。
- 关键特点:
- 引脚:仅需 2 根(SWCLK 时钟、SWDIO 双向数据),不包括供电的vcc和接地的gnd;包括就4跟;可复用芯片的 GPIO 引脚(部分开发板甚至省略专用调试座,直接从 GPIO 引出);
- 优势:引脚少(节省 PCB 空间和芯片引脚资源)、传输效率与 JTAG 相当、抗干扰性更强(双向单线数据传输,减少布线干扰);
- 不足:仅支持 “单芯片调试”(不支持级联),且主要适配 ARM Cortex-M 架构(少数其他架构芯片兼容)。
- 主流应用:STM32(如 F1/F4/L4 系列)、Nordic nRF52、TI MSP430(部分型号)等 32 位 MCU 的开发 —— 几乎所有针对 Cortex-M 的开发板(如 STM32 Nucleo、Arduino Portenta)都默认采用 SWD 接口,搭配 ST-Link、DAPLink 调试器即可快速使用。
3. UART(串口)——“低成本辅助调试接口”
- 核心定位:不算 “严格意义的调试接口”,但却是所有嵌入式开发中必备的 “辅助调试工具”,主打 “日志输出 + 简单程序下载”。
- 关键特点:
- 引脚:最少 2 根(Tx 发送、Rx 接收),部分加 RTS/CTS 流控(共 4 根),硬件成本极低(用 USB 转 TTL 模块即可连接电脑);
- 优势:兼容性 100%(几乎所有嵌入式芯片都带 UART 外设),操作简单(通过 printf 类函数打印日志,排查程序运行流程),部分芯片支持通过 UART 烧录程序(配合芯片内置 bootloader);
- 不足:不支持 “在线调试”(不能设断点、看寄存器),仅能做 “数据透传”,传输速率较低(常见 115200bps~2Mbps)。
- 主流应用:所有场景的 “辅助排查”—— 比如嵌入式 Linux 的串口控制台(查看系统启动日志)、MCU 项目的功能逻辑验证(打印变量值、函数执行状态)、量产设备的故障排查(通过串口输出错误码)。
二、烧录工具
接下来我将分步介绍常见的调试,烧录工具,包括 ST-LINK(SWD/JTAG)、串口(UART)、USB DFU、J-Link 等,并分析它们的优缺点及适用场景。

1. ST-LINK(SWD / JTAG)

1.1 基本介绍
ST-LINK 是 ST 官方推出的调试/烧录工具,支持 SWD(Serial Wire Debug) 和 JTAG 两种接口,适用于开发和调试。
1.2 连接方式
SWD(推荐)
- 仅需 2 根信号线 + GND:
SWDIO→PA13(STM32)SWCLK→PA14(STM32)GND→GND(必须连接)3.3V→3.3V(可选,建议目标板独立供电)
JTAG
- 需要 5 根信号线:
TMS→PA13TCK→PA14TDI→PA15TDO→PB3nTRST→PB4(可选)GND→GND3.3V→3.3V(可选)
1.3 适用场景
- 开发阶段(需要调试)
- Keil、STM32CubeIDE、IAR 等 IDE 调试
- 快速烧录,支持断点调试
1.4 优缺点
| 优点 | 缺点 |
|---|---|
| 支持调试(单步执行、断点) | 需要专用调试器 |
| 烧录速度快 | 占用部分 GPIO(PA13/PA14) |
| 适用于所有 STM32 型号 |
2. 串口(UART)烧录

2.1 基本介绍
通过 USART(串口) 烧录程序,需进入 Bootloader 模式,适用于无调试器的情况。
2.2 连接方式
- USB-TTL 转接器(如 CH340、CP2102):
TX→PA10(STM32 RX)RX→PA9(STM32 TX)GND→GND
- Boot 引脚设置:
BOOT0=1(接 3.3V)BOOT1=0(接 GND)- 复位芯片(进入 Bootloader)
2.3 适用场景
- 量产烧录
- 无调试需求
- 低成本方案
2.4 优缺点
| 优点 | 缺点 |
|---|---|
| 无需专用调试器 | 无法调试 |
| 仅需 USB-TTL 模块 | 需手动切换 Boot 引脚 |
| 适用于所有 STM32 | 烧录速度较慢 |
3. USB DFU(Device Firmware Upgrade)

3.1 基本介绍
通过 USB 接口 直接烧录程序,适用于无串口或调试器的情况。
3.2 连接方式
- USB 数据线(D+、D-):
PA11(DM)→ USBD-PA12(DP)→ USBD+
- Boot 引脚设置:
BOOT0=1(接 3.3V)BOOT1=0(接 GND)- 复位芯片(进入 DFU 模式)
3.3 适用场景
- 无串口/USB-TTL 时
- STM32 带 USB 接口的型号(如 F103、F407)
3.4 优缺点
| 优点 | 缺点 |
|---|---|
| 无需额外硬件 | 需 USB 驱动(如 STM32 DFU) |
| 适用于 USB 设备 | 部分芯片不支持 |
4. J-Link(SWD / JTAG)

4.1 基本介绍
J-Link 是 SEGGER 推出的专业调试器,支持 SWD / JTAG,适用于高级调试。
4.2 连接方式
- SWD(推荐):
SWDIO→PA13SWCLK→PA14GND→GND
- JTAG:
TMS→PA13TCK→PA14TDI→PA15TDO→PB3nTRST→PB4(可选)
4.3 适用场景
- 专业开发(RTOS、复杂调试)
- Keil、IAR、Embedded Studio 等 IDE
4.4 优缺点
| 优点 | 缺点 |
|---|---|
| 支持高级调试 | 价格较贵 |
| 速度快,稳定性高 | 占用部分 GPIO |
5. 其他烧录方式
5.1 ISP(In-System Programming)
- 通过 SPI / I2C 烧录(较少使用)
- 适用于特定场景(如 OTA 升级)
5.2 离线烧录器
- ST-LINK 脱机版、J-Flash
- 适用于 量产烧录
6. 如何选择合适的烧录方式?
| 方式 | 适用场景 | 是否需要调试 | 硬件需求 |
|---|---|---|---|
| ST-LINK(SWD) | 开发调试 | ✔️ | ST-LINK |
| 串口(UART) | 量产/简单烧录 | ❌ | USB-TTL |
| USB DFU | USB 设备升级 | ❌ | USB 线 |
| J-Link | 专业开发 | ✔️ | J-Link |
| ISP(SPI/I2C) | 特殊应用 | ❌ | 适配器 |
7. 总结
- 开发调试 → ST-LINK(SWD) 或 J-Link
- 量产/简单烧录 → 串口(UART)
- USB 设备升级 → USB DFU
- 专业调试 → J-Link
按照我一直以来的推荐是:
- 初学者 → ST-LINK + SWD
- 低成本方案 → 串口(UART)
- 高级开发 → J-Link
希望本文能帮助你选择合适的 STM32 烧录方式!🚀
✅作者简介:新手懒羊羊
❤欢迎关注我的CSDN:新手懒羊羊
更多推荐


所有评论(0)