S3C2440 NAND Flash的使用
基本知識(shí)
NAND flash: 速度快,擦寫5ms內(nèi);位翻轉(zhuǎn)概率較大,為10%左右;容量大,塊容量在8K以上,擦寫次數(shù)較多;接口為IO接口
NOR flash: 速度慢,擦除5S時(shí)間;位翻轉(zhuǎn)概率小于NAND flash;容量較小,塊容量在64K以上,擦寫次數(shù)沒有NAND flash多;接口為RAM接口,可以直接運(yùn)行程序
2、注意事項(xiàng)
2.1:在每次寫操作之前需要進(jìn)行擦除操作
2.1:使用前掃描壞塊,不再使用
3、容量關(guān)系
1頁 = 512 + 16字節(jié)
1塊 = 512B * 32頁
= (16K + 512)字節(jié)
1個(gè)器件 = 4096塊 = 528M
不同的flash有不一樣的頁塊大小,對(duì)于K9F2G08U0C來說
1頁 = 2K
1塊 = 128K = 64頁
冗余區(qū)大小 = 512 * 16 byte
一個(gè)器件兩層
一層 = 1GB = 8塊
4、一次傳輸
4.1:傳命令 檢查狀態(tài)
4.2:傳地址 檢查狀態(tài)
4.3:傳數(shù)據(jù) 檢查狀態(tài)
5、NAND flash interface(基本接口)
RnB : 就緒/忙 輸出信號(hào) Busy
nFRE: 讀使能
nFCE: 芯片使能
CLE : 命令鎖存使能
ALE : 地址鎖存使能
nFWE: 寫使能
DATA[0~7]: 數(shù)據(jù)輸入輸出
擴(kuò)展
WP : 寫保護(hù)
6、關(guān)于時(shí)間
寄存器NFCONF的 TACLS = setup time
TWRPH0 = WE High to Busy
TWRPH1 = Hold time
7、關(guān)于位地址操作
由于本板子上的nand flash標(biāo)寫的是八位的,而技術(shù)手冊(cè)上明確表示
8位、2048bit、5 cycle address的取址操作是A0-A7 A8-A11 A12-A19 A20-A27 A28
16位、2048bit、5 cycle address的取址操作是A0-A7 A8-A10 A11-A18 A19-A26 A27
但是在本板子上實(shí)驗(yàn)的結(jié)果是按16位的可以正確索引到地址,而按8位的反而不能找到地址了,而韋東山的程序也是按照16位的,并且還多出了A28,暫且在此認(rèn)為是硬件的問題
8、NAND flash 的操作步驟
8.1、NFCONF寄存器的配置:主要是關(guān)于時(shí)序的問題,板子上集成的nand flash 模塊可以發(fā)出特定的時(shí)序,只需要簡單的配置一下時(shí)間,
具體可以參照NAND flash 對(duì)應(yīng)的技術(shù)手冊(cè)。
8.2、NFCONT寄存器的配置:主要關(guān)注的是使能ECC,關(guān)閉片選,類似于LCD1602的配置方式,其中有些位是由外部引腳的狀態(tài)所決定的,
具體可以參照S3C2440技術(shù)手冊(cè)的NAND flash控制章節(jié)。
8.3、復(fù)位:復(fù)位指令0xFF,需要先片選,等待操作成功,取消片選
指令的下達(dá),有關(guān)操作可以參照NAND flash的控制步驟
Tips: 用define的時(shí)候一定要在后面加上括號(hào)
例如:#define S3C2440_NAND ((S3C2440_NAND_FLASH *)0x4E000000)
形如:#define S3C2440_NAND (S3C2440_NAND_FLASH *)0x4E000000 是錯(cuò)誤的