基于C8051F340的非易失大容量數(shù)據(jù)存儲(chǔ)方案
4.3 軟件編程
K9WAG08UOA的編程比通常的串、并行存儲(chǔ)器復(fù)雜。實(shí)際應(yīng)用中將頁(yè)編程子程序、塊擦除子程序、讀操作字程序編寫(xiě)成子程序,在需要時(shí)進(jìn)行調(diào)用。由圖5 看出,C8051F340對(duì)K9WAG08UOA的讀寫(xiě)操作均通過(guò)通用I/O進(jìn)行。C805lF340對(duì)I/O端口的操作通過(guò)訪問(wèn)對(duì)應(yīng)的端口數(shù)據(jù)寄存器。向端口寫(xiě)入時(shí),數(shù)據(jù)被鎖存到端口數(shù)據(jù)寄存器中,以保持引腳上的輸出數(shù)據(jù)值不變;讀端口數(shù)據(jù)寄存器將返回端口輸入引腳的邏輯狀態(tài)。具體舉例來(lái)說(shuō),比如P0=0x80,表示Ox80被鎖存到端口數(shù)據(jù)寄存器中,把CE引腳拉低,引腳產(chǎn)生一個(gè)上升沿,數(shù)據(jù)就被寫(xiě)入K9WAG 08UOA中的數(shù)據(jù)/命令寄存器。Ox8O為命令還是數(shù)據(jù)取決于CLE和ALE的狀態(tài),CLE為高,ALE為低,表示Ox80為命令字段;CLE為低,ALE為高,表示Ox80為數(shù)據(jù)。下面對(duì)K9WAG08UOA的頁(yè)編程、頁(yè)讀、塊擦除做詳細(xì)的說(shuō)明。
4.3.1 頁(yè)編程
K9WAG08UOA的頁(yè)編程是以頁(yè)為單位的,它允許在一個(gè)頁(yè)編程周期里寫(xiě)入1~2 112字節(jié)的數(shù)據(jù)。數(shù)據(jù)被加載到數(shù)據(jù)寄存器,然后調(diào)用內(nèi)部寫(xiě)入過(guò)程寫(xiě)入正確的單元。在寫(xiě)入之前必須擦除,否則出錯(cuò)。頁(yè)編程的步驟為:1)寫(xiě)入串行輸入指令0x80;2)分5次寫(xiě)入編程首地址;3)寫(xiě)人數(shù)據(jù),一次最多2 112字節(jié);4)最后寫(xiě)入頁(yè)編程指令0x1O。啟動(dòng)內(nèi)部編程操作。為了反饋寫(xiě)入操作是否成功,K9WAG08UOA的內(nèi)部狀態(tài)寄存器記錄了寫(xiě)入狀態(tài),通過(guò)查詢(xún)寄存器狀態(tài)位O,判斷寫(xiě)入是否成功。
4.3.2 頁(yè)讀操作
K9WAG08UOA讀頁(yè)面的操作過(guò)程為寫(xiě)入0x00到命令寄存器,然后輸入5個(gè)字節(jié)的地址,再寫(xiě)入命令Ox30啟動(dòng)頁(yè)讀操作。選中頁(yè)面的2 112個(gè)字節(jié)的數(shù)據(jù)不是立即輸出到I/0口,而先被復(fù)制到K9WAG08UOA的數(shù)據(jù)寄存器。通過(guò)檢測(cè)R/B引腳狀態(tài)來(lái)判斷復(fù)制操作是否完成。一旦R/B 為高電平后,表示復(fù)制完成。微處理器器控制RE不斷的高低變化,數(shù)據(jù)寄存器中的數(shù)據(jù)將按照在芯片中的地址排列依次鎖存輸出到I/O口,此時(shí)讀取I/O口電平即可。
4.3.3 塊擦除
K9WACO8UOA的擦除操作以塊為單位進(jìn)行。首先寫(xiě)入擦除指令Ox60,然后分3次寫(xiě)入行地址。載入行地址后執(zhí)行擦除確認(rèn)指令0xd0來(lái)初始化內(nèi)部擦除操作。通過(guò)狀態(tài)引腳R/B了解擦除的進(jìn)度,R/B為高電平表示內(nèi)部擦除完成。通過(guò)檢測(cè)狀態(tài)位(I/O0)來(lái)檢查擦除操作是否發(fā)生錯(cuò)誤。
4.4 應(yīng)用舉例
本設(shè)計(jì)的單片機(jī)P1口與K9WAGO8UOA直接連接,其他控制引腳與PO口的引腳連接。為防止存儲(chǔ)器誤操作,在單片機(jī)復(fù)位后要進(jìn)行初始化設(shè)置。 K9WAGO8UOA最大的優(yōu)點(diǎn)是容量大,低功耗。海洋潛標(biāo)在水下工作的時(shí)間通常為3個(gè)月以上,累計(jì)的數(shù)據(jù)量通常上百兆,K9WAG08UOA能夠勝
任這樣的容量要求。在實(shí)驗(yàn)室水池進(jìn)行多次長(zhǎng)時(shí)間測(cè)試,K9WAG08UOA記錄的數(shù)據(jù)可靠。
5 結(jié)束語(yǔ)
利用C805lF340豐富的接口資源,可以方便地?cái)U(kuò)展大容量的存儲(chǔ)器。本文介紹的3種存儲(chǔ)器擴(kuò)展方案采用不同的硬件連接方式,但都具有非易失、低功耗的特點(diǎn),又各有特點(diǎn),可以根據(jù)系統(tǒng)開(kāi)發(fā)的具體需求,進(jìn)行選擇使用。通過(guò)實(shí)踐,總結(jié)以下經(jīng)驗(yàn):1)提高系統(tǒng)存取效率,加入FIFO緩存。數(shù)據(jù)按時(shí)間順序?qū)懭?FIFO,大到一定容量后再由處理器以塊形式讀出。這樣可以避免MCU頻繁進(jìn)入中斷,提高處理器的工作效率。2)在控制印刷電路板面積及布線復(fù)雜度上,使用I2C接口最為簡(jiǎn)潔,SPI接口次之。3)讀寫(xiě)速度上,并口Flash最快,適應(yīng)于微秒級(jí)存??;SPI接口次之,提高時(shí)鐘頻率也可達(dá)到微秒級(jí);I2C接口最慢,適合毫秒級(jí)的訪問(wèn)。4)容量上,NAND架構(gòu)閃存(K9WAG08UOA)的存儲(chǔ)單元采用串行結(jié)構(gòu),一頁(yè)包含若干字節(jié),若干頁(yè)組成儲(chǔ)存塊,這種結(jié)構(gòu)最大的優(yōu)點(diǎn)是使得容量可以做得很大。因此,在容量和存儲(chǔ)密度上,NAND閃存比其他結(jié)構(gòu)的存儲(chǔ)器大。僅從容量考慮時(shí),優(yōu)先選擇NAND架構(gòu)的閃存。
本文引用地址:http://www.ex-cimer.com/article/162599.htm
評(píng)論