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

2019-03-25 19:55发布

我用的芯片是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;
        DELAYnop
        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();   
      
}

请大家帮我看看啊,是哪里的时序没有弄对???
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。