📄 nand.c
字号:
/*
Nand Flash 测试主程序
*/
#include "nand.h" /*nand.h中包括宏定义和子函数的声明*/
int main(){
// int k,p;
// long int p;
unsigned short i,j; /*i,16位无符号数*/
char data_to_write[512]; /*将要写到Nand Flash 中的一页数据(512Bytes)*/
char data_read[512]; /*从Nand Flash中读回的数据存放的数组*/
// GPFCON = 0x00005555;
// GPFUP = 0xff;
// for (i=0;i<10;i++){
// k=20000;
// j=20000;
// GPFDAT = 0xff;
// for (;j>0;j--);
//
// GPFDAT =0;
// for(k);
// ;
//
// }
// GPFDAT=0x3f;
// for (p=200;p>0;p--)
// for(k=100;k>0;k--);
// GPFDAT=0xcf;
// for (p=200;p>0;p--)
// for(k=100;k>0;k--);
// GPFDAT=0;
for (i=0;i<512;i++){
data_to_write[i]= (i & 0xff);
}
// GPFCON=0x5555;
// for (j=0;j<10;j++){
// p=20000;
// k=20000;
// GPFDAT = 0xff;
// wait(20000);
// for(;p>0;p--);
// GPFDAT = 0;
// wait(20000);
// for(;k>0;k--);
// }
/*关闭WATCH DOG的自动复位功能*/
disable_watchdog_reset(); /*注意:并没有关闭,只是禁止RESET*/
/*初始化SDRAM,因为我们在SDRAM中设置了堆栈*/
init_SDRAM(); /*我们向13个SDRAM的控制寄存器中写入了控制字*/
// GPFCON=0x5555;
// for (j=0;j<10;j++){ /使开发板上的LED3闪10次/
// GPFDAT = 0xff;
// wait(30000);
// GPFDAT = 0;
// wait(30000);
// }
/*初始化Nand Flash Controller*/
init_NF(); /*注意:片选信号还没有使能*/
/*初次使用Nand Flash ,进行一下复位操作*/
reset_NF(); /*复位操作的末尾,进行了Nand Flash
的空闲检测,所以,至此,Nand Flash is idle*/
/*One_Block_Erase:调用erase_NF(),Erase第二个Block,16KBytes;不要Erase 第一块*/
erase_NF(1); /*erase_NF中,进行了错误检查,若发现错误,
则开发板上的LED1会闪20次
在Erase操作完成之后,我们又关闭了
Nand Flash的片选信号*/
/*One_Page_Program向Nand Flash中的刚刚E rase了的Block中的第一页写入512Bytes的数据*/
program_NF(data_to_write, 0x4000,512);/*program_NF中,进行了错误检查,
若发现错误,则开发板上的LED0会闪20次
在写操作完成时候,我们也同样关闭了
片选信号*/
/*One_Page_Read:将上面写入的一页数据重新读出来,并与原来的
数据比较,若发现不一致,则使开发板上的LED2闪20次*/
read_NF(data_read,0x4000, 1);
/*比较原始数与读回的数据*/
for (i=0;i<512;i++){
if (data_to_write[i] != data_read[i]){
GPFCON = 0x5555; /*将整个F口配置成输出端口*/
for (j=0;j<10;j++){ /*使开发板上的LED3闪10次*/
GPFDAT = 0xbf;
wait(30000);
GPFDAT |= (1<<6);
wait(30000);
}
// break; /*跳出循环,不在往下校对*/
}
}
/*checking*/
GPFCON=0x5555;
GPFDAT=(data_read[5]<<4);
/*
GPFCON=0x5555;
GPFDAT=0xcf;
*/ return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -