JTAG与SWD调试接口接线详解:J-Link 20针到STM32实战排错指南
2026/9/24 7:20:47 网站建设 项目流程

上周帮一个刚转嵌入式的朋友调板子,他拿一根杜邦线对着J-Link和STM32F103来回比划,嘴里念叨“都是调试接口,怎么有的叫JTAG,有的叫SWD”。我低头一看,他把SWDIO接到了J-Link排针的TDI上,能不报错吗?屏幕上一串红色提示“Could not stop Cortex-M device! Please check the JTAG cable.”,这大概是我见过最典型的接线翻车现场。

嵌入式调试接口这件事,说难真不难,但坑全藏在细节里。JTAG和SWD不是同一个东西,J-Link的20针排针也不是随手一对就完事。这篇东西不打算讲太多虚的,就围绕“怎么接线”“为什么这么接”“接错了报什么错”来写,把我这些年调板子踩过的坑和沉淀下来的方法一次说清楚。刚入门的朋友可以直接照着接,老手也可以当一份排错清单参考。

1. 调试接口的底层逻辑:JTAG和SWD到底在解决什么问题

1.1 JTAG从板级测试到调试协议的身世

JTAG全称是Joint Test Action Group,最早是芯片和PCB层面的测试标准,后来才被移植成调试协议。核心思想很朴素:在芯片内部串起一条移位寄存器链,通过TCK、TMS、TDI、TDO四个信号访问芯片内部寄存器。所谓“边界扫描”,就是把芯片的引脚状态串成一条链,像扫描一样把数据一位一位移进去、移出来。

之所以要了解这段历史,是因为很多名字现在还在用。比如nTRST、TDI、TDO这些信号,你在STM32数据手册里能看到,在FPGA配置电路里也能看到。它们不是ARM专用的,而是源自JTAG标准。理解这一点,你就不容易把“JTAG只是ARM调试口”当成全部。

调试器通过JTAG访问芯片时,核心是操作TAP状态机。TCK提供时钟,TMS在时钟边沿决定状态跳转,TDI负责把指令和数据移入,TDO负责把结果移出。这块后面我专门讲,接线阶段你只要记住:TCK和TMS这两根线,是通信的地基,绝对不能接错。

1.2 SWD为什么能后来居上:两根线怎么干四根线的活

SWD全称Serial Wire Debug,是ARM后来定义的调试接口。它物理上只需要SWDIO和SWCLK两根线,SWDIO是双向数据线,SWCLK是时钟线,实际使用中再补一根GND就能跑起来。SWD复用了JTAG TAP的一部分逻辑,所以现在绝大多数Cortex-M芯片都同时支持JTAG和SWD,你不必担心芯片不支持。

那为什么SWD两条线能替代JTAG四条线?因为JTAG的TDI/TDO在全双工传输上确实浪费,而SWD用一根双向线做半双工传输,对单片机调试来说带宽完全够用。Cortex-M的调试寄存器访问量并不夸张,SWD的吞吐量已经能流畅完成下载、单步、断点等操作。

这里给个直观对比:

对比项JTAGSWD
最少信号线TCK/TMS/TDI/TDO/TRSTSWCLK/SWDIO
实际常用接线4~5根信号线2根信号线+GND
边界扫描支持支持不支持
下载调试速度中,Cortex-M场景足够
布线资源占用
适合场景FPGA、复杂SoC、板级测试Cortex-M单片机

J-Link、ST-Link、DAPLink这类调试器在Cortex-M上通常都支持两种模式,Keil里可以手动切换。我的习惯是:凡是纯Cortex-M项目,一律用SWD,省引脚、接线简单、不容易出错;只有涉及FPGA或者需要边界扫描的板子,才切回JTAG。

2. 保姆级接线定义:从20针到4线的对照手册

2.1 标准JTAG接口排针定义:20针与14针怎么数,定位键在哪里

J-Link最常用的接头是ARM 20针,也就是2×10的双排排针。这个连接器的定义有标准可循,奇数引脚大多是信号,偶数引脚大多是GND。我把常用的引脚定义列出来:

引脚信号方向说明
1VTref输入目标板参考电压检测
2GND-
3nTRST输出JTAG复位(可选)
5TDI输出JTAG数据输入
7TMS输出JTAG模式选择 / SWDIO
9TCK输出JTAG时钟 / SWCLK
11RTCK输入目标板返回时钟(可选)
13TDO输入JTAG数据输出
15nSRST输出目标系统复位(可选)
17DBGRQ输出调试请求(可选)
19DBGACK输入调试应答(可选)

注意,这是ARM标准20针,和某些芯片原厂做的“JTAG排针”不一定完全一致。我看到很多开发板会引出一个14针的双排JTAG口,14针其实就是20针的简化版:保留VTref、GND、nTRST、TDI、TMS、TCK、TDO、nSRST,其余地线同步减少。

关于“14针双排jtag定位键”,这个定位键本质是塑料外壳上的一个缺口或凸块,作用就是防反插。但我要提醒一句:不要只看外壳缺口就以为方向一定对。不同板子的丝印可能把1脚放在左上角,也可能放在右上角,最稳妥的办法是找原理图里调试器座子的丝印,确认1脚位置。定位键能防止插反,但不能防止你一开始就定义错方向。

数引脚的方法:把排针开口朝自己,左侧第一针通常是1脚。但双排针的编号规则通常是一列奇数、一列偶数,即最上面是1和2,往下依次3和4、5和6。如果你拿到的是2×7的14针座子,就按照“左单右双、从上往下递增”的规则去对。

2.2 SWD四线和五线:为什么我建议你无论如何都接上复位线

SWD最常见的接法是四根线:SWDIO、SWCLK、GND、VCC。第五根线是RESET,也就是目标板的复位信号。很多教程会说四线够了,我不否定,但如果你遇到“能连上但下载一半就掉线”或者“芯片休眠后连不上”的情况,多半就是缺了这根RESET。

RESET线的作用是什么?调试器可以通过它主动把目标芯片复位,尤其在程序把调试端口复用成普通GPIO、或者开了看门狗、或者进入了低功耗模式时,没有复位线,调试器根本没法把CPU拉回可控状态。接上RESET后,调试器可以在连接瞬间控制复位,避免CPU跑飞。

我给出J-Link 20针到目标板SWD的推荐接线:

J-Link 20针引脚目标板信号备注
1 (VTref)VCC参考电平,不是供电
2 (GND)GND共地必须接
7 (TMS)SWDIOJ-Link自动复用为SWDIO
9 (TCK)SWCLKJ-Link自动复用为SWCLK
15 (nSRST)NRST建议接

下面这张ASCII连接图是我自己常用的方式,和J-Link说明书的映射一致。你如果用的不是20针座子,而是单独的SWD 5针座子,直接对号入座就行。

J-Link 20PIN 目标板 SWD +-------------------+ | 1 VTref -------- VCC | 2 GND -------- GND | 7 TMS -------- SWDIO / PA13 | 9 TCK -------- SWCLK / PA14 | 15 nRESET -------- NRST +-------------------+

一个容易踩的坑是:有些人把J-Link的TDI当成SWDIO,把TDO当成SWCLK。这在SWD模式下是无效的。J-Link的20针座子里,只有TMS和TCK这两个引脚在SWD模式下会重新映射成SWDIO和SWCLK,TDI/TDO属于JTAG数据通道,接过去不会通信。别问我是怎么知道的,第一次用J-Link调SWD时我也接反过。

2.3 J-Link引脚映射:把20针转换成SWD的常见坑

J-Link和ST-Link不一样。ST-Link经常直接预留SWDIO/SWCLK/GND/VCC四个引脚,J-Link则非常喜欢用20针排针。于是很多人拿着杜邦线做“转接”,结果转错线。

记住一个原则:无论J-Link也好,其他调试器也好,SWD模式下真正需要的信号只有三根:SWDIO、SWCLK、GND,外加一个VTref和RESET。在J-Link 20针中,VTref在第1脚,SWDIO在TMS(第7脚),SWCLK在TCK(第9脚),RESET在nSRST(第15脚),GND随便选偶数脚即可。

有人问如果目标板没有引出JTAG座子,只有裸的SWD焊盘,怎么办?直接按上面表格焊接,不要试图通过TDI/TDO“碰运气”。还有一点,J-Link的SWD接口默认内部有上拉下拉,但目标板上的SWDIO和SWCLK最好也保留弱上下拉电阻,尤其是长线或者工业现场,抗干扰会好很多。

3. 实连接线时最容易翻车的五个细节

3.1 电压匹配:VTref不是电源输出

我先说一个最容易出问题的地方:VTref。很多人以为VTref带个“ref”就是供电引脚,拿来给目标板供电,结果不是带不动,就是把电平判定搞乱。VTref在调试器里实际是个采样引脚,用来检测目标板当前的电平,从而让调试器把逻辑电平阈值匹配过去。它不能输出大电流。

如果你的目标板没有独立电源,需要用调试器供电,请单独使用调试器配置的3.3V/5V输出引脚,而不是VTref。J-Link有些版本在固定位置提供了供电引脚,但供电能力有限,最多驱动低功耗板子。接之前一定要查清楚,别让板子上突然多一路电源。

另外要检查目标板电压是否在调试器支持范围内。标准J-Link通常支持1.2V到3.3V或者1.8V到5V,不同版本有差异。如果目标板是5V系统,你接了3.3V的VTref,调试器会认为芯片是3.3V,这对某些5V单片机来说可能通信不稳,甚至损伤引脚。

3.2 线材与杜邦线的“隐形电阻”:高频信号不是拿根母对母就能跑

很多实验板上,大家习惯用二十厘米长的杜邦线连接J-Link和目标板。短时间用可能没事,但只要环境有点干扰、线再长一点,就会出现“时好时坏”的诡异故障:今天能连上,明天就不行;换一台电脑又好了。

原因不复杂:SWCLK的时钟频率通常在几MHz,杜邦线本身有寄生电感和电容,线越长波形越差。J-Link默认速度可能比较高,线一长,上升沿变缓,目标芯片采样不到正确时钟,通信自然失败。

我的建议是:杜邦线总长度控制在15厘米以内,如果条件允许,用转接板加短排线或者漆包线飞线。实在只能用杜邦线,就把SWD时钟频率调低。Keil里的路径是Options for Target -> Debug -> Settings -> Max Clock,可以从4MHz降到1MHz,甚至100kHz。别觉得降速丢人,稳定先于速度。

3.3 复位引脚和上拉/下拉

目标板的复位电路通常有一颗100nF甚至更大容值的电容到地,这颗电容会影响调试器输出复位信号的边沿。调试器拉低复位引脚时,电容充电/放电需要时间,复位波形会变缓,如果调试器对复位完成时间要求严格,就可能出现“连接失败”或“写入期间复位失败”。

遇到这种情况,不用改板子,先试三件事。第一,确认J-Link的nSRST和目标板NRST之间没有接反,有些板子的NRST网络上有二极管保护,正反接法会影响。第二,在Keil或J-Link软件里把复位方式改成“Hardware Reset”而不是“Software Reset”。第三,如果目标板有复位按键,连接失败时手动按一下复位键,往往能瞬间建立连接。

另外,如果目标板的复位引脚有强上拉到VCC,调试器的复位输出需要具备开漏能力。标准调试器都支持,但杜邦线接触不良会让复位信号悬空,表现就是插上后板子频繁复位或者连不上。

3.4 目标板供电顺序:先开目标板电源,还是先插调试器

某些调试问题看着是接线问题,其实是上电顺序问题。我推荐的流程是:先把J-Link通过USB连到电脑,打开调试软件并设置好,然后给目标板上电,最后在软件里点连接。

为什么这个顺序比较稳?因为调试器先上电后,能够先检测目标板VTref电平为低,知道目标板还没供电;目标板上电后,VTref才会拉高,调试器根据这个跳变重新校正电平。反过来,如果目标板先上电,再插J-Link,调试器在插入瞬间会看到目标板已经有电平,而USB端还没稳定,容易出现握手异常。

不过这个顺序不是死的,不同芯片、不同调试器表现不一样。我的经验是养成固定顺序的习惯,尤其在公司批量调试时,统一操作顺序能减少很多“莫名其妙”的返工。

3.5 地线是debug的灵魂:常见接触不良

接线问题里,至少一半是GND接触不良。SWDIO和SWCLK的信号电平是以GND为基准的,地线没接好,信号就是悬空状态。有时候万用表量着通,实际因为杜邦线插座氧化、松动,信号传输时近端和远端地电位不一致,就会报“Communication Failure”。

最简单的排查方法:拿镊子轻轻拨一拨杜邦线接头,如果拨完怎么拨都能稳定下载,说明就是接触问题。更彻底的办法是不要只用一根GND线,最好从J-Link的GND端子引一根线到目标板GND,再从目标板调试接口的GND引脚引一根线,两根线并到同一个地网络,降低接触电阻。

当然,地线也不能无脑多接。如果J-Link和目标板分别通过各自的USB口连接到同一台电脑,电脑电源地已经把两者连起来了,再接一根GND是合理的,不会形成严重地环路。如果目标板用外部电源适配器供电,调试器用电脑USB供电,两边地电位可能差出零点几伏,这种情况一定要用一根粗短线共地。

4. 芯片引脚冲突:STM32/GD32“禁用JTAG”的来龙去脉

4.1 为什么STM32默认能用SWD,却还要关闭JTAG

STM32的调试引脚不是独立引脚,而是和GPIO复用。典型的是PA13/JTMS/SWDIO、PA14/JTCK/SWCLK、PA15/JTDI、PB3/JTDO、PB4/JTRST。芯片上电默认JTAG功能是开启的,所以你可以插上ST-Link直接用SWD或JTAG调试。但问题来了:当你需要用PA15、PB3、PB4做普通GPIO时,JTAG默认占用了它们,这时候就要通过配置把JTAG关掉。

STM32上对应的核心寄存器是AFIO的MAPR寄存器里的SWJ_CFG位。常见两个配置:

  • 仅禁用JTAG,保留SWD:适合把PA15/PB3/PB4腾出来当GPIO,同时还想继续烧录调试;
  • 完全禁用JTAG和SWD:这样所有相关引脚都释放为GPIO,但调试接口彻底失效,想再连接只能靠复位或恢复出厂。

用标准库写是这样:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

用寄存器写是这样:

AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; // 0x01000000

强调一下:这个操作本身很安全,但“完全禁用SWJ”的配置要慎用。如果你把SWD也关了,代码一跑起来,调试口就没了,后面再想连就得靠BOOT引脚救。我见过有人把SWJ_CFG设成“完全关闭”,烧进去后板子变砖,其实芯片没坏,只是调试口被自己关了。

4.2 GD32与国产芯片的差异

GD32很多型号和STM32引脚兼容,但寄存器细节有差异。比如GD32F4系列关闭JTAG的接口函数是GPIO_ConfigPinRemap(GPIO_SWJ_JTAG_DISABLE, ENABLE),不是STM32标准库那套。如果你把STM32的代码直接搬到GD32上,编译可能过,也可能报警告,但执行结果未必对。

更稳妥的做法是查GD32参考手册里的复用功能映射表,看看SWJ_CFG字段在哪个寄存器、哪个位段。国产芯片这几年越来越常用,但手册风格各异。我的经验是:在任何芯片上配置“禁用JTAG”前,先搜手册里“SWJ”、“JTAG disable”、“debug port”这几个关键词,找到原始寄存器定义再写代码,别靠经验盲写。

我踩过一次GD32F407的坑:参考某论坛代码关闭JTAG,结果SWD也跟着失效,只能把BOOT0拉高重新擦除。后来看手册发现,那个代码把整个调试端口都关了,不是只关JTAG。从此之后,每次关调试口我都仔细看位定义。

4.3 一个真实案例:SWDIO被占用后如何救砖

有块板子,自己写的程序初始化了串口1和LED,其中一个LED挂在PA13上。PA13默认是SWDIO,结果代码里把它配成推挽输出,程序烧进去后LED正常闪烁,但J-Link再也连不上了。报错就是“Could not stop Cortex-M device!”。

这种问题不用慌。大部分STM32有一个“强制从系统存储器启动”的机制,也就是BOOT0引脚拉高。启动时芯片会运行ROM中的bootloader,而不是用户Flash代码,用户程序里对调试口的复用配置就不会执行,调试口恢复默认状态。

救砖步骤:

  1. 断电,把BOOT0拨到1或者用跳线帽拉高,BOOT1保持为0。
  2. 上电,这时芯片工作在系统存储器启动模式。
  3. J-Link选择SWD,点击连接,一般能顺利识别到Cortex-M内核。
  4. 用下载软件执行“整片擦除”或至少擦除用户Flash区域。
  5. 擦除完成,断电,把BOOT0拨回0,重新上电。
  6. 此时芯片没有用户程序,调试口恢复默认,重新烧录正确固件。

整个过程并不复杂,但要注意擦除前不要勾选“编程选项字节”,否则可能把读保护打开。如果不小心开启了读保护,还得先解除读保护再做擦除,步骤更多。所以救砖时一定要看清楚操作界面。

5. 从错误提示反推接线问题:四条常见报错与对应检修

5.1 “Could not stop Cortex-M device! Please check the JTAG cable.”

这个报错非常经典。字面意思是:调试器已经发现了Cortex-M设备,但没法让CPU停下来。很多人以为这是“没连上”,其实更接近“连上了但没法控制”。

常见原因有三个:一是SWDIO/SWCLK信号线虚接,通信偶发错误;二是芯片内部看门狗在运行,调试器刚想停止CPU就立即复位;三是低功耗模式导致调试时钟域不稳定。

我常给别人的排查顺序是:先用短线重新接一下GND和SWDIO/SWCLK;再在Keil里把Port改成SW,频率调低;然后一手按住目标板复位键,一手点Connect;如果这样能连上,就说明复位信号和时序有问题。程序里如果开了IWDG,可以在调试连接期间先通过烧录器提供的“连接时复位”功能,让CPU停在复位向量处,不执行看门狗刷新指令。

5.2 “SWD/JTAG Communication Failure”

这个提示在Keil里很常见,一般出现在点击Download或Start Debug Session时。它比“Could not stop”更直接:调试器和目标芯片之间压根没建立正常通信。

先从最简单的查起:目标板上电了吗?J-Link的USB灯亮了吗?VTref电压是不是接近目标板供电?再看Keil的Debug设置里,Port是不是选了SWD,如果芯片只支持SWD,你选了JTAG,必然报这个错。还有一个容易忽略的点:目标芯片型号选错。比如板子是GD32F303,但Keil里选了STM32F103,通信协议参数可能不匹配。

如果以上都正常,把JTAG/SWD速度降到最低再试一次。很多“Communication Failure”其实就是线材过长导致通信时序失败,降速能明显改善。

5.3 Keil + J-Link 的 clone 警告该怎么处理

有些人会在Keil弹出的警告里看到类似“the connected probe seems to be a clone product”的提示。这不是接线问题,而是J-Link官方新版软件在检测非正版设备。官方固件在每次通信时会读取调试器内部序列号和固件特征,发现不匹配就会拒绝继续工作。这个行为本身是为了保护合法授权,避免用克隆设备干扰开发环境。

不想被这个提示卡住,最稳妥的方式是使用正规渠道的J-Link设备。如果团队预算有限,完全可以用ST-Link或者DAPLink替代,它们在Cortex-M调试场景下完全不输J-Link,大部分IDE也支持。DAPLink甚至开源,很多开发板直接集成,一根USB线就能下载调试。

再强调一句,碰到clone警告不要尝试用破解固件或者降级驱动去绕过。一方面违背软件授权协议,另一方面旧版本固件可能存在稳定性问题,在量产测试阶段踩雷更麻烦。合规使用工具才是可持续的方式。

5.4 时好时坏?先看SWD时钟频率和RTCK

调试时最磨人的故障是“时好时坏”。今天能连上,明天连不上;用手按住杜邦线就能连,松手就掉;温度高了不行,低温可能好。这种问题十有八九是信号完整性。

高频信号的上升沿如果太差,目标板采样的时钟边沿会出现毛刺,导致几根位同步出错。此时调低SWD时钟频率是最高性价比方案。Keil里把Max Clock从4MHz改成1MHz或者更低,往往立刻恢复正常。如果板子上有RTCK引脚(Returned TCK),可以考虑把J-Link的RTCK接到目标板,让芯片动态调整时钟相位。不过Cortex-M单片机很少引出RTCK,多数场景用不上。

5.5 接口模式选择错误:JTAG还是SWD不是随便选的

有些新手在Keil里看到Port选项有JTAG和SW,会以为随便选一个能连上就行。实际上,目标芯片支持什么接口,是硬件决定的。绝大多数STM32、GD32的Cortex-M内核同时支持JTAG和SWD,但有些芯片会裁剪掉JTAG,只保留SWD,尤其是一些低引脚数单片机。如果芯片不支持JTAG,你选JTAG端口,它就永远是“Communication Failure”。

反过来,如果你在调试FPGA或者Cortex-A内核的SoC,比如Zynq-7000等,通常要用JTAG,因为SWD更多是为Cortex-M这类内核设计的。判断方法很简单:查芯片手册里的Debug Access Port章节,或者看开发板原理图引出的是4针SWD还是20针JTAG。原理图已经告诉你答案了。

6. 进阶:JTAG状态机到底是什么,以及Zynq固化Flash的“JTAG玄学”

6.1 JTAG TAP状态机:用两个引脚把数据“挤”进芯片

聊完实操,还是有必要花点时间说说JTAG状态机。很多人用JTAG一辈子,遇到“为什么TCK/TMS不能接反”时只能回答“手册说的”。其实理解状态机后,这个问题自然就有答案。

TAP状态机是一组有限状态,主要包括Test-Logic-Reset、Run-Test/Idle、Select-DR-Scan、Select-IR-Scan、Capture-DR、Shift-DR、Exit1-DR、Update-DR等。TCK上升沿采样TMS信号,根据当前状态和TMS值跳转到下一状态。TDI和TDO则是在Shift-DR或Shift-IR状态下,每个时钟沿移动一位数据。

打个比方:TAP状态机像一条带闸门的流水线。TMS是闸门开关信号,决定数据往哪个队列走;TDI是排队进来的人,TDO是处理完走出去的人;TCK是传送带的节奏。TCK一停,整条流水线就停摆;TMS接错,人会被送到错误的地方,数据自然乱套。

SWD虽然不叫JTAG,但底层也借用了这套扫描链思路,SWCLK负责节奏,SWDIO既当TMS又当TDI/TDO的角色,只是通过时分复用一条线完成。所以不管是JTAG还是SWD,TCK/SWCLK和TMS/SWDIO都是通信的命根子。

6.2 Zynq 7020 使用JTAG固化Flash时必须使用DDR吗

这个热词很有意思,很多人问“Zynq 7020用JTAG固化QSPI Flash,是不是必须先用DDR”。如果你做过Zynq开发,应该能感觉到,这个问题一半是硬件接线,一半是软件流程。

先明确一点:JTAG只是传输通道,它不关心你把数据写到DDR还是Flash。直接通过Vivado Hardware Manager往FPGA下载bitstream时,数据是通过JTAG送到PL配置逻辑的,完全不碰DDR。这个场景下,DDR不是必须的。

但用SDK或Vitis的“Program Flash Memory”烧写QSPI Flash时,流程一般是:先把FSBL通过JTAG加载到芯片的OCM(片上内存)中运行,然后由FSBL驱动QSPI控制器,把镜像写到Flash。FSBL本身运行在OCM里,不占DDR。可为什么有些教程说需要DDR?因为FSBL在启动DDR初始化后,可能会把待烧写镜像从QSPI读到DDR做校验,或者后续启动流程需要从DDR运行裸机程序。这种情况下DDR起的是搬运和缓存作用,不是JTAG固化本身的硬性前提。

所以结论是:如果你遇到烧写QSPI报DDR相关错误,先检查FSBL里是否初始化了DDR、DDR芯片是否焊接正确、DDR型号与FSBL配置是否一致,而不是一上来就觉得“JTAG必须要DDR”。这是两个层面的问题,别混在一起。

6.3 边界扫描与板级调试:JTAG的价值不只烧录

最后说一个容易被忽略的点。SWD很香,但JTAG并没有被淘汰,因为JTAG不只是“下载代码”的接口,它还有一个杀手级应用——边界扫描测试。在产品量产阶段,PCB上可能有大量引脚无法用万用表直接测量,JTAG可以通过边界扫描寄存器把每个引脚置高、置低、采样,从而判断引脚开短路。这在BGA封装、高密度板上几乎是救命功能。

SWD本身不支持边界扫描,所以如果你的产品涉及复杂PCB测试,或者有FPGA、CPLD这类器件,JTAG接口还是必须保留。很多工程师只从单片机视角看问题,觉得“有SWD就够”,结果到量产测试阶段发现没有JTAG链,测试工装只能靠飞针台,成本和效率都下来了。

我画板子时的习惯是:如果主控是Cortex-M,预留4针SWD座子作为日常调试;如果板子上还有FPGA或CPLD,额外加一组JTAG链接口。两者共存,平时用SWD快速调程序,到了板级测试阶段再用JTAG跑边界扫描,互不干扰。

最后再分享一点自己的经验:建议给调试接口的每个引脚固定配色。我自己的标准是红色接VCC,橙色接SWCLK,黄色接SWDIO,绿色接RESET,黑色接GND。不管换到哪块板子,颜色定义永远一致。别小看这个习惯,遇到J-Link和ST-Link来回切换时,能省下大量看丝印的时间。再配合一个固定的上电顺序和故障排查清单,调试接口问题基本不会再成为项目卡点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询