一、nand flash容量與接口
1.容量
nand flash按照面、塊、頁、字節進行存儲空間的管理,以我接觸過的兩款芯片來說:
K9K8G08U0A的存儲容量爲1024MB = 4(planes) * 2K(blocks) * 64(pages) * 2K(Bytes)
oob區的大小爲32MB = 256Mbit = 512K(pages) * 64(Bytes)
(注:該flash中每一頁包括2KB存儲空間和64B的oob區信息)
K9F2G08U0A的存儲容量爲2Gbit = 256MB = 2(planes) * 1K(blocks) * 64(pages) * 2K(Bytes)
oob區的大小爲8MB = 64Mbit = 128K(pages) * 64(Bytes)
(注:該flash中每一頁包括2KB存儲空間和64B的oob區信息)
2. 接口I/O[0-7]:數據、地址、狀態和命令共同複用的輸入輸出口
CLE:命令鎖存使能
ALE:地址鎖存使能
CE:芯片片選使能
RE:讀使能
WE:寫使能
WP:寫保護使能
R/B:芯片“就緒/忙”信號
Vcc:電源
Vss:地
N.C:懸空
二、K9F2G08U0A功能框圖、組織結構與支持的命令集
三、操作步驟
Nand flash相關寄存器初始化
給出頁地址,發送塊擦除命令(0x60/0xd0),按塊(128K)擦除
給出將要寫入數據的起始地址,發送寫命令(0x80/0x10),數據被寫入nand flash指定地址
給出將要讀取數據的起始地址,發送讀命令(0x00/0x30),將從nand flash讀取指定長度的數據
四、說明
通過給定列地址值,我們可以不按頁對齊開始,而是從給定地址開始讀取數據
循環讀取數據的長度也不必是整頁的長度大小,而是根據實際長度來讀取,如len = 100
寫入也是同理,不必整頁對齊,但這樣會降低讀寫效率
擦除必須是從整數頁開始擦,擦除空間必須是一個block的大小,比如128KB