资源描述:
《基于lpc2214简单nandflash读写》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、-本程序基于LPC2214对外扩nandflash的简单读写:主函数部分:/*********************************************************************************************************对于LPC2214由于内部没有nandflash控制器,当然也没有ECC校验,所以这些在LPC2214里面都需要我们自己去写,不过基本一样送地址直接送就可以了,只是没有特别的寄存器去代替而已,只不过ECC校验那块比较烦。。本程序只对nandflash的简单读写没有ECC校验,没有
2、坏去检查等。。只有简单的读写。**********************************************************************************************************/#include"config.h"#include"nandflash.c"#defineuintunsignedint#defineucharunsignedcharuint8databuf[2]={0x16,0x16};uint8databuf1[2];#defineLED0x000f0000voiddelay_m
3、s(uint32z){uint32x,y;for(x=3000;x>0;x--)for(y=z;y>0;y--);}voidnandflash_init(){PINSEL2=PINSEL2&0xfffffff7;//将P1.16-P1.25设置为GPIO口IO1DIR=LED;//将P1.16-1.19设置为输出端IO1SET=LED;//PINSEL2=(BIT5
4、BIT8
5、BIT14
6、BIT16
7、BIT23
8、BIT24
9、BIT25
10、BIT26
11、BIT27);IO0DIR=0x39FFB2F0;//0=输入,1=输出;BCFG2=0x00000c48;PIN
12、SEL2=0x0e004120;//使能WEOECS2//BCFG2=0x0000fbef;//存储器组配置寄存器//IO0SET=0x00003000;}.---intmain(){nandflash_init();//NF_Reset();//NF_CheckId();//NF_Init();BlockErase();NF_WritePage(0,10,0,2,databuf);//写入一页数据//delay_ms(10);NF_ReadPage(0,10,0,2,databuf1);//读出一页数据while(1){if((databuf1[0]==0x
13、16)&&(databuf1[1]==0x16)){IO1CLR=LED;delay_ms(2000);IO1SET=LED;delay_ms(2000);}elseif((databuf1[0]==0xff)
14、(databuf1[1]==0xff)){IO0SET=LED;delay_ms(500);IO0CLR=LED;delay_ms(500);}else{IO1CLR=LED;}}return(0);}Nandflash.c部分:既对nandflash的操作和一些简单的初始化设置等#include#include"config.h"
15、#include"nandflash.h"uint32DataCheckSum=0;.---uint8DataProtect;uint8Read_Flash_Buf[2048];uint8NorFlashIDRD[2]={0x0,0x0};uint8NorFlashID[5]={0x0,0x0,0xFF,0xFF,0xFF};uint16device_id;uint32NandFFileCnt;uint32NANDFLASH_START;uint8GdromDataBuf[2048+64];//wlwchangeuint8*GdromRawcodes;//指向
16、从nand中读出的ECC值uint8GdromECCcodes[24];//wlwadd,计算的ECC值externuint8databuf1[2];char*MY_ID="QUANTAITECHNOLOGY,LTD.;ZtechGD-ROM;2007-7-9";char*GD_GameTitle;structSYSTEM_ID*GdromSystem_ID(uint8*gddata);voidRead_GdromSystemID(uint8*gddata);uint32NF_CheckId(void){inti;uint16id;NF_CMD(0x90);N
17、F_ADDR(0x0);for(i=0