关于Fatal error: Could not find device 解决的过程

之前做的板子用的4线JTAG,一直是可以烧写程序的。最近要改板子,由于4线JTAG太占面积,所以打算换成2线JTAG。但是在调试的过程中却出现了 Could not find device (or device not supported) Session aborted!的问题。

下面讲一下解决的过程。 

一、4线JTAG和2线JTAG介绍

首先先介绍一下4线JTAG和2线JTAG。这里以我用的MSP430F6638为例。

5系列和6系列的应该都差不多。

4线JTAG需要用到430上6个脚,分别为TDO(1),TDI(3),TMS(5),TCK(7),TEST(8)以及RST(11)脚,

再加上一个共地的角GND(9),一个VDD脚(2或4),VDD这个脚根据你单片机是非JTAG供电还是JTAG供电,分别选择接在2号脚或者4号脚。

根据MSP430F5529demo板的板载仿真器的电路结构猜测,应该是JTAG仿真器内部有一个电平转换芯片,当单片机采用非JTAG供电时,可能电压与JTAG仿真器输出电压不一致,这时需要一个电平转换芯片将信号电平转换一下,使得两者一致?

2线JTAG只需要用到单片机上的RST脚和TEST脚,这两个其实是复用引脚,在2线JTAG模式下,应该称为SBWTDIO和SBWTCK更准确。

除了那两根信号线之外,再加一个共地线应该就可以烧写程序了。

二、问题的描述及解决

问题的现象描述:

当采用4线JTAG烧写程序时,一切正常;但是使用2线JTAG烧写程序时,却报出了 Could not find device (or device not supported) Session aborted!的错误,无法烧写程序。

解决方案:

在查阅之后,发现接在单片机RST引脚的接地电容的大小很有讲究。

接地电容如下图C28所示。

按照TI的demo板上来看,这个电容的值为DNP,应该是do not place。但是TI的demo板上,这里又焊接了一个电容,这个到底应该多大呢?一开始没有仔细研究,我用的是0.1uF,这个是最常用的一个电容值了。

但是后来查阅资料后发现,这个电容值其实很有讲究的,在4线JTAG模式下,推荐为10nF,在2线JTAG模式下,最大为2.2nF。我这里用的是0.1uF,显然是远超了推荐值。

后来把这个电容换成2nF之后,下载正常~

这里分析一下,可能是在2线JTAG模式下,SBWTDIO既作为数据的输入又作为数据输出,对时序的要求更高,所以这里电容太大之后,会产生影响。同时,贴上一张关于JTAG部分参数的图,从图上似乎可以看到,2线JTAG是速度更高一些,可能也正因为如此,其对时序的要求也更高吧~这个分析可能不一定正确,欢迎交流、指正~

永不止步步 发表于11-29 11:27 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:305917个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号