打印

PIC30F6014读写FLASH遇到的问题!!!

[复制链接]
1480|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ilovepink|  楼主 | 2007-11-8 23:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的芯片是DSPIC30F6014,片外FLASH为SST39VF400A(4MBIT)

要实现单片机读写FLASH的功能。

根据FLASH的读写时序编写了读写的程序,我的考虑是先写入一组数据到FLASH中,然后读出FLASH数据,读出后做一个简单的运算(取反),然后通过UART传送到PC上显示出来,从而判断是否读写正确。

问题是读写不成功时,怎么判断是写入不成功还是读出不成功???不知道大家有没有好的建议!

下面是FLASH文档中的读写时序,我写的读程序为:
unsigned int ReadFlash ( long inADDR )
{  
        unsigned int value;
     
        DIR_ADDR_16L=0X0000;
        DIR_DATA=0XFFFF;
      
       
        WE=1;
        CE=1;
        OE=1;
        ADDR_16L=inADDR&0X0FFFF;
        
      
        CE=0;
  
        OE=0; 
        DELAYnop   
   
        value=DATA;
        DELAYnop
      
        CE=1;
        OE=1;
        
        
        return value;
}

写程序:
void WriteFlash (long inDATA,   long inADDR)   /*WE  CONTROL WRITE A WORD */
{       
       
       
        DIR_ADDR_16L=0X0000;
        DIR_DATA=0X0000;
        
        OE=1;
        CE=0;
        
        ADDR_16L=0x5555;
        DATA=0x00AA;
        WE=0;
        DELAYnop
        WE=1;
       
        ADDR_16L=0x2AAA;
        DATA=0x0055;
        WE=0;
        DELAYnop
        WE=1;
        
        ADDR_16L=0x5555;
        DATA=0x00A0;
        WE=0;
        DELAYnop
        WE=1;
        
       
        ADDR_16L=(inADDR&0X0FFFF);
        
        DATA=inDATA;
        WE=0;
        DELAYnop
        WE=1;
        delay();   
       
}

请大家帮我看看啊,是哪里的时序没有弄对???

相关帖子

沙发
ilovepink|  楼主 | 2007-11-8 23:03 | 只看该作者

PIC30F6014读写FLASH遇到的问题!!!

同上

使用特权

评论回复
板凳
ilovepink|  楼主 | 2007-11-8 23:05 | 只看该作者

PIC30F6014读写FLASH遇到的问题!!!


还是这个问题
折腾我好久

对于读时序我还是不太明白,在图中:

Trc 是 READ CYCLE TIME ,  TAA是  ADDRESS ACCESS TIME, 

TCE  是 CHIP ENABLE ACCESS TIME 

TOE  是 OUTPUT ENABLE ACCESS TIME

在CE ,OE下拉中进入读时间序列, 后面才进入读地址时间,  在DQ端的数据什么时候读出??

为什么有两段 DATA VALID  ,这里应该怎么理解啊???

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝