0.引言
此次的项目为一个自制的JlinkOB,相信大部分玩过stm32的同学应该都用过,淘宝上也有很多成熟的成品了,而且除了jlinkob还有stlink,daplink之类的烧录器,价格也都非常的亲民,那我为什么还有自己做一个呢?主要原因有以下两点,第一点是由于我做的项目经常需要使用到jscope,到目前为止我也没找到比它更方便的观察变量数据曲线变化的软件了,而这个软件只能配合jlink使用,第二点就是都已经2021年了,市面上出售的jlinkob都是microusb接口的,我个人也是非常推崇typec接口,而且现在安卓手机的充电口基本上都是typec接口,很容易就能找到,基于以上两点,我就自制了typec接口的jlinkob,同时也集成了CDC(虚拟串口)功能。同时这也是我学了画PCB之后的第一个项目,所以有一些小问题是在所难免的,未来也会将改进版开源出来。
开源地址:
https://github.com/cheng-inkor/JlinkOB
1.硬件部分
V1.0
这是第一版的原理图,非常的简单,LDO采用的是AMS-1117,画原理图的时候没考虑太多,正好实验室有这种LDO就用了,在第二版的时候就把LDO换成了662K,也就是很多最小系统板上的LDO,体积要比AMS-1117小很多。需要注意的是USBD+接的上拉电阻一般是1.5K,当然选用2K也是没有问题的(本人目前没发现任何问题,如有懂的大佬可以评论区告诉我),还有就是CC1和CC2接下拉电阻是为了满足C to C数据线的握手协议,否则使用C to C的数据线时电脑无法向JlinkOB输出5V电压,当然如果使用的是A to C的数据线的话接不接下拉电阻都是没有影响的。由于第一次开板,为防止需要通过串口下载固件,我将BOOT0引了出来,大家在实际打板的时候可以进行修改。
V2.0
在第一版开出来并测试没问题之后我就开始准备第二版了,主要的改进部分就是将LDO从AMS-1117换成了662K,同时去掉了一个LED,体积比V1.0小了一圈,达到了我的要求,于此同时为了使绿灯和蓝灯在工作时的亮度达到一致,我将R6由原来的1K改为了620R,但是我烧完固件之后电脑无法识别它,换成V1.0的电脑又能正常识别到,我对比了两版的原理图,也没找到问题出在哪,如果有大佬知道问题出在哪的话还请在评论区指出。(问题已解决,是芯片烧了,同时我也试了HK32和APM32,发现电脑也是无法识别,GD32据说可以,但我没试过,感兴趣的朋友可以试试)
对比一下V1.0和V2.0的大小
从上到下依次为TB购买的成品,V1.0,V2.0
这款Jlink的具体演示效果可以看我上传到b站的视频
2.固件烧录
固件我也上传到了github上,下面演示一下如何进行烧录,首先你的电脑中要有jlink的驱动,如果没有的话百度搜索安装就行了,没啥可讲的。安装好之后搜索jflash
打开之后选择创建新项目,将目标板选为stm32f103c8t6即可(如果使用的芯片是国产的话大概率是无法找到直接对应的芯片,选择其内核类型即可,如hk32f103c8t6选cortex-m3即可)
然后选择左上角file-open data file,选择固件,起始地址选为0x8000000即可,之后点击上方的Target-Connect,下方提示Connected successfully说明连接成功,再点击Target-Production Programming就完成了烧录,将JlinkOB重新插拔一次就能正常使用了。