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