3. 硬件连接:目标板供电、SWD/JTAG接口定义、接线实操

好,到了动手环节了。前面我们聊了工具选型和驱动安装,那些都是热身。这一章才是真正把烧录器和目标板「连起来」的关键一步。硬件连接这事儿,说简单也简单,就四根线;说复杂也复杂,我见过太多工程师在这上面栽跟头。

为什么会这样?因为很多人觉得「不就是接几根线嘛」,结果一上电,芯片锁死了,或者烧录器冒烟了。嗯,这里要注意,硬件连接不是插上去就完事,你得理解每根线的作用。

3.1 目标板供电:谁给谁供电?

这是个经典问题。烧录器要不要给目标板供电?还是目标板自己供电?

我个人习惯是:目标板独立供电。除非你用的是那种带隔离的官方烧录器,否则别指望烧录器的USB口能稳定输出500mA给目标板。我在项目中遇到过,一个同事用烧录器的3.3V给整个板子供着,结果板子上有个电机驱动一启动,电压瞬间掉到2.8V,烧录直接中断,芯片还进了奇怪的状态。

供电方式就两种,我列个表对比一下:

供电方式 操作 适用场景 风险
目标板自供电 目标板接自己的电源(电池/适配器) 功耗大、有电机/传感器 低,但需共地
烧录器供电 烧录器的VCC引脚输出给目标板 低功耗、调试阶段 电流不足、电压跌落
我的建议: 调试阶段,如果目标板功耗小于100mA,可以用烧录器供电。否则,老老实实给目标板单独上电。不管哪种方式,GND必须共地,这是铁律。

3.2 SWD/JTAG接口定义:四根线搞定一切

现在主流调试接口就两种:JTAG和SWD。JTAG需要5根线(TMS、TCK、TDI、TDO、nSRST),而SWD只需要2根数据线加电源地,一共4根。说白了,SWD就是JTAG的简化版,占用的IO口少,对于引脚紧张的MCU来说简直是救星。

我常用的SWD接口定义是这样的:

  • VCC(或VTref):参考电压,告诉烧录器目标板的工作电压是3.3V还是1.8V。注意,这不是供电线,是电压检测线。
  • GND:地线,必须接,不接烧录器没法形成回路。
  • SWDIO:数据线,双向传输,负责命令和数据的收发。
  • SWCLK:时钟线,由烧录器驱动,控制通信节奏。

有些烧录器还会多一个 nRESET 引脚,用来复位目标芯片。如果你遇到烧录失败的情况,试试把复位引脚也接上,我曾经被这个问题卡了整整一个下午。

避坑指南: 我曾经接过一块板子,VCC和GND都对了,SWDIO和SWCLK也量了通断,但就是连不上。最后发现,目标板的SWDIO引脚被复用成了GPIO,上电后程序把它拉低了。解决办法:按住复位键,点击烧录,再松手。这叫「复位烧录法」,遇到锁死的芯片可以试试。

3.3 接线实操:手把手教你接

好,理论说完了,咱们直接上手。假设你手头有一个J-Link和一个STM32F103的最小系统板。

第一步:确认引脚位置

拿出目标板的原理图或数据手册,找到SWD接口。一般会标成 SWDIO、SWCLK、VCC、GND。如果没有,找JTAG接口,把TMS接SWDIO,TCK接SWCLK。

第二步:杜邦线连接

我建议用不同颜色的线来区分功能,方便排查:

  • 红色:VCC
  • 黑色:GND
  • 黄色:SWDIO
  • 绿色:SWCLK

第三步:检查电压

用万用表量一下VCC和GND之间的电压,确认是3.3V还是5V。如果电压不对,别急着接烧录器,先查电源。

第四步:连接烧录器

把杜邦线的另一端插到烧录器的对应引脚上。注意,不同烧录器的引脚顺序可能不一样,一定要看烧录器上的丝印。

接线完成后,用万用表通断档再测一遍:

  • 烧录器的GND ↔ 目标板的GND:通
  • 烧录器的SWDIO ↔ 目标板的SWDIO:通
  • 烧录器的SWCLK ↔ 目标板的SWCLK:通
关键检查点: 上电前,用万用表量一下VCC和GND之间有没有短路。如果短路,别上电,先查板子。我见过有人把杜邦线插反了,VCC和GND直接怼在一起,烧录器瞬间保护。

3.4 核心逻辑:一张图看懂硬件连接

下面这张图展示了烧录器、目标板和PC之间的连接关系。你想想看,数据从PC的USB口出来,经过烧录器转换成SWD协议,再通过四根线送到目标芯片的调试接口。整个过程就这么简单。

SWD硬件连接框架图 SWD硬件连接框架图 PC USB接口 烧录器 J-Link / ST-Link 目标板 MCU + 外设 USB线 SWD 4线 SWD四线说明: • VCC(红色):电压参考,告诉烧录器目标板电压 • GND(黑色):共地,形成回路 • SWDIO(黄色):双向数据线 • SWCLK(绿色):时钟线,由烧录器驱动

3.5 常见问题与排查

硬件连接完了,烧录软件打开,点击「Connect」—— 没反应。别慌,我列几个最常见的坑:

  1. GND没接好:这是最蠢也最容易犯的错误。GND不接,信号没法回流,烧录器根本检测不到目标芯片。
  2. VCC电压不匹配:目标板是1.8V,烧录器输出3.3V,直接把IO口烧了。反过来,烧录器检测不到1.8V的参考电压,也会报错。
  3. SWDIO和SWCLK接反了:这两根线长得差不多,但功能完全不同。接反了,烧录器会报「No target detected」。
  4. 目标芯片被锁死:如果芯片的SWD引脚被配置成普通IO,或者芯片进入了低功耗模式,烧录器就访问不了。解决办法:拉低复位引脚,或者用「连接前复位」功能。
我的排查流程: 先量电压,再量通断,最后看软件报错。如果软件报「SWD通信超时」,90%是硬件连接问题,别急着怀疑芯片坏了。