记一次ST-Link维修及固件刷写过程

前言

  前段时间要给一批产品烧写程序,开始是用的山寨 J-Link v8,后来因为意外烧坏了,就换成用 ST-Link ,结果又因为一次意外把 ST-Link 给烧坏了。-_-|||

  后来忙完这段时间之后,想着把之前的烧坏的 J-Link 和 ST-Link 都给修一下。J-Link 好办,就是USB口的保护二极管芯片击穿了,把它拆掉就能正常使用了,不过为了安全起见后面买了 SN65220 芯片来换上就修好了。所以我本来以为 ST-Link 无非也是电源芯片或者保护电路烧坏而已,应该很好解决,结果没想到折腾了许久。

查找问题点

  上图就是坏掉的 ST-Link,烧坏之后上电发现灯完全不亮了,3.3V电压也没有,所以判断应该是电源芯片烧坏了。拆开热缩管,把买好的 LD3985M33R 芯片更换上去。结果插上电脑还是没有反应,而且USB口和电源芯片发烫,感觉不大妙。拆下来用万用表一测,发现 3.3V 和 GND 直接短路了。

  因为之前摸的时候是感觉USB口发烫最厉害,所以一开始我竟然以为是USB口的问题,真不知道当初是大脑短路了还是什么的,于是除了拆下电源芯片,还硬生生把USB口也给拆下来了。然后再测,发现还是短路。对照了一下原理图,发现跨在 3.3V 和 GND 之间的也就几个电容而已,没理由烧穿的,测到最后才想到把主控芯片取下来。

  拆下主控之后再测板子上,不短路了,单独测拆下来的芯片的引脚,原来是把芯片内部给击穿了。这下最终确认问题点是主控芯片烧坏了。

修复硬件

  知道问题点就好办了,这一块 ST-Link 上面的主控芯片是 STM32F103CBT6,在官网上面看了一下,发现 ST-Link 的固件不大,用 C8T6 就完全足够了,不需要用到 CBT6,于是找来以前拆机剩下的 C8T6 芯片吹上去。再把之前拆下来的电源芯片和USB口也焊上,基本就硬件部分就算弄好了。值得一提的一点是,我这块 ST-Link 预留的主控芯片下载口上面的间距是 2.0mm,不是常规排针的 2.54mm 间距,所以只好焊了几个电阻腿来方便引线。

  吹上主控之后用焊台补锡的过程中还不小心弄掉了一个焊盘(捂脸),还好那只是一个空焊盘不影响功能。

固件刷写测试

  焊好之后就可以开始烧写 ST-Link 的固件了,因为这个时候主控里面是没有程序或者是别的产品的程序,所以是不能直接插到电脑上用 ST-Link Upgreade 来升级固件的,而要先用另外的 ST-Link 或者 J-Link 给它刷入 ST-Link 的固件。

  我这里是用另外一块 ST-Link 来刷,板子上的口虽然没有丝印,不过测量一下发现从左到右的顺序分别是 GND、SWCLK、SWDIO、3.3V,跟它自身输出的顺序是一样的。连接好之后,就用好的 ST-Link 按照正常给产品芯片下程序那样把固件的 bin 文件刷入换上的主控就行了。

  我这里直接用官方的 ST-LINK Utility 工具来刷写,比较快捷。刷好之后将这一块 ST-Link 单独插到电脑上,发现电脑可以识别出来了。

  然后再用 ST-Link Upgreade 来把固件升级成官网最新的固件。

  升级完成之后应该就是正常了。不过还是得测试一下功能,刚好手头有一块 STM8 的最小系统板子,拿这块修好的 ST-Link 试试给它下程序和调试看看。

  最终调试也都没有什么问题,就说明成功把这块 ST-Link 修复了。

后记

  这次虽然成功把 ST-Link 修复了,但是中间还是走了一些不必要的弯路,比如判断错问题点瞎拆元件之类的。还是自己思考问题不够全面,不够细心造成的,后续还是应该加强一下这方面才行。

文章目录
  1. 1. 前言
  2. 2. 查找问题点
  3. 3. 修复硬件
  4. 4. 固件刷写测试
  5. 5. 后记
|