• stlink故障修复


    前言

    一直用的是国产版stlink,但是最近手头手头上的两个stlink在下载的时候出故障了,无法识别。上淘宝一搜发现涨价了,记得以前是20左右,现在都要40快一个。于是想着能不能进行修复。百度搜了一下,发现确实有大神开发出了固件。可以重新把stlink里面的固件重新刷一下。

    在这里插入图片描述

    准备工作

    stlink里面实际上是一块stm32单片机。手头上的用stlink,如上图的里面是一块stmf101c8t6,但网上找到的固件都是stm32f103c8tc6的,有的博客说这两个是通用的,但是经过我的测试发现,103的stlink固件在101上是用不了的,能下载进去,但是插上电脑还是不显示stlink设备。所以,最好是将上面的101换成103。

    刷固件的原理是,找一个能正常使用的stlink,将坏的stlink连接到正常使用的stlik上,然后再用stm32 stlink utility软件进行烧录。

    所以正式开始之前,前期要准备如下:
    1、stlinkv2固件:ST-Link固件V2.J16.S4.hex
    2、笔记本电脑安装stm32 stlink utility软件
    3、一个功能完好的stlink
    4、一块stm32f103c8t6 64pin芯片

    操作步骤

    1、拆开stlink用刀将stlink头部的胶垫撬开usb这头的胶垫

    在这里插入图片描述
    2、将金属外壳抽出来
    在这里插入图片描述
    3、用万用表找出芯片的下载接口,stlink正方面如下图
    原版用的是stm32f101c8t6,下图是更换了stm32f103c8t6
    在这里插入图片描述
    在这里插入图片描述
    4、stlink单片机的swd下载接口。经过摸索,成功找出了clk和dio引脚,如下:

    在这里插入图片描述
    上图中VCC为5V,用导线将上图的接口与功能正常的stlink连接。

    5、固件烧录
    打开stlink utility软件,按照下图顺序操作,①-连接上stm32f103;②-打开ST-Link固件V2.J16.S4.hex固件;③-烧录固件。等几十秒钟,烧录完成。
    在这里插入图片描述
    最后插上修复好的stlink,电脑能正常识别。

    最后打开keil mdk ,会提示升级stlink固件,按照界面要求进行升级。由于当时忘记截图了,所以这里没有贴上图片。

    至此,stlink修复完成,最后将外壳装回去。又可以high了。

    问题及注意事项

    最后写出来其实也没多难,但是整个修复过程也搞了半天。现对当时出现的一些问题进行总结归纳。

    stm32写保护

    一开始测试stlink原来的stm32f101电压等都正常,本身应该没有坏掉。用st-link utility连接的时候,出现如下问题。
    在这里插入图片描述
    这个问题原因是,单片机的里固件开启了写保护。所以要想刷固件之前要去除写保护,去除写保护可以用st-link utility或者jlink的jflash操作。这里用st-link utility。
    连上单片机后,按照如下操作
    在这里插入图片描述
    在打开的页面进行如下操作
    在这里插入图片描述
    之后便可正常烧固件。
    注意:烧写ST-Link固件V2.J16.S4.hex固件后,又会进入写保护,如果要重新少固件,需要先去除写保护。

    stm32f101c8t6不适用该固件

    一开始本着尽量用stlink原有的stmf101的目的,将ST-Link固件V2.J16.S4.hex固件烧写进去后,插上电脑发现还是不能被识别为stlink设备,经过多次尝试,仍然如此。基本确定,该固件不适配stm32f101c8t6.其他博客说是通用的说法是错误的。最后将101芯片用热风枪吹下来换成了stm32f103c8t6.
    如果有大神找到了适配stm32f101c8t6的固件,麻烦发我下,我再进行测试。

    如果手上没有好的stlink怎么办

    如果手上没有好的stlink,可以考虑利用手上有的仿真器,比如ulink2。由于ulink2只能依赖keil mdk软件进行操作,所以其无法给处于写保护状态下的stm32烧写固件。

    对于修复stlink来说,只能换一片新的stm32f103芯片后,在用ulink2的swd接口进行烧录固件,连接方式如下图所示:ulink20pin 接口的7脚为swdio,9脚为swclk。

    在这里插入图片描述
    采用ulink只能使用mdk来烧录固件。采用mdk来烧录单独的hex文件步骤如下:

    1、新建工程
    porject->new uverion project新建工程,然后选择芯片。stm32f103c8
    在这里插入图片描述
    新建完成的项目如下图,一定不要添加任何启动文件,保持空工程即可。
    在这里插入图片描述

    2、配置hex文件名称
    按照下图配置好hex固件。最关键的一步是步骤3,一定要与我们要烧写的固件完全一致。
    在这里插入图片描述

    3、配置ulink
    这里就比较简单,按下图操作。
    在这里插入图片描述

    4、烧写固件
    点击烧录固件按钮,进行固件烧录。烧录完成后,将修复好的stlink插入电脑,能正常识别到。通过这种方式也可以修复好stlink
    在这里插入图片描述

    固件下载链接

    里面包含ST-Link固件V2.J16.S4.hex,以及stlink的原理图和pcb源文件,有需要的可以自己去打样制作pcb。如果没有积分可以私信我留下邮箱。
    https://download.csdn.net/download/sinat_36568888/85813603

  • 相关阅读:
    微擎模块 有间解忧杂货店小程序2.14 修复用户头像昵称不显示的BUG
    跟我学Python图像处理丨何为图像的灰度非线性变换
    浅谈Oracle数据库调优(2)
    SSM整合:mybatis层-P17
    STM32Cube高效开发教程<基础篇>(七)----基础定时器
    今天的码农女孩开始学习react的知识
    E. Expenditure Reduction(用链式前向星存储下一个字符a在s中的位置)
    Windows:Docker安装
    深度学习Tensorflow生产环境部署
    低代码平台前端的设计与实现(一)渲染模块的基本实现
  • 原文地址:https://blog.csdn.net/sinat_36568888/article/details/125505396