基于ARM9內(nèi)核Processor外部NANDFLASH的控制實現(xiàn)
NANDFLASH的讀寫操作以page方式進行,一次讀寫均為一個page,erase方式以block方式進行。這種方式,使其讀寫速度大大提高。
在時序方面,以讀操作為例,其時序如圖3所示。
操作過程主要分為以下幾個步驟:
(1)發(fā)送讀操作命令
CE有效,CLE有效,WE有效,I/O0~I/O8上面數(shù)據(jù)為command代碼數(shù)據(jù)。
(2)發(fā)送地址數(shù)據(jù)(需要讀取的FLASH地址)
CE有效,ALE有效,WE有效,I/O0~I/O8上面為所需地址數(shù)據(jù)。由于地址數(shù)據(jù)較多,所以需要分幾次依次發(fā)送。每次發(fā)送都需要產(chǎn)生WE信號以將其寫入NANDFLASH芯片。
(3)等待R/B信號,最后讀出數(shù)據(jù)
在最后一個地址數(shù)據(jù)寫入FLASH之后,R/B信號即變低。等待芯片完成整個page數(shù)據(jù)讀取之后,R/B信號變高。此時,CE有效,ALE,CLE均拉低,依次產(chǎn)生RE信號,從I/O0~I/O8讀取出所需數(shù)據(jù)。
對于寫操作和擦除操作,其基本原理相同,只是信號順序略有改變,就不再贅述。
由于使用了CPU地址線A1,A2連接CLE,ALE引腳,對CPU低2、3位地址的讀寫操作就意味著對NANDFLASH進行讀寫命令/數(shù)據(jù)操作。如果此程序工作在OS上的application層的話,MMU已經(jīng)屏蔽程序?qū)Φ讓佑布闹苯釉L問,所以需要對MMU進行設定,為NANDFLASH開辟一塊。Memory映像區(qū)域,這樣就可以通過OS對底層的NANDFLASH進行操作。以該系統(tǒng)為例,使用CPU的CS1引腳控制NANDFLASH的CE信號,先將其映像為0x24000000地址,此時,對0x24000000地址讀寫即對NANDFLASH芯片進行數(shù)據(jù)讀寫,而對Ox24000002地址寫數(shù)據(jù),使CPU的A1地址引腳為高,即對NANDFLASH發(fā)送command命令,同樣,對0x24000004地址寫數(shù)據(jù),即對NANDFLASH發(fā)送address數(shù)據(jù)。
在對NANDFLASH發(fā)送命令/數(shù)據(jù)之后,由于程序運行速度比FLASH芯片快很多,需要在每一次操作之后插入若干等待周期,并利用CPU的GPIO檢測芯片R/B信號。直至芯片完成本次操作再進行下一步操作。
需要注意的是,在對FLASH發(fā)送命令數(shù)據(jù)過程中的等待,沒有反饋信號可以檢測,只能通過反復調(diào)試確定其所需等待時間。
在設計中采用CPU的CS1信號對NANDFLASH進行CE(片選)控制。此處不能采用CPU的GPIO進行控制,因為在嵌入式設備的ARMCPU中,CPU本身采用了指令、數(shù)據(jù)自動預讀的高速緩存技術(shù)和流水線技術(shù)。因此,當程序在NORFLASH里面直接運行的時候(目前絕大多數(shù)嵌入式系統(tǒng)采用的方式),在運行任何兩段相連的代碼中間,CPU都有可能對NORFLASH進行指令或數(shù)據(jù)的預讀操作,從而產(chǎn)生大量的RE,OE信號和地址信號。如果使用GPIO控制NANDFLASH的CE信號則無法避免這種影響。CPU的CS1信號是由CPU內(nèi)部自動產(chǎn)生,因此在CPU預讀期間,CS1信號可以有效屏蔽NANDFLASH芯片。并且,由于NANDFLASH芯片支持CEdon'tcare模式,在CE無效的情況下,芯片本身的工作狀態(tài)并不會被干擾,由此保證了NORFLASH和NANDFLASH在同一CPU界面中互不干擾的穩(wěn)定運行。對于CS1信號的寬度等參數(shù),也需要在實驗中進行調(diào)節(jié),才能保證整個系統(tǒng)快速穩(wěn)定的運行。
4 NANDFLASH在系統(tǒng)中的讀寫速度
經(jīng)過測試在該系統(tǒng)平臺中,OS為PalmOS5.4;CPU使用PXA270312MHz;SDRAM使用Samsung的16bdatawidthHYB25L256160AF-7.5@104MHz;NANDFLASH選用SAMSung128MB8bI/ONANDFLASHK9F1G08U0A達到在文件系統(tǒng)下面的讀/寫的速度為3MB/s,擦除的速度為65MB/s,在手持式設備中運用性能已經(jīng)夠了。
電機保護器相關(guān)文章:電機保護器原理
評論