历史上的今天
返回首页

历史上的今天

今天是:2024年10月21日(星期一)

正在发生

2018年10月21日 | S5PV210(TQ210)学习笔记——Nand配置

2018-10-21 来源:eefocus

  S5PV210的Nand flash跟2440和6410的Nand flash配置差不多,不同的是S5PV210的功能更加强大,尤其是S5PV210的硬件ECC(本文不涉及S5PV210中Nand ECC配置)。整体上来讲,S5PV210的Nand flash配置还是非常简单的。

  其实,配置一个模块往往需要以下几个步骤:

  (1)根据原理图,理清模块的接线方式,对于Nand flash来说,就是看看Nand flash接到了哪些GPIO上,然后把对应的GPIO配置为Nand功能即可。

  (2)阅读S5PV210手册,掌握相关模块控制器的功能、操作方式及寄存器配置。

  (3)阅读模块芯片手册,掌握模块的访问控制时序。

  我们按照以上步骤进行配置,首先是模块GPIO的配置,我的开发板是TQ210,Nand flash芯片是K9K8G08U0B,接线方式如下图

S5PV210(TQ210)学习笔记——Nand配置

  其中:

  (1)Xm0FRnB0~Xm0FRnB3,Xm0FCLE,Xm0FALE,Xm0FWEn,Xm0FREn这八根脚连接到了MP0_3上,查看MP0_3控制寄存器可知,需将MP0_3CON配置为0x22222222;

  (2)Xm0CSn2~Xm0CSn5四根脚连接到了MP0_1的2~5脚上,故MP0_1CON的8~23位应该配置为0x3333;

  (3)Xm0DATA0~Xm0DATA7这八根脚连接到了MP0_6上,故MP0_6应该配置为0x22222222;

  这样,GPIO配置好了,接下来我们配置下Nand flash的控制寄存器,大体浏览下Nand flash的寄存器功能后我们可以发现,如果不使用ECC功能可以只配置NFCONF和NFCONT两个寄存器,我们的Nand flash是SLC型Nand,Page大小为2048,写入地址需要5个周期(这些从Nand flash芯片手册上很容易找到),故NFCONF应该配置如下:

  NFCONF=(3<<23)|(1<<12)|(2<<8)|(0<<4)|(1<<1); //依次为:禁止ECC,TACLS,TWPRH0,TWPRH1,SLC、2K、5周期。

  其中TACLS、TWPRH0和TWPRH1需要阅读手册来确定,韦东山老师讲述了确定方式,但是,我配置时完全按照手册上的最小时间设置时没有能够正常访问,我是自己尝试出来的,先将三个参数都设置为7,然后慢慢减小,最后测试出来设置为1、2、0,但是这样不一定是最稳定的,一般来讲,数值略大一些会更稳定,但是为了不影响访问效率,这个值也不能设太大,先按照最小情况设置,当发现有读取错误或其他不稳定现象时再适当提高参数值。

  然后就是NFCONT寄存器,NFCONT的配置就更简单了,我们不设置ECC,只需要设置0位和1位就可以了:

  NFCONT = (1<<1)|(1<<0);//禁止片选,使能Nand

  这样,Nand flash的初始化函数就出来了:

  1. void nand_init(){  

  2.     NFCONF = (3<<23)|(1<<12)|(2<<8)|(0<<4)|(1<<1);  

  3.     NFCONT = (1<<0)|(1<<1);  

  4.   

  5.     MP0_1CON &= ~(0xffff<<8);  

  6.     MP0_1CON |= 0x3333<<8;  

  7.     MP0_3CON = 0x22222222;  

  8.     MP0_6CON = 0x22222222;  

  9.   

  10.     nand_reset();  

  11. }  

  至于nand_reset,通常是Nand flash配置完成之后就进行一次reset,这样使Nand flash恢复到最初状态。

  这样,Nand flash初始化好了,但是要访问Nand flash还需要按照时序对其操作,Nand方式启动时只需要实现Nand flash的读操作,为此,这里只列举一下几个读相关的操作:

  (1)Nand flash reset

  1. static void nand_reset(){  

  2.     nand_select_chip();  

  3.     nand_cmd(0xff);  

  4.     nand_wait();  

  5.     nand_deselect_chip();  

  6. }  

  (2)Nand flash写地址

  1. static void nand_addr(unsigned long page_addr, unsigned long page_offset){  

  2.     NFADDR = (page_offset>>0) & 0xFF;  

  3.     NFADDR = (page_offset>>8) & 0x7;  

  4.     NFADDR = (page_addr) & 0xFF;  

  5.     NFADDR = (page_addr>>8) & 0xFF;  

  6.     NFADDR = (page_addr>>16) & 0x07;  

  7. }  

  (3)Nand flash读ID

  1. void nand_read_id(char id[]){  

  2.     int i;  

  3.   

  4.     nand_select_chip();  

  5.     nand_cmd(0x90);  

  6.   

  7.     NFADDR = 0;  

  8.   

  9.     for (i = 0; i < 5; i++)  

  10.         id[i] = nand_read();  

  11.   

  12.     nand_deselect_chip();  

  13. }  

  (4)Nand flash读页数据

  1. void nand_read_page(unsigned char* buf, unsigned long page_addr){  

  2.     int i;  

  3.     nand_select_chip();  

  4.     nand_cmd(0);  

  5.     nand_addr(page_addr, 0);  

  6.     nand_cmd(0x30);  

  7.     nand_wait();  

  8.     for(i = 0; i != PAGE_SIZE; ++i){  

  9.         *buf++ = nand_read();  

  10.     }  

  11.     nand_deselect_chip();  

  12. }  

  上面是几个比较重要的Nand flash读相关的操作函数,到这里,您自己补充一下引用到的小函数就可以正常的进行Nand flash操作了,我把我写的代码上传到我的CSDN资源里,如果需要的话可以拿去参考。另外,如果需要编写Nand flash写操作的代码可以参考一下本人博客中6410的Nand flash配置部分和Nand flash的芯片手册,原理都是相通的。


推荐阅读

史海拾趣

ESTEK公司的发展小趣事

ESTEK公司深知产品质量对于企业发展的重要性。因此,公司从源头上把控原材料的质量,并在生产过程中严格执行质量管理体系标准。通过一系列严格的质量管控措施,ESTEK公司的产品质量得到了有效保障。在市场上,ESTEK公司的产品以高质量、高可靠性著称,赢得了广大客户的信赖和好评。

Aavid Thermalloy公司的发展小趣事

ESTEK公司深知产品质量对于企业发展的重要性。因此,公司从源头上把控原材料的质量,并在生产过程中严格执行质量管理体系标准。通过一系列严格的质量管控措施,ESTEK公司的产品质量得到了有效保障。在市场上,ESTEK公司的产品以高质量、高可靠性著称,赢得了广大客户的信赖和好评。

联智(Celfras)公司的发展小趣事

江西联智集成电路有限公司(简称联智)自2016年成立以来,始终致力于无线充电技术的研发和创新。公司凭借其先进的无线充电TX/RX芯片解决方案,迅速在行业内崭露头角。联智不仅拥有由多名高校博士和高级研发人员组成的核心研发团队,还在中国及韩国设立了研发中心,确保技术的领先性和市场竞争力。

DEMMELPRODUCTS公司的发展小趣事

在追求技术创新和市场拓展的同时,DEMMELPRODUCTS公司始终将品质管理放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的质量控制。此外,公司还积极引入先进的生产设备和技术,不断提高生产效率和产品质量。通过持续改进和优化,DEMMELPRODUCTS公司的产品品质得到了客户和行业的广泛认可。

AMSCO [Austria micro systems AG]公司的发展小趣事

DEMMELPRODUCTS公司自创立之初,就坚持以技术创新为核心竞争力。在公司的早期阶段,研发团队攻克了一项关键技术难题,成功开发出一款具有高性价比和高可靠性的新型电子元件。这款产品凭借其卓越的性能,迅速在市场上脱颖而出,赢得了客户的广泛认可。随着技术的不断迭代和升级,DEMMELPRODUCTS公司逐渐在电子行业中树立了技术领先的形象。

CNC Tech公司的发展小趣事

CNC Tech公司深知,在竞争激烈的电子行业中,品质是赢得客户信任和市场口碑的关键。因此,公司始终坚持品质至上的原则,从原材料采购到生产制造的每一个环节都严格把控品质。CNC Tech还建立了完善的品质管理体系,通过严格的质量检测和持续的技术改进,确保每一台出厂的设备都能达到客户的期望和要求。正是凭借这种对品质的执着追求,CNC Tech赢得了广大客户的信赖和好评。

问答坊 | AI 解惑

TI芯片选型指南

相信很多工程师都在用TI的产品 本人在此分享一下官网公布的选型指南 希望对面临选型困惑的工程师有帮助 http://focus.ti.com.cn/cn/analog/docs/selectionguides.tsp…

查看全部问答>

【藏书阁】数字信号处理课件

第00章 数字信号处理 绪论 27页 0.5M PDF格式.pdf 第01章 离散时间信号与离散时间系统基础 71页 1.7M PDF格式 .pdf 第02章 Z变换及离散系统分析 43页 1.1M PDF格式.pdf 第03章 离散傅立叶变换 65页 1.4M PDF格式.pdf 第04章 附:关于图象压缩 4 ...…

查看全部问答>

如何在WM5.0上安装sqlite?

如题:如何在WM5.0上安装sqlite?    wce上又该怎么装?…

查看全部问答>

printk奇怪问题,请高手指点!

小弟我在调试网卡驱动的时候写了下面语句:             static   long   long   count   =   0;           stati ...…

查看全部问答>

电路板打样超级便宜

最近发现一个做电路板便宜的地方  www.sz-jlc.com/o   5*5cm以内50元 10*10以内100元 到现在为止最便宜的了 分享一下哈哈…

查看全部问答>

ST10技术资料

有关ST10的技术资料介绍,请参考:http://mcu.st.com/mcu/inchtml.php?fdir=pages&fnam=st10http://mcu.st.com/mcu/modules.php?name=mcu&file=familiesdocs&FAM=17ST10的中文手册书籍(类似ST7一样)不久也会面世了!!…

查看全部问答>

CC3000 wifi模块有木有

soso姐,帮我问一下TI办事处,CC3000什么时候搞一个活动哈,我看了TI 官网的宣传片了,我想要学习一下wifi的实时性能,我看他的DEMO 的是实时性还可以呀…

查看全部问答>

纽扣电池请教

关于纽扣电池,使用万用表测试其两端电阻,发现只有几欧姆的样子,这个是正常的吗?此外,想请教一下,如果我将纽扣电池串接在5V的电压源上放电,当串联电压降低后可以认为其电流都出自纽扣电池内吗?…

查看全部问答>