大容量NAND FLASH在ARM嵌入式系統(tǒng)中的設計與實現(xiàn)
2.3 K9F2808U0C與LPC2210的連接
K9F2808U0C與LPC2210的連接如圖3所示,使用8位數(shù)據(jù)總線D0~D7與K9F2808U0C的I/O0~I/O7引腳相連,使用數(shù)據(jù)總線來發(fā)送地址、數(shù)據(jù)和命令。K9F2808U0C的片選信號由CS3控制,即使用LPC2210的外部存儲器接口的Bank3地址空間,而CLE,ALE信號
分別由A0,A1控制,所以K9F2808U0C的操作地址如下:
3 讀寫操作流程
K9F2808U0C的頁編程操作流程圖。
首先向I/O寫人編程指令80H,然后使用3個時鐘周期寫入目的地址(A0~A23),接著向I/O寫入數(shù)據(jù)。數(shù)據(jù)發(fā)送完成后,寫入指令10H啟動頁編程,此時芯片內(nèi)部的邏輯電路將進行頁擦除和數(shù)據(jù)編程操作。微控制器可以讀狀態(tài)指令70H來讀取狀態(tài)寄存器的值,若D6位為1,則表明寫操作完成。
寫操作完成后,通過讀取狀態(tài)寄存器的D0位判斷編程是否成功,若D0位為0,則表示編程成功;否則表示編程失敗。
K9F2808U0C的塊擦除和讀數(shù)據(jù)操作如圖5所示:對于K9F2808U0C的擦除是以塊為單位,擦除時首先寫入塊擦除命令60H,然后輸入要擦除塊的地址,再寫入指令DoH啟動塊擦除。微控制器可以讀取狀態(tài)指令70H來讀取狀態(tài)寄存器的值,若D6位為1,則表明擦除完成。寫操作完成后,通過讀取狀態(tài)寄存器的D0位來判斷擦除是否成功。
對于K9F2808U0C的讀數(shù)據(jù)操作是以頁為單位,讀數(shù)據(jù)時首先寫入讀數(shù)據(jù)命令00H,然后輸入要讀取頁的地址,接著從數(shù)據(jù)寄存器中讀取數(shù)據(jù),最后進行ECC校驗。
4 在μC/OS實時操作系統(tǒng)下的實現(xiàn)和性能驗證
μC/OS是一個多任務的實時操作系統(tǒng),專為嵌入式應用而設計,可用于各類8位、16位和32位單片機或DSP,已有10余年應用史,其安全性和實時性得到了廣泛的認同,在嵌入式領域發(fā)揮著重要作用。該操作系統(tǒng)公開了他的實時性內(nèi)核源碼,同時提供了較多的應用接口函數(shù)。通過在其實時內(nèi)核的基礎上做少量的修改,便可將對NAND FLASH的操作移植到μC/OS中,利用OSTa-skCreateExt()函數(shù)創(chuàng)建任務并檢查堆??臻g,利用PC-ElapsedInit()初始化時間測量功能。共建立5個任務,分別為空閑任務、統(tǒng)計任務、頁編程任務、塊擦除任務和讀數(shù)據(jù)任務,程序代碼示意如下:
5 結(jié) 語
以Samsung NAND FLASH器件K9F2808U0C為例,通過PHILIPS LPC2210實現(xiàn)對存儲器的器件操作,以μC/OS實時操作系統(tǒng)為平臺完成測試實驗,將得到的實驗結(jié)果與Satnsung公司的K9F2808UOC FLASH Memory手冊進行對比,表明該設計滿足設計要求,達到預期目標。
pos機相關文章:pos機原理
評論