WrNFCmd(READCMD0);//送出读命令,把设备的状态由查询状态转为读状态
return stat&1;//在查询时序下,硬件操作完成后,若数据寄存器的第0位为1则表明硬件操作过程中有错
}
void ReadPage(unsigned int addr, unsigned char *buf)
{ //参数addr为要读页的页地址(包含块地址),参数buf用来存放读出的数据
unsigned short i;
NFChipEn();//芯片使能
WrNFCmd(READCMD0);//送出读命令
//将地址分时送出
WrNFAddr(0); //按页操作故页内地址为零,以确保页地址对齐
WrNFAddr(addr);
WrNFAddr(addr>>8);
WrNFAddr(addr>>16);
WaitNFBusy();//等待硬件操作完成
for(i=0; i<512; i++)
buf[i] = RdNFDat();//读出数据
NFChipDs();//解除芯片使能
}
void WritePage(unsigned int addr, unsigned char *buf)
{ //参数addr为要写入页的页地址(包含块地址),参数buf中存放的是要写入的数据
unsigned short i;
unsigned char stat;
NFChipEn();//芯片使能
WrNFCmd(PROGCMD0);//送出写命令
//将地址分时送出
WrNFAddr(0);//按页操作故页内地址为零,以确保页地址对齐
WrNFAddr(addr);
WrNFAddr(addr>>8);
WrNFAddr(addr>>16);
for(i=0; i<512; i++)//送出要写入的数据
WrNFDat(buf[i]);
WrNFCmd(PROGCMD1); //送出另一个写命令,开始写入数据的第二阶段
stat = WaitNFBusy();//等待写操作完成
NFChipDs();//解除芯片使能
if(stat)
|