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();   
      
}

请大家帮我看看啊,是哪里的时序没有弄对???
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
860122
1楼-- · 2019-03-26 01:59
你有没有防真器或JTAG之类的呀?仿真软件可以读适合地址的值呀,它读出来的就绝对是对的,你只要写后,到指定地址看是不是你写入的数据就可以了
shaolong
2楼-- · 2019-03-26 06:12
请为你是读写成功了没有啊??????

可以用逻辑分析仪 看看,  查flash的状态积存器啊? 看状态来确定

黄小明
3楼-- · 2019-03-26 09:44
lz要干嘛?
evildoor
4楼-- · 2019-03-26 10:03
 精彩回答 2  元偷偷看……

一周热门 更多>