ARM9(S3c2440)之十nand flash的读写操作程序实例.docxVIP

ARM9(S3c2440)之十nand flash的读写操作程序实例.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM9(S3c2440)之十nand flash的读写操作程序实例

十??ARM9(2440)对nand?flash的读写操作程序实例转载自:骨Zi里德骄傲我相信上一篇文章已经对nand flash的操作有了一定的了解,下面一起看一下程序实例:#include include.hextern void Uart_Printf(char *fmt,...);extern void Uart_Init(int baud);//extern void Uart_Select(int ch);static void InitNandCfg(void){?rGPACON = (rGPACON ~(0x3f17)) | (0x3f17);??????????? //配置芯片引脚,因为GPACON复位后各位的值为1,所以此步也可没有?//TACLS为1个HCLK,TWRPH0为5个HCLK,TWRPH1为2个HCLK,数据宽度8位?rNFCONF = (TACLS12)|(TWRPH08)|(TWRPH14)|(00);?//禁止紧锁,软件禁止上锁,禁止非法访问中断,禁止RnB 中断,RnB检测上升沿,锁定备份ECC,锁定主数据区域ECC生成,初始化ECC 编码器/译码器,?//强制nFCE 为高(禁止片选),NAND Flash 控制器使能?rNFCONT = (013)|(012)|(010)|(09)|(08)|(16)|(15)|(14)|(11)|(10);}static U32 WaitNFBusy(void)?// R/B 未接好?{?U8 stat;??WrNFCmd(QUERYCMD);//0x70,读状态命令?do?{??stat = RdNFDat();//读取NFDATA?}?while (!(stat0x40));//,第6位,判断是否在忙?WrNFCmd(READCMD0);//写页读命令周期0?return stat1;??? //注意0为操作成功}static U32 ReadChipId(void){?U32 id,k;??NFChipEn();?//使能片选?WrNFCmd(RdIDCMD);//读ID命令?WrNFAddr(0);//写入地址0?while(NFIsBusy());?//等待不忙?id? = RdNFDat()8;//应该是只读的厂商ID?for(k=0;k500;k++);//延时?id |= RdNFDat();//低8位为设备ID???NFChipDs();??//关闭片选??return id;//返回ID值}static U16 ReadStatus(void){?U16 stat;??NFChipEn();?//片选使能?WrNFCmd(QUERYCMD);?//读状态命令??stat = RdNFDat();?//读取状态值?NFChipDs();//关闭片选??return stat;}U32 EraseBlock(U32 addr)//输入参数是具体的页数,擦除的是页数所在的块{?U8 stat;?addr = ~0x3f;//为了将地址赋给A18~A19???NFChipEn();?//片选使能?WrNFCmd(ERASECMD0);?//擦除命令周期0??WrNFAddr(addr);//写地址写3个行周期A18~A19?WrNFAddr(addr8);//A20~A27?? ?WrNFAddr(addr16);//A28?WrNFCmd(ERASECMD1);?//?擦除命令周期1?stat = WaitNFBusy();//等待不忙?NFChipDs();//关闭片选??return ~stat;//返回1则操作成功}void ReadPage(U32 addr, U8 *buf)//并没有使用ECC校验{?U16 i;??NFChipEn();//片选使能?WrNFCmd(READCMD0);//读命令周期0?WrNFAddr(0);//写列地址A0~A7?WrNFAddr(0);//写列地址A8~A11?WrNFAddr(addr);//行地址A12~A19?WrNFAddr(addr8);//行地址A20~A27?WrNFAddr(addr16);//行地址A28?WrNFCmd(READCMD1);//读命令周期1?InitEcc();//复位ECC?WaitNFBusy();?for(i=0; i2048; i++)??buf[i] = RdNFDat();//读取数据存入buf中?NFChipDs();//关闭片选}U32 WritePage(U32 addr, U8 *buf){?U32 i, mecc;?U8 stat, tmp[7];???NFChipEn();?WrNFCmd(PROGCMD0);//页写命令

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档