Nand flash 芯片型號為 Samsung K9F1208U0B,數據存儲容量為 64MB,采用塊頁式存儲管理。8 個 I/O
引腳充當數據、地址、命令的復用端口。
芯片內部存儲布局及存儲操作特點
一片 Nand flash 為一個設備(device), 其數據存儲分層為: 1 設備(Device) = 4096 塊(Blocks)
1 塊(Block) = 32 頁/行(Pages/rows) ;頁與行是相同的意思,叫法不一樣
1 塊(Page) = 528 字節(Bytes) = 數據塊大小(512Bytes) + OOB 塊大小(16Bytes)
在每一頁中,最后 16 個字節(又稱 OOB)用於 Nand Flash 命令執行完后設置狀態用,剩余 512 個字節又 分為前半部分和后半部分。可以通過 Nand Flash 命令 00h/01h/50h 分別對前半部、后半部、OOB 進行定位通過 Nand Flash 內置的指針指向各自的首地址。
存儲操作特點:
1. 擦除操作的最小單位是塊。
2. Nand Flash 芯片每一位(bit)只能從 1 變為 0,而不能從 0 變為 1,所以在對其進行寫入操作之前要一定將相應
塊擦除(擦除即是將相應塊得位全部變為 1).
3. OOB 部分的第六字節(即 517 字節)標志是否是壞塊,如果不是壞塊該值為 FF,否則為壞塊。
4. 除 OOB 第六字節外,通常至少把 OOB 的前 3 個字節存放 Nand Flash 硬件 ECC 碼(關於硬件 ECC 碼請參看 Nandflash 控制器一節).
重要芯片引腳功能
I/O0I/O7:復用引腳。可以通過它向 nand flash 芯片輸入數據、地址、nand flash 命令以及輸出數據和操作
狀態信息。
CLE(Command Latch Enable): 命令鎖存允許
ALE(Address Lactch Enable): 地址鎖存允許
CE: 芯片選擇
RE: 讀允許
WE: 寫允許
WP: 在寫或擦除期間,提供寫保護
R/B: 讀/忙輸出
尋址方式
Samsung K9F1208U0B Nand Flash 片內尋址采用 26 位地址形式。從第 0 位開始分四次通過 I/O0-I/O7 進行
傳送,並進行片內尋址。具體含義如下:
0-7 位:字節在上半部、下半部及 OOB 內的偏移地址
8 位:值為 0 代表對一頁內前 256 個字節進行尋址
值為 1 代表對一頁內后 256 個字節進行尋址 9-13 位:對頁進行尋址
14-25 位:對塊進行尋址 當傳送地址時,從位 0 開始
Nand flash 主要內設命令詳細介紹
Nand Flash 命令執行是通過將命令字送到 Nand Flash 控制器的命令寄存器來執行。
Nand Flash 的命令是分周期執行的,每條命令都有一個或多個執行周期,每個執行周期都有相映代碼表示該周
期將要執行的動作。
主要命令有:Read 1、Read 2、Read ID、Reset、Page Program、Block Erase、Read Status。
詳細介紹如下:
- Read 1:
功能:表示將要讀取 Nand flash 存儲空間中一個頁的前半部分,並且將內置指針定位到前半部分的第一個字節。
命令代碼:00h
- Read 2:
功能:表示將要讀取 Nand flash 存儲空間中一個頁的后半部分,並且將內置指針定位到后半部分的第一個字節。
命令代碼:01h
- Read ID:
功能:讀取 Nand flash 芯片的 ID 號 命令代碼:90h
- Reset: 功能:重啟芯片。 命令代碼:FFh
- Page Program:
功能:對頁進行編程命令, 用於寫操作。
命令代碼:首先寫入 00h(A 區)/01h(B 區)/05h(C 區), 表示寫入那個區; 再寫入 80h 開始編程模式(寫入模式),接
下來寫入地址和數據; 最后寫入 10h 表示編程結束.
- Block Erase
功能:塊擦除命令。
命令代碼:首先寫入 60h 進入擦寫模式,然后輸入塊地址; 接下來寫入 D0h, 表示擦寫結束.
- Read Status 功能:讀取內部狀態寄存器值命令。 命令代碼:70h