这几天在调一个蛮复杂的板子。现在我还是个小菜鸟,这是我碰到的最复杂的一个板子啦。从前我做的东西都很山寨,常常都是在通用板或是高频板上面焊东东,只是些简单的MCU电路或是运放、AD/DA之类的东东。频率也就做到十兆左右,再大就跑不上去了,幅度也在mV级。常常我们自已吹一下,说什么做高频小信号也就这个水平了。偶尔画个小板子,但是充其量只是两面的,便宜嘛。有一次画了个蛮大的,不过也是两面的,呵呵。
现在这个板子有八层,听着就挺吓人的。上面还有俩BGA。当时第一次拿到这个板子的时候还企图自己焊,可一看到BGA就傻眼儿了。后来花了一百多块钱让别人机器焊了。这几天调试下来,遇到很多问题,有些还是一些非主流的山寨问题,所以写出来,和大家分享一下。
问题一:电源芯片输出1.5V和1.8V莫名短路
当把所有芯片都焊上去的时候,我寻思着我现在要把关键的引脚都测一下,否则把那些小零碎的东东再焊上去再检查就不知道是哪里的问题了。找到我花十块钱买的那个山寨万用表,到处测了测,发现1.5V和1.8V输出有短路。我就郁闷了,这块板子上就是这块电源芯片是我焊的,怎么就偏偏出问题了呢?好丢人呀。
不过幸亏现在检查出来了,要不等一下上了电,电源芯片一冒烟,我就挂了。我仔细地找,看了又看。这种问题是真的难检查,如果是两根信号短在一块儿了,这个好查,信号线通常都很短嘛,可短一块儿的偏偏是两个电源线,这电源线可是满板到处跑的,这个Net可大了去了。该测的都测了,就在我准备换片子的时候,我发现了其中的玄机:
这是FPGA引脚的一部分PCB图,由于引脚间距很近,这两个焊盘音的距离就很小了,而当时焊的时候是用的拖焊,就是挂很多锡在引脚上拖,所以不小心把这两个焊盘给弄一块儿了。恰恰它们就是这俩电源。
发现了,就好办了,手提ATTEN907,一挑,问题解决。
其实这也证明我人品不是特别差,只遇到这个小问题,那人品差的遇到的可就是PCB板制作短路啦。我一同学曾经遇到过这个问题,好不容易把一板子焊完,结果一查,电源和地短路,这下郁闷啦,把所有的东东都拆了,还划断了线,最后发现是电路板的覆铜的一个电源的过孔印一块儿了。呵呵。
问题二:27M晶振大变频率成9M
这个问题也够人郁闷的。
事情是这样的,板子上有一个SAA7105进行视频的输出,我调试的时候用的是复合视频的输出方式,BT656直接输入。但是程序下进去后发现有问题,电视机上的图像有重影,而且还闪啊闪的。不过还能看得见是那么一个影儿。
我用SignalTap看656的数据流,没问题,然后反复地配置那个I2C。不过都不行,问题是死的。
幸亏我从前在基地跌爬滚打了很多年,虽说做的专业人士看来都比较山寨,虽说我们基地只能成立了山寨PCB研发中心,但是各关于电路的各种调试知识还是有的。
从大一的时候看别人接反电容爆了礼花,再到大二的时候拿示波器测声卡的声音烧了主板的声卡,再到大三的时候用一根排线传几兆的信号,再到现在盯着这个诡异的问题。不过我还是有我的办法呢。还有同学让我写一个关于硬件调试方法的小文章呢。不过我还没写。
调东东,首先要做的是什么呢?当然是电源,电源不稳定的话其它的稳定性就会大受干扰。就像让你吃饭一顿饥一顿饱,肯定会把你送进医院的消化内科的。我用我的山寨万用表量了一下,3.3V的是3.2几伏,1.8V的是1.74V。嗯,还好,在芯片手册的规定范围内。由于万用表的AD都比较慢,而且可能还做了均值滤波,所以不能看电源稳一稳。
调东东,第二看的是什么呢?当然是时钟。对于时序电路来说,时钟的重要程序可当于你的心跳。心不跳了,还做什么事情呀。从这里还能看出俺们中医和这个电路的关系呢。想想当年中医不是望闻问切嘛,我们无线电爱好者调电路不也是首先看看板子有没有明显不对的地方,然后上电,闻闻有没有烧焦的味道,再试试功能,问问哪里不正常,然后再用各种测试工具测量嘛。这就是电路调试中的望闻问切!中医的这个号脉是号人的脉象,在手腕上放置两三个测试点,看它们的特性以及关系,而我们做电路的呢?就用示波器或逻辑分析仪一点接地,一点接测试点,这不也是两个测试点嘛。呵呵。
搬来示波器,一测,5150的CLK正常,7105的就不行了,一会有一会没有的。这让我想起了调试的时候有时有信号有时没有,动动接线就有了。我还以为是线的问题,后来一问师兄,说不是。看来的确是时钟不对了,人一摸,那晶振可能激动一下,好一下,不过一会儿就没有了。而且好的时候也只好三分之一,本来好好一27M的晶振,只能振出9M,还挺准。挺好玩的。换下来,重新焊一个上去,一切OK。看来现在的次品晶振到处都是啊,明明是新的,可也有坏的。不知道批量起来用这种晶振要害死多少产品。
不过话又说回来,这也证明我人品还不算差,遇到那差的,贴片电容都坏。我有一同学,焊一USB转232的板子,一上电,发现晶振不起振。然后就换了个晶振,还不振,又一想,可能是片子坏了,就换了个片子,还不振。心想真是背了去了啊,这么简单的板子都出问题,以后有何脸面去见各位江东的同学们,一不小心,碰掉一电容,换了个新的,嘿,好了,看来电容也有坏的呀。
问题三:7105的VGA输出
我想用7105作VGA输出,为什么要用VGA呢?因为电脑的显示器都是VGA的。我把程序改了改,测了行同步和场同步都有信号。这下心花怒放,高兴得不得了,一接显示器,发现什么也没有,显示没有信号。
我又仔细地看了看,7105的行场同步不是直接按到VGA头上的,而是经过了一个1G125的缓冲器。这个缓冲器有个全能,低电平使能,为什么是低电平使能?当然是响应我们胡主席的号召,节能减排嘛。我挨个测了所有的引脚,不过也不多,一共五个,工作量也不大。发现有电源有地,有使能有信号输入就是没信号输出。后来拆来下一看,发现好像这就不是1G125,买错啦。呵呵。
然后我就在QFP的7105上飞了两根线到VGA头上。满心欢喜地插上显示器,但很不幸,显示输入频率超出范围。后来测了一下,场同步只有50Hz,怪不得超出范围了呢,显示器最小的是60Hz的。然后我就狂配7105的寄存器,配了一天也没配成60Hz。后来吃了顿饭回来,一下子顿悟了。我使用的是BT656里面的同步信号,而656信号是采的PAL,所以就是50Hz喽。我把5150的制式换成N制,然后一测就解决了。
经过这几天的使用,发现这个SAA7105真是不好用啊,而且NXP的芯片资料太难得读了,我得开两个,一个看寄存器的位置,一个看寄存器的说明。以后要我设计,我一定不用这个鸟片子。
我在网上看了看,关于SAA7105的使用说明很少,有的也只是些芯片资料的翻译,而且这种文章竟然还发表了,真是没天理啊。如果我把这个7105玩熟了,一定写个教程,和大家分享一下。
问题四:FPGA的JTAG下载的问题
今天用Quartus的JTAG下载到1C12时,总是出现一个错误,说是:Error: Can't configure device. Expected JTAG ID code 0x020940DD for device 1, but found JTAG ID code 0xFFFFFFFF.吓了我一跳,以为FPGA挂了,后来上网一查,说是什么你用的FPGA和你软件里设置的FPGA的型号是不一样的。这当然是不可能的。呵呵。我设的我还能不知道,当然是一样的。后来又看说什么的都有。我用屁股想想这些在我这里都是不可能的。
不过网上有一位同志说得好,让看FTAG的TCK,也就是时钟有没有问题。我一想也是啊,这最重要的还不是时钟嘛,而且我看到这个错误还是会变的,0xFFFFFFFF.这一行是一次一个样,看来肯定是数据传错了。我用示波器测TCK,发现示波器按头一放到上面去,再点下载竟然可以了。示波器放上去不就是相当于接了个对地的电容吗?我就焊了个电容上去。 这下更热闹了,错误也变了,说发现了好几个FPGA器件。呵呵,可以是这33p的电容振的。看来这个办法不行。我仔细观察了TCK的下拉电阻,发现是1K的,再看了看电路图上的,也是1K的,然后又看了另一个FPGA的TCK,发现它用的是10K的。嗯,看来就是这个问题了,下拉得太猛了有点。换了个10K的,问题解决。
这就是这几天遇到的比较大的问题。挺多的,看来做硬件的不容易啊。不过既然咱是从基地出来的,只能说BUG啊,欢迎骚扰!