首先划重点,JLink连接不上TLE9879的大概几个原因:JLink V8不行,实测需要JLink V9或以上;然后JLink V9有坑;然后接线问题。以下详说。
TLE9879的手册明确说明,支持SWD调试,关于SWD,详细了解的话自行百度。我强调一点,不要SWD和JTAG傻傻分不清,正儿八经的SWD调试3根线就可以了:SWDIO+SWCLK+GND。搞不清楚就去查资料,去测试,JLink一般提供20Pin接口,SWD和JTAG兼容,不要搞不清楚就全接上,虽然能用,但,接线不累嘛。。
注意一下,TLE9879使用SWD时,P0.2需要接地:
当我们正常连接SWDIO以及SWCLK时(以下表述默认都是共地的),会发现连接不上,因为TLE9879比较特殊,还需要连接Reset信号才行,这一点在开发板的原理图上也可以看到。至于为啥,没有细究,推测可能因为TLE9879有很多状态机,有BL的原因吧,如果不进行Reset连接不上。
综上,TLE9879使用SWD调试只需要SWDIO+SWCLK+RESET+GND即可。
接下来说道说道JLink,不缺钱的大佬买官方版吧,咱没钱,因此才有如下的折腾。首先JLink V8无论怎么测试都不行,就不说了。某鱼买了一个全新的JLink V9.5,便宜,卖家还是值得赞一个的。据说自动识别目标板供电,也就是3.3V,5V等兼容。到手以后有点懵,相信很多人都会有点懵,就是1号脚到底是个什么玩意儿。下面这张图说的比较清楚:但关于VOUT和跳线帽的事,不要相信下图,不一定准确。
用过几次非官方版JLink的同学估计都知道,打开外壳,里面基本都会有一个跳线帽的,我手头这套方案的跳线帽并不是控制2号脚(VOUT)输出3.3V电压的。下面贴个图,这个方案基本是个开源的,但不确定,所以这里不提供下载,大家可以百度到的。确实有需要但又不会找的可以私信我,仅作学习研究用途。
20Pin接口的1号引脚,VTref,作用就是目标板提供给仿真器的一个电压信号,告诉仿真器我是3.3V系统,还是5V系统,或者其他电压系统,然后仿真器就会输出对应电平的调试接口信号,这个引脚必须接,但怎么接是有讲究的。拿到一个全新的仿真器,如果是用来调试STM32的话,直接接上去基本不会有问题,但如果是个5V系统就得当心了。建议先打开外壳,看看内部跳线是怎么接的,或者问一下卖家,当然卖家说的也不一定靠谱,很多是不懂技术的,好处是他说的话搞坏了他可以赔。
下面详细说一下这个Tref原理。20Pin连接器1号脚输入电压VREF经0Ω电阻输入运放,VREF1,用1通道做了个射随输出ACK-D,经10K电阻输入运放5号脚,6号脚有下拉,因此7号脚会输出VCC电压,经二极管D1,电阻限流到VEE,但,VEE又会反馈到6号脚,因此最终实现的效果就是VREF是什么电平,VEE就是多少电压,这也就是所谓的自适应系统电压。然后VEE给电平转换器2T45供电,因此所有调试信号实现了电平转换,能适应目标板电压。好了,坑来了,很多人省钱,运放用了LM358,但LM358不是轨到轨的,也就是说,当目标板是5V系统时,VREF1输入5V,射随ACK-D输出到不了5V,大概也就3.6V左右,然后二极管还有压降,所以这套系统VEE输出3V左右撑死了,仿真器压根就不支持5V系统。
如果你发现新买的JLink需要调试5V系统,断开了跳线帽,也就是将VREF1从3.3V断开,使用外部的目标板参考电压(5V),连接不上,不妨打开JLink Cmd,看一下VTref采样到的是多少V,如果输入是5V,采到的不是,那肯定是有问题的。
因此买仿真器的一定要注意这个坑,不然折腾死。如果真入坑了,手头有运放的可以换个轨到轨运放。作为硬件工程师的职业素养,当然是,查找问题,修复问题,没运放的,可以飞线将就着用:将运放的1,7,8号脚短接。注意这样就只能用5系统了。