OK6410 NandFlash硬件初體驗
一、 首先先來看看核心板的原理圖
我們發(fā)現(xiàn)數(shù)據(jù)線才有8條,而并沒有地址信號,所以該8條線一定是可以傳數(shù)據(jù),也可以傳地址。而地址線肯定又不夠,那么,地址肯定又是多次發(fā)出的。從datasheet可以看到它要發(fā)出5個周期的地址。那怎樣分別是命令還是地址?
CLE——Command Locked Enable 當(dāng)該引腳輸入為高電平,則發(fā)出的是命令
ALE——Address Locked Enable 當(dāng)該引腳輸入為高電平,則發(fā)出的是地址
當(dāng)兩個引腳輸入為低電平時,8條總線上傳輸?shù)氖菙?shù)據(jù)。
CEn為片選信號,因為NandFlash與DDR共用數(shù)據(jù)線,因此需要選中是用DDR還是NandFlash
WE和RE為是讀還是寫。
RNB表示燒寫狀態(tài),當(dāng)該引腳輸出為高電平時,表示已經(jīng)燒寫完成,進(jìn)入ready狀態(tài);當(dāng)為低電平,表忙狀態(tài)。
如何訪問NandFlash?
那就需要參照datasheet的參考時序:
因為6410內(nèi)部集成NandFlash控制器,因此控制NandFlash就很簡單,只需控制Nandflash控制器即可。步驟為:
(1)初始化NandFlash控制器
a. 發(fā)出片選信號——nCE
(2)發(fā)出命令
對于6410,因為有NandFlash控制器,只需把命令寫到NFCMD寄存器,如果沒有NandFlash控制器,需要進(jìn)行以下步驟:
a.先把數(shù)據(jù)驅(qū)動到data0~7數(shù)據(jù)線上
b. 使CLE輸出1
c.使WE從0變?yōu)?
(3)發(fā)出地址
對于6410,因為有NandFlash控制器,只需把命令寫到NFADDR寄存器,如果沒有NandFlash控制器,需要進(jìn)行以下步驟:
a.先把地址驅(qū)動到data0~7數(shù)據(jù)線上
b. 使ALE輸出1
c.使WE從0變?yōu)?
(4)發(fā)數(shù)據(jù)
對于6410,因為有NandFlash控制器,只需把命令寫到NFDATA寄存器,如果沒有NandFlash控制器,需要進(jìn)行以下步驟:
a.先把數(shù)據(jù)驅(qū)動到data0~7數(shù)據(jù)線上
b. 使CLE輸出0
c. 使ALE輸出0
d.使WE從0變?yōu)?
(5)讀數(shù)據(jù)
對于6410,因為有NandFlash控制器,只需把命令寫到NFDATA寄存器,如果沒有NandFlash控制器,需要進(jìn)行以下步驟:
a. 使RE輸出0
b. 等待tRAE
c. NandFlash數(shù)據(jù)驅(qū)動到data0~7,6410便可以讀數(shù)據(jù)
下面看看NandFlash的訪問周期:
其中,行地址表示訪問哪一頁,列地址表示訪問哪個地址,上圖中,3、4、5表示訪問哪一頁,1、2表示訪問這頁的哪個地址。
現(xiàn)在知道怎樣操作NandFlash了,從硬件上也知道它的結(jié)構(gòu),后面我們來寫NandFlash驅(qū)動就更容易了!