在学习STM32开发的过程中,相比有许多新手都遇到过烧录完STM32的芯片之后,发现第二次烧录失败的经历,具体表现在Keil中显示No target connected: 本期我们就来介绍一下STM32的下载端口以及遇到这个问题的解决办法。 JTAG/SWD的引脚映射表如图所示,最简单的情况下只需要两根线:SWDIO和SWCLK即可进行下载。

 SWJ_CFG寄存器决定了在调试状态下各接口引脚的工作状态

  我们可以看到,在SWJ_CFG寄存器设置为100的时候,JTAG-DP和SW-DP均未被使能,调试端口都被释放,属于正常的GPIO口

  这是直接导致初学者出现芯片锁住的情况

在使用CubeMX的初始化过程中,默认是禁用SWJ接口,如果用户未对Debug进行修改,就会导致烧入程序后,SWJ接口配置为了普通引脚,从而导致无法二次烧录。我们可以在初始化的时候,将Debug配置语句修改为使能SWJ。 在CubeMX中,将Debug选项的No Debug修改为其他选项,常用Serial Wire用于STlink。

如果出现了这个问题,那么如何解决呢?博主提供三种方法:  在System memory中,可以正常使用SWJ接口,将错误修改后,再进行烧录。

 第二种方法是再按下RST的同时,快速尝试下载,这种方法多次尝试可能可以成功。注意到手册中描述,在系统复位后,SWJ-DP接口的五个引脚会被立刻分配给调试下载使用,但随后会可能被MCU引脚复用所占用。

  按下RST之后立刻下载,其原理就是抓住空档期进行系统下载。

 关于还有利用串口进行擦写芯片的方式,它的本质和方法一相同:  在STM32进入BootLoader中时,BootLoader拥有串口下载的功能。

  串口下载工具(如FlyMCU)可以利用串口芯片,例如配置“DTR低电平复位,RTS高电平进BootLoader”,即通常是将CH340芯片的DTR接RST引脚,RTS接Boot引脚,从而实现一键下载,但本质是方法一。


嘉立创PCB

还没有评论,抢个沙发!