STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD

在调试STM32F103(其他芯片类似)时,如果认为自己的电路设计的没问题,使用USB转串口模块直接通过TXD RXD引脚进行下载,往往会遇到问题。如果没有设计仿真接口,程序的BUG只能处于“猜”的状态,非常难以定位。硬件工程师最好别这样干,如果真的遇到这种情况,请按我的实际经历来飞线设计,也能临时解决问题,不用等做新板子。

这次遇到的问题是这样的:STM32F103,100脚,贴片封装。设计了串口电路进行程序下载。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第1张图片

程序烧写软件采用mcuisp。

界面如下:

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第2张图片

程序烧写完成后不工作,哪怕这个程序曾经正常工作过。现在开始抓狂。

做硬件的都有这样的经验,出了问题需要分析的原因五花八门,有的时候问题的解决,是一个想不到的低级错误。

但,一切的故障排除,得让程序单步执行才能下手吧?自己的板子上又没有设计JTAG仿真接口。

没关系,只有焊接手艺还在,可以飞线解决。

先看一下JTAG仿真接口的定义。经过拿仿真器实际测量,发现下图是正确的,同样的仿真器,同样的排线,选择不同的工作模式时,引脚的定义是不一样的。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第3张图片

由于SWD模式理论上只需要3根线就能调试,所以在这里我也不推荐使用JTAG方式(好像至少5根线才行)。

网络上的资料五花八门,比如我对下图深信不疑。结果证明这是错的,用万用表测试1脚和2脚是短接的,应该是VCC。19脚没有连接其他东西。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第4张图片

手头有两个仿真器,放在一起对比一下。左侧一个是新出的ST-LINK V2,右侧是几年前用的J-LINK,这两种仿真器在KEIL中都支持。从外观上可以看出老款的仿真器体积比较大,新款的体积小。这只是外观,真正使用的时候回发现,新款的手感和坚固程度更好一些。出了外观和手感,它们还有一个重要区别,就是ST-LINK V2只需要安装驱动就行了。而J-LINK需要安装软件。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第5张图片

J-LINK安装的软件如下图所示。一大堆。而且J-LINK一个常见的问题是:如果你购买的“国产”的,哪天不小心点击了“升级”之后,就不能用了。这个内容很多,不在这里说那么多了。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第6张图片

看看ST-LINK的设置界面。我的keil版本是4.7,网络上的资料显示只要是4.20以上版本就能支持,可是我仍然选择的4.7.也推荐这样做。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第7张图片

注意,设置的时候,一定要选择下面的这个(ST-Link Deguger),不要选择带括号的那个。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第8张图片

下面讲怎么连线。刚才讲了,SWD需要的引脚最少,SWD是串行线调试模式。需要两个引脚SWDIO和SWCLK。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第9张图片

有的是这么说的。SWDIO,顾名思义,就是数据IO,SWCLK,顾名思义,就是时钟呗。还有就是GND,这个是电平基准,肯定需要连接。但是实际上这样连接ST-LINK是不行的。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第10张图片

看一下SWDIO和SWCLK引脚是在什么位置?SWDIO是第72脚,SWCLK是76脚。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第11张图片

PCB上是这里。右上角的72和76.引脚很密,需要一定的焊工,当然,放大镜是必须的。用漆包线最好,或者用其他很细的线也行。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第12张图片

焊接的效果。贴上胶带的原因是固定。本来引脚就细,再焊接上挂锡量本来就不多的引线,万一动一下引线,很可能导致脱落或者折断芯片引脚。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第13张图片

这两个引脚,加上GND,连接到ST-LINK V2上面。左边一排从上向下数第4个插针是SWDIO,第5个插针是SWCLK。GND引脚在右侧一排插针,除了最上面的这一个之外,其他的都是GND,随便连接哪个都行。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第14张图片

 

这三个引脚通过杜邦线连接仿真器之后,发现在KEIL里面进行设置的时候,找不到仿真器。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第15张图片

这怎么办?难道是飞线距离太长,影响数据传输?不应该啊,线并不长,传输速率也并不高啊。难道是仿真器的插针顺序自己搞反了?反复核对,也没错。

网络上说,最好是再将RESET连接到仿真器上。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第16张图片

实际证明,这样也不行。

最后怎么解决的呢?

又添加了一个VCC,也就是将板子上的3.3V接入到仿真器的1脚。最后的连接方式如下.其中GND有多个引脚都可以相连。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第17张图片

这样就实现了仿真器的识别和仿真

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第18张图片

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第19张图片

 

小伙伴交流专用。

STM32F103飞线连接ST-LINK V2 STLINK仿真器 JTAG SWD_第20张图片

 

 

你可能感兴趣的:(STM32,keil,编程)