我用的芯片是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();
}
请大家帮我看看啊,是哪里的时序没有弄对???
此帖出自
小平头技术问答
一周热门 更多>