基于NAND Flash的大容量立体封装芯片在嵌入式系统中的应用
软件设计
本文引用地址:https://www.eepw.com.cn/article/192739.htm根据前面的介绍,通过图3的硬件连接方式,可以实现对芯片的读写,擦除等控制操作,已可以满足各种场合的应用,S698-mil处理器是通过GPIO来操作控制VDNF64G08的,所以需要对底层操作需要比较了解,下面简单介绍一些常用操作的实现。

S698-mil芯片GPIO0对应的寄存器地址为0x2000 0000 – 0x27ff ffff,因为VDNF64G08芯片位宽是8bit的,所以需要把MCU的GPIO位宽也定义成8bit,根据前面的硬件连接可以知道地址低3位对应到VDNF64G08芯片的片选信号,add[4]对应到CLE,add[5]对应到ALE,为了方便编程,这里做以下宏定义 :
#define NF_ADDREG(CE) (*(volatile unsigned char *) (0x20000010 + CE))
#define NF_CMDREG(CE) (*(volatile unsigned char *) (0x20000008 + CE))
#define NF_DATAREG(CE) (*(volatile unsigned char *) (0x20000000 + CE))
读芯片ID
根据芯片指令表,可以知道读ID芯片只需要写入命令0x90,然后在写入地址0x0即可,详细操作可以根据以下时序图进行:
int readID(unsigned char CE,unsigned IDlength)
{
unsigned char ID[],i;
NF_CMDREG(CE) = 0x90;
NF_ADDREG(CE) = 0x0;
delayed(1);
for(i = 0;i < IDlength;i++)
{
ID[i] = NF_DATAREG(CE);
}
i = i - 1;
printf("CHIP CE d% ID:0x%x",ID[0]);
while(i){
printf("-%x",ID[IDlength - i]);
i --;
}
printf("nr");
}
芯片坏块查询
由于NAND Flash的工艺不能保证NAND 的Memory Array在其生命周期中保持性能的可靠,因此,在NAND 的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NAND Flash的系统中一般都会采用一定的坏区管理策略,而管理坏区的前提是能比较可靠的进行坏区检测。检测流程如图4所示。

存储器相关文章:存储器原理
上拉电阻相关文章:上拉电阻原理
评论