STM32开发用调试器ST-Link V2.1的制作 保姆级教程

【背景】

各位,我们做stm32开发时,必须要用到调试器,在淘宝上可以买到10几块钱的调试器,也可以买到六七十块钱的调试器。六七十块钱的调试器,当然质量会好一些,可是用的时间长了,也会坏。与其再花六七十块钱再买一个,不如自己来做一个怎么样呢。自己做的话,如果做多一点,成本会更低。基于这个想法,我就开始寻找自己制作stm32调试器的方案。

【方案】

其实,ST公司,在各个nucleo评价板上,都自带了一个st-link调试器,这个评价板的电路是提供电路图的,所以,ST公司,是自己就将这个st-link的电路就公开了。比如,下面电路摘自19240-nucleo-g0b1re评价板的电路图。

这电路图的图框里,清楚明白的写着ST_LINK_V2-1。没错,这就是st-linkV2.1的电路图。这电路图虽然写得清楚明白,但是,看起来,东一下西一下,很让人难以理解。

于是,我在网上一找,可以找到立创的硬件开源平台的有人复刻的电路图和layout以及相关固件。如下:

自制ST-LINK V2-1(开源版本) - 立创开源硬件平台

至此,可以说,没有必要往下做了,直接拿这个开源的去打板复刻就行了。可惜,我偏偏有点犟,我想自己来画电路图和版图,自己来做一个看看。

所以,下面是我自己做的电路图和版图。

以及3D模型

这电路图和layout后来的打板证明,没有啥问题,能够正常工作,但是,跟立创开源平台的版本和ST公开的电路图的电路上的有影响的区别就是串口和SWD烧写口的几个信号,没有串联22Ω电阻。我设计电路的时候,觉得这几个22Ω的电阻没啥用,加不加都可以,本着越简单越好的原则,就把这几个22Ω的电阻给省略掉了。事实证明,还是留着比较好。后面在结果检验的时候会说到。

【实施和打板】

电路图和版图,以及画完后的3D模型都给到上面了。其实也没啥,比较简单。我布的尺寸稍微大一些,是5.6cmX3.5cm, 我还是觉得大一点的st-link调试器好用,小的调试器固然好,但是,我觉得用起来的时候不好用。接口也做成了简牛的,比较好插线。这里为了防止电流倒灌损坏电脑的USB口,在USB 5V电源处做了一个二极管防电流倒灌,导致5V电源其实没有5V的,有个二极管的压降,大概只有4.3V左右,所以,后边简牛上输出的5V电源是没有5V的,只有4.3V左右。3.3V的电源不受影响,基本是比较好的3.3V。下边H1排针上的SWD口是给芯片stm32f103cbt6烧写程序用的。右边的简牛上的SWD口和串口是给开发板用的。

打板的话,嘉立创可以免费打5块板,如果焊接水平高的话,可以自己买零件焊,也可以找嘉立创贴片。我焊接水平一般,尤其tpyeC的USB口不好焊,所以,我是找嘉立创贴的片,5片,包括元器件,花了676块钱。

【固件烧录】

打板完成之后,就是要烧录固件了。这个固件在立创开源平台的博文里有链接,直接下载就行。我烧写的是STLinkV2.J28.M18.bin. 用一个好的stlink调试器,接到H1排针上的SWD口,然后,用STM32 ST-LINK Utility工具,将STLinkV2.J28.M18.bin的固件烧进去就行了。这很简单,反正我一烧就烧进去了。扫进去之后,就在电脑上看到,多了一个虚拟串口和ST-Link Debug设备。如下图。

并没有一个更多的STM32 ST-Link的设备。

立创平台的开源硬件误导了大家,那个上面的博文说会出现一个虚拟串口,一个ST-Link Debug和一个STM32 ST-Link设备,这是不对的。

我开始看到没有STM32 ST-Link设备,还到处找,到处问,以为自己的板子做错了,或者是固件烧写错了。其实,并没有错,就是只有虚拟串口和ST-Link Debug。没有STM32 ST-Link。

【固件升级】

固件烧录后,就找到最新的固件升级工具,就行固件升级。这也很简单,直接做就行。我升级到最新的固件是这样的。

这里有个Mass storage, 就是电脑上会多一个U盘,我觉得没有啥用。还是在升级固件的时候,把这个Mass storage去掉吧。

现在V2.J48.M35已经是当前最新的版本了。

【结果检验】

固件升级到最新的版本后,就要来把这个自制的st-link调试板接到开发板上来试试看。我先用STM32 ST-LINK Utility来测试,接好线后,我用的是3根30cm的杜邦线,就点击连接,发现连接不上。我又用STM32CubeProgrammer,还是连接不上STM32开发板。然后,我用vscode+gcc+gdb(这是我开发的环境), 用这个也连接不上STM32开发板。我开始怀疑,是否我的电路设计或者layout或者固件烧写,是否有问题了。因为,电脑上既没有出现stm32 st-link,现在又连不上stm32开发板,试了很多次,都没有办法,真是不知道咋办。后来,我加了这个开源博客的QQ群,在QQ群里问,也没有问出个所以然来。我相信他们有人懂,但是没人说。这也是我写这篇保姆级教程的原因,就是把我踩过的坑都写出来,让大家不必到处找,到处问了。既然没有人说,我只能自己试了,我找了3根10cm的杜邦线,接到开发板上,一点连接,居然就连接上了stm32开发板。很显然,是SWD到开发板的线太长了,导致了信号太弱,所以,连不上开发板。换短点的线就可以了。问题的解决就是这么简单。

那么,如果想用30cm这么长的线怎么办呢?就是我前面说的,在串口和SWD线的地方,串联22Ω的电阻,这样,可以改善信号的变弱。有些人试过,用22Ω的不行,用0Ω的效果比较好。反正,如果固件烧写好了,一切正常,但是连不上开发板的话,可以试试用较短的连接线,或者在板子设计时,就串联22Ω或者0Ω的电阻,改善信号质量。

连上开发板后,就可以既做串口,又做SWD调试口使用了,一块板子,解决了调试和打印log两个问题。而且是自己做的板子,用起来真不错。

【好了,大功告成,亲个嘴儿】。

相关推荐
2601_958352904 小时前
一款模块通吃15类语音产品?AN-93如何实现录音笔、门禁、IPC的快速适配
前端·人工智能·嵌入式硬件·回声消除·降噪处理
果壳science4 小时前
张祥前最新研究成果登上SCI期刊!
笔记·嵌入式硬件·算法·硬件工程·几何学
路上有只喵4 小时前
认识元器件 ·贴片电阻· 电阻选型
嵌入式硬件·硬件架构
zhenming_123q5 小时前
如何接入 PLC、上位机或物联网平台?
单片机·嵌入式硬件·物联网
TechVoyager_82465 小时前
IT66612 分路器三组DDC与两路检测解析
单片机·嵌入式硬件·分路器·ddc总线·热插拔检测
NamoAmitabha1285 小时前
Zynq 芯片的“上帝视角”--deepseek
嵌入式硬件·zynq--ps
艾芯微科技5 小时前
DMG2305UX-13|Diodes 20V/5A P 沟道 SOT-23 MOS 管参数、电路应用、替代与丝印避坑
网络·单片机·嵌入式硬件·集成测试·51单片机
zjxtxdy6 小时前
STM32HAL库开发-ADC
stm32·单片机·嵌入式硬件
国科安芯6 小时前
3 Ω 还是 5.5 Ω:ASL3157S 的供电电压、导通电阻与双路一致性怎么算
网络·嵌入式硬件·安全·模拟开关·抗辐射