业务需要,前几天入手了一块STM32F4的板子,随板子一起送了一条下载口的转接线,长这样:
很明显,一侧接J-LINK,另一侧接板子。另一侧虽然是个5P连接器,但实际它只接了4条线。自从小马哥送了我几个ELINK32之后,我就很久不用J-LINK了,那玩意确实好用,速度快、稳定、不掉固件.可惜的是没有保护套,容易被磕来磕去。
咦,扯远了,于是我祭出了我很久不用的J-LINK,连接、上电,额,连不上?
现象是上面这样,能看到J-LINK,但是看不到J-LINK后面接的板子。问了下客服,客服先是看了下我接的线序,老夫多年点亮LED的技术岂是儿戏,自然没有问题。接着发来了它的调试接口的引脚图:
它的调试接口有5条线,但实际转接线只接了4条,是2~5,即:SWDIO、DCOM、SWCLK、ARM_RST。后面问我还有没有别的J-LINK,我四处看了看,从同事那里拿了一个,长这样:
接上试了一下,竟然能用,谢过客服,我开始琢磨,难道是我的仿真器坏了?
虽然买了很多年,但保护的很好,几年前还手动给它更新过固件,只是最近用几年不怎么用了,不应该~~~
再看了一眼客服发来的管脚图,看着那个空着的D3V3,我想到了什么。手动搜了一下J-LINK的管脚图,如下:
注意看这两个图,网上搜的话,大部分得到的J-LINK管脚分布都是这样。但是注意,这两个图是错的!
错在哪里?
第一个管脚,不是VCC,而是TVCC!
那么,TVCC是什么意思?Target borad VCC,也就是目标板的VCC。用来监测目标板的信号电平,是5V还是3.3V,从而输出相应的调试电平。
回忆了一下我的工作经历,早期调试ARM核的芯片的程序,用的都是J-LINK,但是它太笨重,一下子在板子上就占了一个2X10的位置。调试的时候,一般都是板子上有单独的电源,J-LINK只做为调试用,不向板子供电。
后来国内出现了大量的山寨ST-LINK,就这玩意,里面用的单片机是ST官网查不到的型号。价格低、体积小、接口少、速度也还可以,就是三天两头的GAME OVER,尤其是冬天。硬生生把一个持久性工具变成了一次性的消耗品。
最重要的是,它不再需要监测目标板电压,相反,还能向目标板供电。
如果你经历过这样的过渡阶段,那你应该就能猜到,这次J-LINK连不上目标板的问题就是:没有检测到目标板的电压!
于是我拿了条杜邦线,连接板子上的D3V3和J-LINK的TVCC,于是,一切都好了~
不过,还是有两个疑问:
- 新版的ARM仿真器真的不再监测目标板电压了吗?
- 标准的J-LINK转接线这么设计合适吗?
打完,手工~~~
不是我不明白,这世界变化快~~~