4. 目标板 JTAG/SWD 接口定义

做嵌入式调试这么多年,我见过最多的坑,其实不是调试器本身,而是接口没接对。你想想看,花了大几千买的调试器,结果连不上目标板,十有八九是引脚定义搞混了。今天咱们就把最常见的几种接口标准掰开揉碎了讲清楚。

4.1 标准 20-pin JTAG 接口

这是 ARM 公司最早定义的调试接口标准,也是目前最通用的。我在项目里见过最多的就是这种 2×10 的排针布局。说白了,它就是 JTAG 协议的物理载体。

引脚 信号名 方向 说明
1 VTref 输入 目标板参考电压,用于电平匹配
2 VCC 输出 调试器提供的 3.3V 电源(可选)
3 nTRST 输出 JTAG 测试复位(低有效)
4 GND - 地
5 TDI 输出 数据输入到目标芯片
6 GND - 地
7 TMS 输出 模式选择
8 GND - 地
9 TCK 输出 时钟信号
10 GND - 地
11 RTCK 输入 目标返回时钟(自适应时钟用)
12 GND - 地
13 TDO 输入 数据从目标芯片输出
14 GND - 地
15 nSRST 输出 系统复位(低有效)
16 GND - 地
17 DBGRQ 输出 调试请求(很少用)
18 GND - 地
19 DBGACK 输入 调试应答(很少用)
20 GND - 地
我的习惯: 不管目标板用不用,我都会把 VTref 接上。有一次我偷懒没接,结果调试器死活不认目标板,折腾了半天才发现是电平检测没通过。

4.2 10-pin SWD 接口

SWD 是 JTAG 的简化版,只用了两根线:SWDIO 和 SWCLK。我最早接触 SWD 是在做 Cortex-M0 项目的时候,板子空间紧张,20-pin 根本放不下。10-pin 接口就成了救星。

引脚 信号名 方向 说明
1 VTref 输入 目标板参考电压
2 SWDIO 双向 数据线
3 GND - 地
4 SWCLK 输出 时钟线
5 GND - 地
6 SWO 输入 串行输出(可选,用于 ITM 调试)
7 NC - 悬空
8 NC - 悬空
9 GND - 地
10 nSRST 输出 系统复位(低有效)
注意: SWO 不是所有调试器都支持。我手头有个便宜的调试器,SWO 引脚根本没接出来,想用 ITM 打印日志?没门。选型的时候一定要确认清楚。

4.3 Cortex-M 标准 SWD 接口(最小系统)

如果你板子空间实在紧张,可以只用 4 根线。这是 Cortex-M 系列芯片调试的最小配置。我做过一个可穿戴设备,板子只有指甲盖大小,用的就是这种接法。

最小 SWD 接口(4-pin):
  • SWDIO — 数据线,双向
  • SWCLK — 时钟线,调试器输出
  • GND — 地
  • VTref — 参考电压(有些调试器可以省略,但我不建议)

为什么会这样?因为 Cortex-M 芯片内部集成了 SWD 协议控制器,只需要这两根信号线就能完成所有调试操作:读写内存、设置断点、单步执行等等。

4.4 接口对比与选型建议

我个人习惯这样选:

  • 开发阶段: 用 20-pin JTAG,兼容性最好,信号完整
  • 产品原型: 用 10-pin SWD,省空间,够用
  • 量产板: 用 4-pin SWD 加测试点,成本最低

记得有一次,我给一个客户做方案评审,他们量产板用了 20-pin 接口。我说你们这板子成本至少多 5 毛钱,而且占地方。后来改成 4-pin 测试点,焊接的时候用弹簧针顶住就行,省事多了。

JTAG/SWD 接口选型决策流程 开始选型 板子空间是否充足? 是 否 20-pin JTAG 10-pin SWD 是否量产? 是否量产? 是 否 是 否 4-pin SWD 测试点 保留 20-pin 4-pin SWD 测试点 保留 10-pin 量产阶段建议用测试点,节省连接器成本

4.5 信号说明与注意事项

这里有几个关键信号,我得重点说一下:

  • VTref: 调试器通过这个引脚检测目标板的工作电压。我遇到过调试器死活连不上,最后发现是 VTref 没接,调试器以为目标板没上电。
  • nSRST: 系统复位信号。有些芯片需要复位后才能进入调试模式。我曾经用过一个国产 MCU,必须拉低 nSRST 才能识别 SWD 设备。
  • SWO: 这是 SWD 的附加功能,可以输出调试信息。说白了就是个串口,但速度比普通 UART 快得多。
避坑指南: 我曾经在一个项目里把 SWDIO 和 SWCLK 接反了,结果调试器能识别到目标芯片,但一读写内存就报错。查了两天才发现是线序问题。所以,焊接前一定用万用表量一下,别信自己的记忆。

嗯,接口定义这块就这些。记住一句话:VTref 必须接,GND 必须共,信号线别搞反。做到这三点,90% 的连接问题都不会出现。