s3c2440硬件篇之四:NandFlash(1)介紹
如上圖所示:小頁Nand容量=528B * 32頁 * 4096塊 = 528M bits.可用512M bits.即64M.
下圖為英文原文pdf資料截圖。
注:NandFlash的命令,數(shù)據(jù),地址都通過8個I/O口輸出。
(1)小頁Nand。
,一頁大小為(512+16)528字節(jié)(byte).將一頁分為3個區(qū):A區(qū)為0~255字節(jié),B區(qū)為256~511字節(jié),C區(qū)為512~527字節(jié)。訪問某頁時,需要選定特定的區(qū):命令00h讓地址指針指向A區(qū),01h指向B區(qū),50h指向C區(qū)。
Nand Flash的寫操作是以頁為單位的,但是可以寫一頁中的一部分。發(fā)出命令80h后,緊接著發(fā)出4個地址序列,然后向Flash發(fā)送數(shù)據(jù),然后發(fā)出命令10h啟動寫操作。
(2)大頁Nand
S3C2440 NandFlash控制器介紹:
NAND Flash控制器提供幾個寄存器來簡化對NAND Flash的操作。比如要發(fā)出讀命令,只需往NFCMD寄存器寫入0即可,NAND FLash控制器會自動發(fā)出各種控制信號。
1、操作方法概述
訪問NAND Flash時需要先發(fā)出命令,然后發(fā)出地址序列,最后讀/寫數(shù)據(jù);需要使用各種使能信號來分辨是命令、地址還是數(shù)據(jù)。S3C2410的NAND Flash控制器提供了NFCONF、NFCMD、NFADDR、NFDATA、NFSTAT和NFECC等6個寄存器來簡化這些操作。S3C2440的NAND Flash控制器則提供了NFCONF、NFCONT、NFCMMD、NFADDR、NFDATA、NFSTAT和其它與ECC有關(guān)的寄存器。對NAND Flash控制器的操作,S3C2410和S3C2440有一些小的差別:有些寄存器不一樣,有些寄存器內(nèi)容不一樣,這在實例程序中會體現(xiàn)出來。
NAND Flash的讀寫操作次序如下:
(1)設(shè)置NFCONF(對于S3C2440,還要設(shè)置NFCONT)寄存器,配置NAND Flash。
(2)向NFCMD寄存器寫入命令,這些命令可以參考表8.2。
(3)向NFADDR寄存器寫入地址。
(4)讀/寫數(shù)據(jù):通過寄存器NFSTAT檢測NAND Flash的狀態(tài),在啟動某個操作后,應(yīng)該檢測R/nB信號以確定該操作是否完成、是否成功。
2.下面講解這些寄存器的功能和用法:
1)NFCONF:NAND Flash配置寄存器
這個寄存器在S3C2410、S3C2440上功能有所不同。
S3C2410的NFCONF寄存器被用來使能禁止NAND Flash控制器、使能禁止控制引腳信號nFCE、初始化ECC,設(shè)置NAND Flash的時序參數(shù)等。
(2)NFCONT:NAND Flash控制寄存器,S3C2410沒有這個寄存器。
被用來使能/禁止NAND Flash控制寄存器,使能/禁止控制引腳信號nFCE、初始化ECC。它還有其它功能,在一般的應(yīng)用中用不到,比如鎖定NAND Flash。
(3)NFCMD:NAND Flash命令寄存器
對于不同型號的Flash,操作命令一般不一樣。對于本板使用的K9F1208U0M,可參考表8.2。
(4)NFADDR:NAND Flash地址寄存器。
當(dāng)寫這個寄存器時,它將對Flash發(fā)出地址信號。
(5)NFDATA:NAND Flash數(shù)據(jù)寄存器。
只用到低8位,讀、寫此寄存器將啟動對NAND Flash的讀數(shù)據(jù)、寫數(shù)據(jù)操作。
(6)NFSTAT:NAND Flash狀態(tài)寄存器
只用到位0,0:busy,1:ready
讀NandFlash的步驟:
①設(shè)置NFCONF
在HCLK=100Mhz的情況下,TACLS=0,TWRPH0=3,TWRPH1=0,則
NFCONF = 0x300
使能NAND Flash控制器、禁止控制引腳信號nFCE,初始化ECC
NFCONT = (1<<4) | (1<<1) | (1<<0)
②操作NAND Flash前,復(fù)位
NFCONT &= ~(1<<1) 發(fā)出片選信號
NFCMD = 0xff reset命令
然后循環(huán)查詢NFSTAT位0,直到等于1,處于就緒態(tài)
最后禁止片選信號,在實際使用時再使能
NFCONT |= 0x2 禁止NAND Flash
③發(fā)出讀命令
NFCONT &= ~(1<<1) 發(fā)出片選信號
NFCMD = 0 讀命令
④發(fā)出地址信號
⑤循環(huán)查詢NFSTAT,直到等于1
⑥連續(xù)讀NFDATA寄存器,得到一頁數(shù)據(jù)
⑦最后禁止NAND Flash片選信號
NFCONT |= (1<<1)