- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
十 ARM9(2440) 对 nand flash 的读写操作程序实例
转载自:骨 Zi 里德骄傲 我相信上一篇文章已经对 nand flash 的操作有了一定的了解,下面一起看一下 程序实例:
#include include.h extern 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); //
引脚,因为GPACO复位后各位的值为1所以此步也可没有
//TACLS 为 1 个 HCLK TWRPH为 5 个 HCLK TWRPH为 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)|(1
0);
}
未接好?static U32 WaitNFBusy(void) // R/B
未接好?
U8 stat;
WrNFCmd(QUERYCMD);//0x7读状态命令 do
{
stat = RdNFDat();// 读取 NFDATA
}
while (!(stat0x40));// ,第 6 位,判断是否在忙
WrNFCmd(READCMDO)写页读命令周期0 return stat1; // 注意 0 为操作成功 }
static U32 ReadChipId(void)
{
void ReadPage(U32 addr, U8 *buf)//
void ReadPage(U32 addr, U8 *buf)// 并没有使用 ECC校验
U32 id,k;
等待不忙 应该是只读的厂商 ID 延时低 8 位为设备 ID 关闭片选NFChipEn(); // 使能片选 WrNFCmd(RdlDCMD);/渎 ID 命令 WrNFAddr(0);// 写入地址 0
等待不忙 应该是只读的厂商 ID 延时
低 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 则操作成功 }
{
U16 i;
NFChipEn();// 片选使能
WrNFCmd(READCMD0)读命令周期 0 WrNFAddr(O);// 写列地址 AO~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
您可能关注的文档
最近下载
- 广州数控GSK980TB3系列使用手册.pdf
- (热门!)最新版的比亚迪供应商审核自查表(可编辑!).docx VIP
- QJ300-12N钱江闪300维修手册(24.7.16).pdf VIP
- 一消《消防安全案例分析》历年真题及答案解析(第2套).pdf VIP
- (完整word版)内科护理学第五版目录.pptx
- 3.1 中国的土地资源(教学课件)地理商务星球版2025八年级上册.pptx
- 动力电池产品介绍.pptx VIP
- 肺结核患者的护理常规.pptx VIP
- 最新国家开放大学国开电大《机械制图》形考任务1-4 参考答案.pdf VIP
- 中国新能源汽车动力电池产业现状及前景展望.pptx VIP
原创力文档


文档评论(0)