烧坏了两块FLASH

     因为由于蜂鸣器不停的响,决定把Flash擦了,就选用了FlashPGM中的Erase按键,进入全部擦除模式,在擦到90%多,快要擦除完的时间,进度条不动了,一直死在那边,估计最后一个扇区没有没控除玩,然后就手动停止。这时,蜂鸣器还是响,于是我想到用其它的程序来覆盖的方式来擦除Flash,这时,蜂鸣器真的不响了,我以为这次应该没问题了。

      下面准备调试CPLD部分电路,用VHDL硬件语言写了一段小程序,很简单,就是点亮一盏灯,因为我在电路设计的时间就考虑到将来的测试问题,特意加了一个发光LED,程序如下:

 

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY figotest IS
         PORT( LED : OUT STD_LOGIC);
END figotest;

ARCHITECTURE example OF figotest IS
BEGIN
         LED 
<= '0' ;
END example;

      刚开始由于Quartus 安装问题,程序编译不了,JTAG也连接不上,后来在石局和小满的指导下,终于安装成功(安装Quartus时主要有两个要地方要注意,一个是DLL文件的替换,另一个是DAT文件中的硬件ID)。编译VHDL,成功,连接JTAG,成功,烧入程序,运行,灯被点亮,所以CPLD这部分的电路也应该没有问题。

       不过,第二天,我再想去调调ARM部分的时候,程序不管怎么搞都烧不进去了,Flash ID 号也读不到了,电压转换芯片LM1117-3.3也发热的厉害,我再摸了一下其它的芯片,发现Flash MX29LV320热的更加厉害,我立即断了电源,检查到底是什么原因,测了Flash的引脚,并没有发现有地方短路的,其它的芯片也没有短路,开通电源,还是发热,而且一通就热,所以初步断定是Flash芯片的问题,可能是芯片内部短路,由是,我把买的另外一块Flash请赵老师帮我换上。可是回来一通电源,傻了,还是发热,这应该不是Flash芯片的原因了吧?!这时想到这个现像是发生在调试CPLD之后才发生的,不会是CPLD的原因吧,后来想想,终于找到了原因,原来我CPLD和Flash都是连到ARM的数据总线上的,CPLD的测量中我只用了其中的一个引脚 ,没有用的我没有设置成三态门,所以数据线DATA0~DATA15都被短接了,后来改了一下程序,重新写到CPLD中面,Flash芯片果真不发热了。

       用FlashPGM软件把u—boot程序烧到Flash中,复位,u—boot启动成功,那个蜂鸣器又响个不停,擦除,同样,在擦到最后一个扇区的时候又定在那边,只能手动停止,用另外一个程序重新写入,这时U—boot又不能启动了,Flash 的ID也读不到了,好像Flash又烧坏了吧。

       就买了两块Flash,都烧了,只能重买了。。。。。。。。。。。。

posted on 2008-09-13 21:17  hanfigo  阅读(745)  评论(2)    收藏  举报

导航