一只鱼 さんのプロフィールEE小站フォトブログリストその他 ツール ヘルプ

ブログ


6月17日

BGA封装芯片手工焊接攻略

我毕设的很多板上都有BGA芯片,刚开始我觉得这东西实在是没有办法焊接。幸运的是我们研究所的另外一个研究室花了30多万买了个BGA焊接设备,我去蹭了2次,可惜要看人家的脸色,说还好你是一个研究所的,不然要收100块/片呢,心里暗暗不爽。回来问老板,老板说现在就你一个人用,何况就在我们楼上,你就去蹭吧,买了不值得。没办法,自己研究办法焊吧。现在算起来我一共手焊了7~8片了,省了不少钱啊,呵呵。
 
这里给大家提供的手焊方法已经是我最初方法的改进版,我现在基本可以保证100%的焊接成功率。但是有局限性,我焊接的最大芯片尺寸为16mm x 16mm,更大的像TI C6000那样的BGA我觉得会有问题,不建议采用我这种方法。
 
进入正题,你需要的工具:台虎钳一个,热风机两台,红外测温器一个(可选),摄像头一个(可选)。台虎钳是用来夹持电路板的;热风机是用来加热的,如果你的条件有限只有一台,那么最好不要焊接,因为成功率很低,尤其是板子和芯片尺寸都比较大的时候;红外测温器可以测量加热后的温度,没有也可以,用摄像头代替;摄像头是用来观察焊接的进行情况的,没错,这个摄像头就是我们用来QQ视频的那种,当然你熟练了以后,没有也可以。
 
首先,将你的电路板装夹在台虎钳上,调整摄像头的位置,使镜头的中心与电路板的平面一样高。看下面的两个图很容易就明白。有个很严重的问题,芯片怎么和焊盘对上?其实这个用担心,一般手持设备使用的BGA的Pitch都有0.8mm,更大的BGA都是1.0mm,你只要根据丝印层差不多对上就可以了,因为锡球溶化时的表面张力会把芯片拉正。
 
 
 
然后,调节摄像头的焦距,使它能够拍摄到BGA的锡球。为什么要拍BGA的锡球啊?呵呵,我从那台30万元的机器上学习的,当锡球全部加热溶化时,你能看到芯片在重力作用下落下一段距离。很有意思的过程,请看我附上的视频。
 
 
接下来就可以加热了,把两台风机的喷嘴都对准芯片所在的位置,如下图。风机的温度设定在300度左右(这个就需要你的经验了,含铅、不含铅芯片需要的温度不一样,不同公司的芯片需要的温度也不一样)。
 
 
 
加热的同时请仔细观察摄像头捕捉到的画面,或者同时用红外测温器测量电路板的温度,一般温度达到240~250度就一定可以让锡球溶化了。
 
 
值得一提的是,事先在电路板上涂上助焊剂,至于用什么样的就看你个人经验了。另外建议如果你对你的助焊剂没有信心,请在做板的时候给焊盘吹锡,加强可焊性。
 
最后是焊接时芯片下落的视频。
  
6月14日

ADSP-BF531/532/533的SPI Flash Boot

昨天写这篇文章写的差不多的时候,改了Windows Explorer的文件夹选项,气愤的是IE居然也跟着刷新了,我写的还没有保存……今天重新来。
 
到昨天为止,我毕设的几个关键技术的研究,包括超声测距、无刷电机驱动、ARM+FPGA控制器和ARM Linux还有FPGA的驱动、嵌入式图像处理、无线通信模块(这个是我师弟做的)基本上都完事了。最麻烦的是图像处理这块,花了我老师1万多块钱,呵呵,我比较能造。板子做了2次,第一次3700元,4层PCB+摄像头的FPC,不好使;第二次6400元,4层PCB+摄像头的软硬结合FPC,终于好使。还有开发板、芯片什么的3000多,好在我们机器人所有钱哈哈。由于花钱太多,ADSP-BF531/532/533+CMOS摄像头嵌入式图像处理这块是不能写在这里了,如果有需要,可以和我们研究室联系(我要毕业了,但是研究室马上会申请专利,0451-86414462-22,李老师)。
 
今天要写的是嵌入式图像处理部分的最后10cm的工作,将程序写入SPI Flash,并且Boot。其实这个部分挺麻烦的,我看了很多资料,也没有成功Boot。感谢http://bbs.21ic.com上id为yqyte的这位大虾的帖子http://bbs.21ic.com/club/bbs/list.asp?boardid=51&t=2269103,帮助我越过了最后1cm的障碍。
 
开始正文。SPI Flash Boot是ADSP-BF531/532/533一个很好的功能,这可以大大减小电路板的体积。目前可以使用在BF531/532/533上的SPI Flash至少可以达到2M Bytes,对于一般的Linux系统来说也够了。但是SPI Flash的速度还是比较慢的,启动加载需要比较长的过程,这点需要注意。
 
要实现SPI Boot,你必须要看的文档有:ADSP-BF533 Blackfin® Processor Hardware Reference(3 OPERATING MODES AND STATES->Booting Methods和18 SYSTEM DESIGN->Booting the Processor),VisualDSP++ Help(Loader and Utilities Manual)。阅读了这些,加上yqyte大虾的帖子,基本上就知道怎么设计硬件和怎么SPI Boot了。但是,SPI Flash烧写驱动还是个问题,一般的开发板如果支持SPI Boot都会带有SPI烧写驱动;如果你和我一样买的是个劣质的便宜货,没有这个驱动也不要紧,我下面会介绍。
 
从头说起吧:
1. ADSP-BF531/532/533支持如下几种Boot方式:
A. 外部非同步存储器直接启动,启动地址0x20000000,要求管脚BMODE[1:0]为00
B. 外部非同步存储器启动,使用片上Loader,将外部非同步存储器中的程序加载到L1 Cache,启动地址0xFFA08000(BF533为0xFFA00000),要求管脚BMODE[1:0]为01
C. SPI Flash Slave模式启动,即可以使用别的CPU向ADSP-BF531/532/533输入程序,启动地址同B,要求管脚BMODE[1:0]为10
D. SPI Flash Master模式启动,使用片上Loader,将SPI Flash中的程序加载到L1 Cache,启动地址同B,要求管脚BMODE[1:0]为11
 
着重说下方式D,除了以上要求外,还必须注意的是:芯片0.3版本后可以支持8、16或24位寻址的SPI Flash,0.2及以前只支持8位和16位的;PF2管脚用于SPI_CS,MISO管脚必须上拉,0.2版本及以前需要将FP2管脚上拉;除了通用SPI Flash之外,ADSP-BF531/532/533还支持AT45DB041B、 AT45DB081B和AT45DB161B这些器件。另外,芯片内部的Boot ROM地址是0xEF000000,有兴趣的话可以去反汇编一下,看看它的工作原理。
 
2. Loader文件的生成
用仿真器调试程序的时候,生成的是可执行程序的映像(*.dxe),如果要进行Boot,就应该生成Loader文件。这需要对工程进行设置。
 
 
选择VisualDSP++的菜单Project->Project Options,出现如上图所示的窗口,在Type中选择Loader file。然后点击左边的Load,出现如下图所示的窗口。
 
 
选择Boot Mode为SPI,Boot Format为Intel Hex,然后一定要选择一个Initialization File(不选的话不能启动),这个Initialization File是需要编译的,一会儿说。再选择一个Output File即可。
 
3. Initialization file的编译
我也不知道这个Initialization file用来干什么的,呵呵,只是放上了好使。VisualDSP++提供了这个Initialization file的源代码,默认位置在C:\Program Files\Analog Devices\VisualDSP 4.5\Blackfin\ldr\init_code\ADSP-BF533 INIT CODE,这个Init code是给BF533用的,BF531需要修改。其实修改也很简单,就是2句话。
在Init_code.asm中,修改
#include <defBF533.h>为#include <defBF531.h>
在ADSP-BF533.ldf中,修改
 PROGRAM  { TYPE(RAM) START(0xFFA00000) END(0xFFA07fff) WIDTH(8) } //L2为
 PROGRAM  { TYPE(RAM) START(0xFFA08000) END(0xFFA0bfff) WIDTH(8) } //L2
然后进入菜单Project->Project Options,修改Processor为ADSP-BF531,重新编译,生成的DXE文件就是需要的Initialization file。
 
4. SPI Flash的烧写
有了Initialization file之后,重新编译工程,得到的LDR文件就是要烧写的文件。SPI Flash烧写需要:仿真器、VisualDSP++、烧写驱动。很遗憾,我不知道怎么用JTAG下载电缆烧写SPI,前文已经提到,如果你买的是合格的开发板,那么一定会提供SPI烧写的驱动。如果没有也没有关系,我在www.blackfin.org上找到了一个,地址是http://www.blackfin.org/tools.php?id=16。这个驱动是给BF533写的,要给BF531使用,同样需要修改。另外,这个驱动的开发环境是VisualDSP++3.5,其工程文件与4.5版本的似乎不兼容,需要删除SPIFlash.dpj重新建立一个,建立过程如下。
 
A. 建立一个新的工程
 
B. 选择处理器类型
 
C. 加入Startup Code/LDF
 
D. 选上你需要的支持,其实不选SDRAM支持也可以
 
E. 一路Next到Finish。
F. 在工程中加入SPIFlash.c、stflash.c。
G. 修改stflash.c
找到
#include <cdefBF533.h>
修改为
#include <cdefBF531.h>
 
找到
#define CLKIN 27    // CLKIN frequency is 27 MHz on the BF533 EZ-Kit
修改为
#define CLKIN 20    // CLKIN frequency is 20 MHz on the BF531
当然你的晶振是多少就写多少
 
重新编译,生成的DXE文件就是SPI Flash的驱动。
 
H. 加载驱动
加载驱动时,仿真器必须连接目标板。选择VisualDSP++的菜单Tools->Flash Programmer。出现以下窗口:
 
 
点击Browse选择刚才编译好的驱动文件,然后点击Load Driver。注意,此时SPI Flash必须已经与BF531相连接,否则会提示“Out of memory”。
 
 
点选Programming选项卡,就可以进行编程了。
 
就这些了。