公司动态

EVLSPIN32G0B2与ST-LINK/V2调试接线指南:SWDIO/SWCLK引脚详解

📅 2026/8/31 21:38:18
EVLSPIN32G0B2与ST-LINK/V2调试接线指南:SWDIO/SWCLK引脚详解
做硬件的人应该都有过这种经历手里拿到一块ST的电机驱动评估板板子看着挺高级但真正要跑固件时卡在第一步——调试器怎么连。我这次用的就是EVLSPIN32G0B2这块三相无刷电机控制评估板配上最经典的ST-LINK/V2调试器结果在20pin座子面前愣了半天。网上资料倒是不少但很多都说得含糊尤其是涉及SWDIO、SWCLK、VCC、GND这四根线在20pin座子上具体对应哪个脚的问题真没几个人讲清楚。这篇文章就是把整个接线过程和踩坑记录写下来给和我一样第一次用这块板子的人做个参考。开头先回答大家最关心的那个问题ST-LINK/V2那个符合ROHS标识的20pin座子烧录时用的SWDIO、SWCLK、VCC、GND分别对应第7、9、1脚地线在4、6、8、10等偶数脚位。但光知道这个还不够实际接线时还会遇到供电顺序、引脚方向、驱动识别一堆问题。我尽量把整个过程完整还原出来。1. 先搞清楚这两样东西是什么1.1 EVLSPIN32G0B2这不是一块普通开发板EVLSPIN32G0B2是ST推出的电机控制评估板核心器件是SPIN32G0B2这芯片很有意思它把STM32G0B2微控制器和三相栅极驱动器封装在了一起。也就是说电机控制的MCU部分和驱动部分在同一个芯片里搞定外面再接上功率MOSFET和采样电路就能驱动一台无刷直流电机或者永磁同步电机。这块板子的定位是评估和原型验证所以你会在上面看到比较完整的功率级电路、电流采样放大电路、过流保护、母线电压检测还预留了各种通信接口。板子的逻辑部分工作在3.3V但功率部分需要的电压高得多通常是十几伏到几十伏的直流电源。这一点很重要因为它直接决定了调试时的供电策略后面我会细说。很多第一次接触这块板子的人会拿它和普通STM32开发板比觉得不就是个带电机驱动的开发板嘛。但实际上电机驱动板的调试环境比普通开发板复杂不少最大的区别就是供电。普通开发板一根USB线就能搞定电机板不行你必须给功率部分单独供一个高压电源否则MCU虽然可能上电了但整个系统状态是不完整的甚至在某些板子上MCU的电源也依赖这个高压输入。1.2 ST-LINK/V2老将出马SWD比JTAG省事ST-LINK/V2是ST官方最经典的调试器虽然现在ST-LINK/V3也出来好几年了但V2凭借便宜、稳定、兼容性好依然是很多工程师手头的常备工具。它支持SWD和JTAG两种调试协议也支持STM8的SWIM模式。对于STM32G0B2这颗Cortex-M0内核的芯片用SWD就够了四根线搞定比JTAG动辄五六根线清爽得多。SWD这个协议全称是Serial Wire Debug调试时只需要两条双向/单向的信号线SWDIO用于数据输入输出SWCLK用于时钟再加上电源和地就能完成烧录和调试。这也是为什么大家会关心“SWDIO、SWCLK、VCC、GND”这四个脚因为它们就是SWD调试的最小集合。如果你还想做更高级的调试比如用SWO引脚输出调试信息那还要额外接一根线到第11脚但那不是烧录的必需条件。ST-LINK/V2上的调试接口是一个标准的2x10的20pin排针座兼容ARM标准的20pin调试接口定义。这就是标题里说的“s-link v2 rohs的20pin座子”。很多人在网上搜这个问题就是因为ST-LINK/V2的座子上并没有丝印标清楚每个引脚的功能只能看到一个编号或者一个三角指向1脚剩下全靠查资料。2. 20pin座子引脚定义SWD四根线到底在哪2.1 标准ARM 20pin调试接口的引脚排布ST-LINK/V2的20pin座子遵循的是ARM公司定义的Cortex调试接口标准这个标准在ST的板子和调试器上通用。整个座子是2排×10针1脚和2脚在左上角奇数脚在左列偶数脚在右列从上往下排。用文字描述有点绕看下面的表会直观很多。这个表就是照着ST-LINK/V2座子正面看过去的引脚顺序也是你拿着ST-LINK/V2面对自己时的视角。引脚号信号名SWD模式下的作用备注1VCC目标板电平参考连接到EVLSPIN32G0B2的3.3V2T_VCC目标板电平参考部分版本此脚为空以1脚为准3NRST目标板复位信号接上后调试器可以控制复位4GND地与目标板共地5TDIJTAG数据输入SWD模式下不用6GND地与目标板共地7TMS/SWDIOSWD数据线烧录关键脚必须接8GND地与目标板共地9TCK/SWCLKSWD时钟线烧录关键脚必须接10GND地与目标板共地11TDO/SWO调试串行输出SWD模式下可选用于打印调试信息12GND地与目标板共地13NC未连接不用管14GND地与目标板共地15NC未连接不用管16GND地与目标板共地17NC未连接不用管18GND地与目标板共地19NC未连接不用管20GND地与目标板共地所以如果你只是想烧录程序拿着ST-LINK/V2原装的那根IDC20线只要确认线序是标准的1对1直通直接插到EVLSPIN32G0B2板子的对应座子上就能用。前提是板载的插座接口定义也遵循这个标准而ST官方评估板一般都会遵循。2.2 EVLSPIN32G0B2板载接口的方向识别EVLSPIN32G0B2板子上那个20pin的调试座丝印标号一般是CN1或者CN2具体哪一个是调试口可以看原理图或者用户手册。这里说一个很实用的识别方法板载座子旁边通常有一个小三角箭头或者一个带圆点的标记指示1脚的位置。你拿着ST-LINK/V2它上面的20pin座子1脚位置也有类似的标记把两者的1脚对好整根线就不会插反。我第一次插的时候没注意方向直接把线往上一怼结果调试器死活识别不到目标板。后来才发现是方向反了等于把VCC接到了地脚上。好在这个座子本身没有物理防呆只是排线两端的卡扣位置一样所以插反是完全有可能的尤其是当你通过延长线或转接头连接时更容易搞错。所以每次接线前我现在的习惯是先看一眼两端的1脚位置再决定线的方向。还有一个注意点EVLSPIN32G0B2板子上的调试座不一定就是ST-LINK/V2线上那种排针座。ST-LINK/V2的20pin座是排针针凸出来但它原装线两端都是母头可以插在排针上。如果EVLSPIN32G0B2板子上是排针座那原装线两端一插就完事如果板子上是排母座就需要一根一端公头一端母头的转接线或者干脆用杜邦线飞线。这个细节虽然小但能避免你拿着线在板子上比划半天。2.3 如果板子丝印不清用万用表确认有些板子丝印模糊尤其是二手板或者经过多次返修的板子1脚标记可能看不清。这时候最靠谱的方法是掏万用表用二极管蜂鸣档测量。先找地脚把万用表黑表笔搭在板子的地网络比如电源输入端的负极端子或者金属屏蔽壳红表笔依次去碰20pin座子上的引脚哪个脚能响哪个脚就是GND。按照ARM标准所有偶数脚几乎都是GND所以你扫一圈会发现4、6、8、10这一排全通这反过来也能验证座子的方向。再找VCC把板上电测各引脚对地的电压哪个脚是3.3V哪个脚就是VCC。注意这个电压必须是目标板上电之后才有如果板子没供电这一步是测不出来东西的。VCC找到后再顺着排针顺序数就能推算出SWDIO和SWCLK的位置。按照标准定义SWDIO在VCC下面往下数第三个7脚SWCLK再往下两格9脚但保险起见还是结合丝印方向推算别只凭记忆数。这里说个我自己的经验教训尽量不要用“数格子的方法”去确认引脚因为只要你一开始把1脚认反了后面全错。正确做法是至少找到两个确定点比如GND和VCC再用它们来校准方向这样才万无一失。3. ST-LINK/V2接线与供电实操3.1 硬件连接排线直插还是飞线EVLSPIN32G0B2和ST-LINK/V2之间的连接方式取决于你手头有什么线。最理想的情况是板子的调试座就是2.54mm排针座直接拿ST-LINK/V2的原装IDC20线对插。这种线是扁平线两端都是20pin母头插的时候注意1脚对齐就行非常简单。但很多实际场景下板子和调试器离得比较远或者板载座子被电机驱动的高压端子挡住了这时候就得飞线。飞线只需要接4根SWDIO、SWCLK、VCC、GND。有条件的话把NRST也一起接了这样调试器可以在连接时控制目标板复位尤其是用STM32CubeProgrammer里的“连接时复位”模式稳定性会明显提升。飞线时的接线顺序有讲究我的习惯是先接GND再接SWCLK然后接SWDIO最后接VCC。先接地的目的是让两个设备之间有个共同的电位参考点避免后续插拔信号线时产生电位差把引脚打坏。虽然STM32的引脚一般都有ESD保护但这种习惯能帮你省去很多麻烦尤其是在带电操作的时候。硬件接好之后用万用表量一下各根线有没有虚接尤其是杜邦线时间长了簧片会松频繁插拔之后接触不良是常事。3.2 供电顺序必须先让板子跑起来EVLSPIN32G0B2不像普通开发板不能靠ST-LINK/V2供电。ST-LINK/V2第1脚的VCC只是用于检测目标板电平它不是一个完善的电源输出官方手册里也明确说明这个脚是电平参考而非供电源。很多克隆版的ST-LINK/V2虽然能从第1脚输出3.3V但电流极小带不动电机板这种级别的负载更别说功率部分了。所以正确的供电顺序是先把EVLSPIN32G0B2的电源接好让板子正常上电MCU跑起来然后再把ST-LINK/V2插到电脑上最后再连接20pin调试线。整个过程先“目标板上电”后“调试器连接”。EVLSPIN32G0B2板子的电源范围具体多少伏需要看板子上的丝印和用户手册。按照SPIN32G0B2芯片的典型应用场景一般在几伏到几十伏之间常见的是12V到48V这个区间。注意看丝印上的VIN或VBUS端子标识有的板子还有反接保护二极管如果有压降测量时别惊讶。上电后最好先用万用表确认MCU的3.3V已经正常产生很多时候调试连不上不是调试器的问题而是前面这个直流电源压根没给对。3.3 STM32CubeProgrammer连接配置硬件接好后软件上的设置也很关键。ST-LINK/V2接上电脑后在设备管理器里应该能看到一个“STMicroelectronics STLink dongle”之类的设备。如果你用的是Windows系统且装过ST官方驱动基本插上就识别。如果没反应装一下ST-LINK驱动现在一般通过安装STM32CubeProgrammer或STM32CubeIDE就会自动带好驱动不用单独找。打开STM32CubeProgrammer右上角选择ST-LINK连接方式选SWD频率可以先用默认的4MHz。点击Connect正常情况下软件会读出芯片的ID显示Cortex-M0内核然后就能读Flash、写Flash、改选项字节了。如果你的板子芯片之前被设置过读保护连接可能会失败这时候可以用模式设置里的“连接时复位”选项配合已接的NRST线很多情况下能解掉这个坑。还要提醒一句ST-LINK/V2在Windows下识别出来的设备名可能因驱动版本不同而不同比如有的是“ST-Link dongle”有的是“STLink dongle”有的是“STM32 ST-LINK”。别看到名字不一样就以为驱动没装对只要设备管理器里没有黄色感叹号基本就可以。4. 烧录电机固件的完整流程4.1 通过CubeProgrammer烧录hex文件连接成功之后烧录其实是很简单的一件事。在STM32CubeProgrammer的编程页面上选择要烧录的hex或bin文件然后点击下载按钮。ST-LINK/V2会先通过SWD接口把目标芯片复位到可编程状态然后按扇区擦除、写入、校验的流程走完。对于STM32G0B2来说整个过程也就几秒钟。烧录完成后把调试器断开给EVLSPIN32G0B2重新上电程序就开始跑了。如果你烧的是ST官方提供的电机控制固件比如带调试界面的MCSDK例程上电后电机应该处于待机状态等待启动命令或者通过UART/USB接口发送指令。这里有个很容易出现的小问题烧录之前最好确认一下固件的启动文件里时钟配置是否正确。如果固件里把时钟配置错了芯片上电后可能不工作但你又没法通过普通手段看到MCU是否跑飞。最简单的验证方式是烧录后立刻重新连接调试器如果能正常连上说明芯片至少还活着程序大概率没问题。4.2 在CubeIDE里直接在线调试STM32CubeIDE也支持直接在线调试。新建工程或者在现有工程里打开调试配置选择ST-LINK作为调试器接口选SWD然后点击Debug。IDE会自动下载固件并停在main函数入口。这时候你就能单步执行、看变量、看外设寄存器了对调试电机控制算法来说非常方便。在线调试电机板有一个地方要注意电机驱动板上往往有功率级如果程序在调试过程中让电机转起来而你又走到了断点停下来此时PWM输出可能会固定在一个电平导致电机线圈长时间通大电流。这在大功率电机上特别危险轻则烧MOSFET重则把板子搞废。所以在调试电机控制程序时我习惯先把功率级使能的那个GPIO在初始化阶段就屏蔽掉或者干脆断开母线电源只调MCU部分逻辑确认没问题了再接母线测功率级。4.3 确认固件正常运行的方法判断板子有没有跑起来最直接的办法是看LED。EVLSPIN32G0B2板载了状态指示灯不同固件里灯的行为不一样但上电后只要有不闪烁的常亮或者呼吸效果基本说明MCU已经执行到主循环了。如果灯完全不亮先用万用表量3.3V和地排除供电问题再查一下NRST引脚电平是否正常有时候调试器飞线不小心碰到NRST会对地短路导致芯片一直被复位着跑不起来。另外一个实用方法是通过UART打印。EVLSPIN32G0B2板子上一般有UART调试接口或者USB转串口如果固件里配置了串口打印接上串口助手就能看到启动日志。这个信息量比LED大得多能直接告诉你固件跑到哪一步、报了什么错。很多电机控制固件还会在上电时通过UART输出V-BUS电压、温度等自检信息看到那些就说明系统已经很健康了。5. 常见问题与排查技巧实录5.1 连接时报“No target found”这是最常见的错误提示意思是没有发现目标芯片。出现这个问题的原因按概率排序大概是板子没上电、SWDIO/SWCLK接反、方向插反、芯片处于读保护状态、调试线接触不良。先检查板子供电量一下3.3V是否正常。再确认SWDIO和SWCLK有没有接反这两个一旦接反调试器就找不到芯片。如果用的是原装20pin线直插检查一下两端的1脚是否对齐。如果都没问题试着把NRST也接上然后STM32CubeProgrammer里把连接模式改成“连接时复位”。还有一个坑如果芯片之前被烧录过设置读保护的固件调试器也会报No target found。这时候用STM32CubeProgrammer里“全片擦除”的功能配合复位脚通常能解锁。注意这会清掉Flash里所有内容。现象可能原因解决方向提示No target found目标板没上电先给EVLSPIN32G0B2供上母线和逻辑电源量3.3V提示No target foundSWDIO/SWCLK接反核对两脚位置特别是飞线时提示No target found芯片已读保护用CubeProgrammer的复位连接模式尝试全片擦除提示No target found调试线接触不良杜邦线换新或者压紧后再试一次提示Error: Connection errorST-LINK驱动问题重装ST官方驱动或重装CubeProgrammer5.2 ST-LINK/V2能被识别但一连接就断开这种问题的特征是电脑设备管理器里能看到ST-LINK/V2但CubeProgrammer一连接就报错。大概率是ST-LINK/V2本身的固件太旧或者克隆版兼容性不好。ST-LINK/V2固件更新可以用STM32CubeProgrammer自带的固件升级工具但克隆版升级很容易失败变砖。我的建议是如果你用的是几十块钱的克隆版尽量别在软件里点固件升级能用就凑合用如果连接稳定性和速率实在不行咬咬牙换个原版V2或者直接上V3会更省心。另外连接速率也是一个因素。有些人习惯把SWD频率调到最高但长杜邦线或者接触不良情况下高频信号很容易变形。把频率降到1.8MHz甚至更低往往就能稳定连接了。SWD频率不是越高越好稳定可靠永远是第一位的。5.3 板子能连上但烧录失败连接成功但写入失败这种一般出现在烧录过程中擦除或写入Flash报错。优先检查供电稳定性电机板正常工作时电流很大如果你的电源本身电流不够启动瞬间电压跌落MCU的3.3V也跟着波动Flash写入就会失败。这时候接一个稳定的直流电源把电流余量留足问题就解决了。还有一种情况是Flash写保护被使能。STM32G0B2有选项字节可以配置读保护和写保护如果固件里配置过直接烧录会报错。处理方式是先在CubeProgrammer里的选项字节页面把读保护等级改成0然后烧录。5.4 成功烧录后为什么电机还是不转烧录成功只是第一步电机不转的原因就复杂了。我遇到过最典型的一种烧了固件但没使能功率级或者使能信号对应的GPIO和板子硬件连接不对。EVLSPIN32G0B2的功率级使能脚一般在板上通过跳线帽连接如果跳线帽没插或者位置不对MCU再正常也控制不了驱动芯片。另一种情况是电机本身的问题比如三相接线顺序不对或者霍尔传感器位置不对。这些不是标题里说的调试器连接问题但确实会在调试时出现而且容易让人误以为是程序没烧进去。所以我想多说一句烧录成功后如果电机不转先用万用表检查母线电压有没有到功率级用示波器看PWM输出波形有没有产生再回头查固件配置而不是一遍遍重新烧录同一个程序。结尾这次调试EVLSPIN32G0B2的过程最大的感受就是硬件连接的坑远比软件配置的坑多。20pin座子不算复杂但如果你对引脚定义没概念一开始就接错后面所有的排查工作都会变得特别盲目。所以我建议拿到一块新评估板第一件事就是把用户手册里那个调试接口的原理图找到对照实物确认一遍引脚再动手接线。只要SWDIO、SWCLK、VCC、GND这四根线接对供电顺序也对ST-LINK/V2这块老调试器的连接基本就是一次成功。真搞不定的时候把NRST也接上给调试器多一个能操作的目标板复位通道很多莫名的连接问题都能迎刃而解。