我用的芯片是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(); }
请大家帮我看看啊,是哪里的时序没有弄对??? |