先分析一波
现象
stlink直接下载失败,要么no target connected,要么internal command error,要么stlink connect error。
设备管理器里,stlink是黑色,运行正常。说明电脑的stlink驱动正常。
按住复位键,下载,1秒松开,下载成功,说明stlink本身没问题。问题在stm32。
IO口接LED,亮度非常微弱,闪烁频率不正常。
一直按住复位键,keil就能检测并连接到stlink。
猜测
有可能是stm32进入了睡眠模式
也可能是占用了PC13导致的,听说PC13是啥电源端口,我没管。
可能是板子中的芯片写保护了,可能是因为电压不稳的问题,回想一下,这次故障就是从连接一个电路图开始的。
排查
关于在keil里的那些各种设置更改,比如改为under reset啊,依旧没用。
还有什么SW口被占用,c8t6调试口就是PA13和14。额,没被占用。
重启,重新拔插之类的不用说了,没用。
用Utility,更新stlink固件,不过要一直按住复位键,更新后依旧无用。
最后,想到了可能是读保护,因为连接那个电路的时候,wifi模块的RST引脚接到PB8又接到了VCC,由于我用的面包板,这里我就用一个1k电阻直接接到了面板板的正极,面包板本身的电就来自stm32的输出脚,这一下又直接经过电阻回到了PB8,也许是电流过大?我猜芯片就自动开启了读保护。我的就是这样。
我的解决办法
总之,成功解决了,先接好usb转串口(额,搞了一天搞混了,usb转串口好像不用,哎呀,不管了),打开Utility,一直按住复位键,快速按那个插头图标,连接到target后,马上点击橡皮擦,擦除stm32所有存储。最后拔掉stlink重新插,问题解决。
图
再次失败
就在我以为成功之时,准备睡觉,又发现擦除后只能下载一次,后面又回到了解放前,服了......
又尝试了重映射配置,依旧没用。
boot解释
将boot配置为1,从系统存储器(ROM)启动,STM32在出厂时,由ST厂家在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,无法修改,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。
BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。
BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。
第一种启动方式是最常用的用户FLASH启动,正常工作就在这种模式下,STM32的FLASH可以擦出10万次,所以不用担心芯片哪天会被擦爆!
第二种启动方式是系统存储器启动方式,即我们常说的串口下载方式(ISP),不建议使用这种,速度比较慢。STM32 中自带的BootLoader就是在这种启动方式中,如果出现程序硬件错误的话可以切换BOOT0/1到该模式下重新烧写Flash即可恢复正常。
第三种启动方式是STM32内嵌的SRAM启动。该模式用于调试。
stlink下载
当boot0设为1时,keil可以检测到SWDIO,用stlink下载好后,将跳线帽接回原状,即boot0和boot1都为0,然后按复位,程序运行。但是keil又无法连接到SWDIO。回到起点了。。。。。。也可以用线将boot0中间的针脚引导3.3正极与负极,与跳线帽一样现象。
串口下载
再尝试用flymcu串口下载,usb转串口的RX接到PA9,TX接到PA10,boot0置1,flymcu选择 DTR 的低电平复位,RTS 高电平进 BootLoader,下载成功,但想开始运行得boot0置0,于是又连接不到SWDIO。失败。
下午四点,即使是boot0置1也无法识别SWDIO,无法下载。观察到reset复位键松动。
补发的stm32到了,依旧无法连接到swdio,万用表测得原来的stm32未复位时复位键电位为0.4V,新到的stm32未按下时复位键电位为2V,不过,两个stm32按下复位键都会变为低电平,一直不松就一直为低电平2V。
发现stlink灯无法亮起。也许是stlink坏了,检测stlink晶振,stlink插入电脑测得晶振引脚电压0.06v,断电测电阻。为无穷大。
最后插上单独供电。诶,一下就好了,stlink灯常亮,连接SWDIO成功,下载程序成功,过了一会儿,stlink蓝灯开始闪烁,再次连接不上SWDIO,额......,我猜应该是电压问题,等我研究一下,现在基本断定,问题出在stlink供电上,并且之前万用变测得stm32的VCC和GND之间只有2v,单独供电后就有3.28v。
总的来说,虽然问题还没解决,但过程中也学到了很多知识。我将进一步尝试解决。
将供电线和下载线的usb口对换了一下,再次正常,stlink也不闪烁。
下载进程序后,拔掉stlink,程序依然能运行。
突然发现.....,从开始外接电源那里,BOOT0是置1的,我没注意到,置0后,又连接不到SWDIO了,cao......,至少置1能下载了,哎。文章来源:https://www.toymoban.com/news/detail-655022.html
吃完饭回来,重新插上。欸。又可以了,stlink蓝灯常亮,keil里检测到SWDIO。而且boot都为0,yes,解决。文章来源地址https://www.toymoban.com/news/detail-655022.html
到了这里,关于STlink无法下载?解决过程记录。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!