s3c2440裸机-nandflash编程(三. 初始化及识别)

发布时间:2023-08-02  

nandFlash命令表

对NAND FLASH的操作需要发出命令,下面有个NAND FLASH的命令表格,那么我们可以此表格上的命令来访问我们的nandflash.

1)时序分析

上面命令表中的读id还不太直观,下图是从nand芯片手册中截取出的读id时序图:

①第一条竖线位置,发送了nCE,CLE,nWE信号,所以90命令被锁存(readID命令);

②第二条竖线位置,发送了nCE,ALE,nWE信号,所以地址00被锁存;

继续往后,命令、地址都发完了,要read数据了,所以释放nWE,ALE,这里tAR表示ALE释放多久后才可以发送nRE信号,tREA表示nRE信号的建立时间;

③第三条竖线位置,发送了nCE,nRE信号,所以数据被锁存,第一个访问周期锁存的数据为marker code,值为0xEC,第二个访问周期的数据为device code,值为0xDA。读id时读5个周期含义对应如下表:

该款nandflash的5个周期读出来的值对应如下:

第四个访问周期含义如下表:

第五个访问周期含义如下表:

根据第4、5个访问周期的结果0x15、0x44我们得知该flash的block_size=128K,page_size=2k, 有2个plane,plane_size=1Gb = 128M, 共256M。

2)初始化

nand控制器要按照我们nandflash的实际型号和性能来设置初始值。

NFCONF(nand配置寄存器)

前面一节nand控制器和访问时序分析了TACLS = max(tCLS,tALS) - tWP,我们得知tCLS、tALS、tWP最小都可以取到12ns, 所以我们可以取TACLS=0;

TWRPH0 = tWP,我们的nand手册上要求tWP最少12ns, 那么取TWRPH0 =1, Duration = HCLK*(TWRPH0+1)=20ns>12ns,满足要求;

TWRPH0 = max(tCLH,tALH), 我们的nand手册上要求tCLH、tALH最少5ns, 那么取TWRPH1 =0, Duration = HCLK*(TWRPH1+1)=10ns>5ns,满足要求。

再配置BusWidth总线位宽为8bit;
所以NFCONF寄存器设置如下:

#define  TACLS   0

#define  TWRPH0  1

#define  TWRPH1  0

/*设置NAND FLASH的时序*/

NFCONF = (TACLS<<12) | (TWRPH0<<8) | (TWRPH1<<4);

NFCONT控制寄存器(nand控制寄存器)


MODE [0]: 设置为1,使能NAND控制器。

Reg_nCE [1]: 设置为1,禁止片选(等要使用的时候再使能片选信号)

所以NFCONF寄存器设置如下:


/*使能NAND FLASH控制器,禁止片选*/

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


3)识别nandflash

NFCMMD(nand命令寄存器)

我们可以使用2440上的NAND FLASH控制器简化操作,只需要往NFCMMD寄存器写入要传输的命令就可以了,NAND FLASH控制器默认把上面复杂的时序发出来。

NFADDR(nand地址寄存器)


发命令后,后面就需要发送地址了,当nWE和ALE有效的时候,表示锁存的是地址,往NFADDR寄存器中写值就可以了,比如:NFADDR=0x00。


我们得知地址需要用5个周期来发送,前2个周期为col地址,后三个周期为row(page)地址。上一节nand控制器和访问时序已详细分析过了命令、地址、数据锁存时序过程。


  ① column:列地址A0~A10,就是页内地址,地址范围是从0到2047。(A11用来确定oob的地址,即2048-2111这64个字节的范围)

  ② page:A12~A30,称作页号,page(row)编号。


NFDATA(nand数据寄存器)

当命令、地址都发送完后就可以从数据总线上DATA[7:0]获取数据或者写入数据。同样往NFDATA寄存器中写值或者读值就可以了,如unsigned char buf=NFDATA,由于是数据位宽是8位的,所以访问时数据组织形式如下:

从上图可以看出,当byte access时,只需一个时钟周期;当wold access的时候,需要4个时钟周期,小端模式下第一个时钟周期对应低字节,第四个时钟周期对应高字节。

识别nandflash代码如下:

/*初始化nand控制器*/

void nand_init(void)

{

#define  TACLS   0

#define  TWRPH0  1

#define  TWRPH1  0

NFCONF = (TACLS<<12) | (TWRPH0<<8) | (TWRPH1<<4);


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

}


/*使能片选*/

void nand_select(void)

{

NFCONT &=~(1<<1);

}

/*禁止片选*/

void nand_deselect(void)

{

NFCONT |= (1<<1);

}

/*发命令*/

void nand_cmd(unsigned char cmd)

{

volatile int i;

NFCCMD = cmd;

for(i=0; i<10; i++);

}

/*发地址*/

void nand_addr_byte(unsigned char addr)

{

volatile int i;

NFADDR = addr;

for(i=0; i<10; i++);

}

  /*读数据*/

  unsigned char nand_data(void)

  {

      return NFDATA;

  }

/*识别nandflash*/

void nand_chip_probe(void)

unsigned char buf[5]={0};

nand_select(); 

nand_cmd(0x90);

nand_addr_byte(0x00);


buf[0] = nand_data();

buf[1] = nand_data();

buf[2] = nand_data();

buf[3] = nand_data();

buf[4] = nand_data();

nand_deselect();


printf("maker   id  = 0x%xnr",buf[0]);

printf("device  id  = 0x%xnr",buf[1]);

printf("3rd byte    = 0x%xnr",buf[2]);

printf("4th byte    = 0x%xnr",buf[3]);

printf("page  size  = %d kbnr",1  < printf("block size  = %d kbnr",64 << ((buf[3] >> 4) & 0x03));

printf("5th byte    = 0x%xnr",buf[4]);

}

坏块初始化

https://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html#ref.linux_mtd


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    封装图及引脚对应表: NV040C芯片封装图 NV040C芯片管脚对应表 NV040C芯片典型应用电路图: 按键应用图, PWM直推喇叭,VDD<4.5V电路图 按键应用图, PWM直推喇叭,VDD>4.5V......
    LM386音频功率放大器电路图 LM386的典型应用电路;LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之......
    面上较为流行的支持220段声音的语音芯片。 NV080C语音芯片电路参考图: 1、按键应用图, PWM直推喇叭,VDD<4.5V电路图 2、按键应用图, PWM直推喇叭,VDD>4.5V电路图 3......
    阻,一个10uf的电解电容 两个20-33pf的瓷片电容,线若干,小开关一个 电路图如下: 那个小开关就是复位开关,制作好了大家可以下载一个小程序看看。。。。。。 最小系统制作非常容易,但是......
    AT89C51最小系统原理电路图;单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统。但是......
    芯片电源芯片即可实现。 首先设计电源入口部分,现在大多数开发板所使用的都是USB的5V供电,所以我们本次设计也采用USB接口供电,所以我们电源接口就采用5Pin的mini贴片的USB,将......
    LM386简易音频功放电路图 基于LM386功放芯片的音乐播放器设计;一.LM386功放芯片介绍 LM386 是一种音频集成功放,具有自身功耗低、电压增益可调整电源电压范围大、外接......
    9、伺服电机与步进电机的区别 10、一健启停电路图与PLC程序......
    以避免那些高密度(HDI)特征并再次节省成本、提高设计的可制造性。 那些超小尺寸或单端(dead-ended)通孔进行镀铜所要求的物理学和流体力学能力,并不是所有PCB代工厂都擅长的。记住,只要有一个不良通孔就可以毁掉整片电路......
    液晶电视维修:LED灯光电路图原理分析; 之前家里的电视背光不亮了,有声音,认为灯条坏了,换上后还是不亮,当时没时间修电路板,就直接换了一块电源板,今天找到电源板,仔细看了一下,查了下资料,当时应该是这个芯片......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>