[post]这几天在研究Tiny6410 裸机程序(关于nandflash的),nandflash一页是 8K,现在实现了读操作,写操作老是不成功。
代码如下:
int NF_Erase(unsigned long addr)
{
int ret;
//选中flash芯片
select_ship();
//清除RnB
clean_RnB();
//发送命令60
nand_cmd(0x60);
//发送行地址(3个周期)
nand_addr(addr&0xff);
nand_addr((addr >>8 ) & (0xff));
nand_addr((addr >>16 ) & (0xff));
//发送命令D0
nand_cmd(0xD0);
//等待RnB
wait_RnB();
//发送命令70
nand_cmd(0x70);
//读取擦除结果
ret = NFDATA;
//取消选中flash芯片
delselect_ship();
return ret;
}
int NF_WritePage(unsigned long addr,unsigned char* buff)
{
int ret,i;
//选中flash芯片
select_ship();
//清除RnB
clean_RnB();
//发送命令80
nand_cmd(0x80);
//发送列地址(2个周期)
nand_addr(0x00);
nand_addr(0x00);
//发送行地址(3个周期)
nand_addr(addr&0xff);
nand_addr((addr >>8 ) & (0xff));
nand_addr((addr >>16 ) & (0xff));
//写入数据
for(i=0;i<1024*8;i++)
{
NFDATA = buff;
}
//发送命令10
nand_cmd(0x10);
//等待RnB
wait_RnB();
//发送命令70
nand_cmd(0x70);
//读取写入结果
ret = NFDATA;
//取消选中flash芯片
delselect_ship();
return ret;
}
希望高手看看,是否有错误。
[/post]