|
;操作檢測(cè) .endm
③讀數(shù)據(jù)命令。上電或內(nèi)部編程、擦除操作結(jié)束后就進(jìn)入讀數(shù)據(jù)狀態(tài),寫入要讀取的地址即可讀出該地址的數(shù)據(jù)。
、復(fù)位命令。它使存儲(chǔ)器復(fù)位,進(jìn)入讀數(shù)據(jù)狀態(tài),向任何一個(gè)地址寫入數(shù)據(jù)0xF0就能使Flash存儲(chǔ)器復(fù)位。在進(jìn)行編程、擦除之前,都應(yīng)先復(fù)位,在編程或擦除等正常操作中出現(xiàn)錯(cuò)誤時(shí)也要復(fù)位。復(fù)位程序如下: _RESETFlash .macro _WRITECOMMAND #8001H,#0F0H ;向8001H寫入0F0H使Flash復(fù)位 RPT #12 NOP .endm
1.3 Flash的操作檢測(cè)
Flash內(nèi)部的編程或擦除算法可自動(dòng)完成編程或擦除操作,但我們必須了解其內(nèi)部的操作檢測(cè)機(jī)制,以便知道操作是否完成或正確。常用檢測(cè)的狀態(tài)位有:跳變位(DQ6)、超時(shí)標(biāo)志位(DQ5)、數(shù)據(jù)查詢位(DQ7)和Ready/Busy引腳(RY/)。檢測(cè)的方法有三種。第一種是判斷引腳RY/的狀態(tài),在編程、擦除或擦除掛起操作過(guò)程中,RY/引腳一直為“0”,操作完成后變?yōu)?/font>“1”。第二種是檢測(cè)跳變位DQ6,在編程或擦除時(shí)對(duì)任何地址進(jìn)行連續(xù)的讀均引起DQ6連續(xù)跳變,直至操作結(jié)束才停止跳變。最后一種是使用數(shù)據(jù)線的DQ7、DQ5:DQ7位在編程或擦除過(guò)程中輸出的數(shù)是寫入該位數(shù)據(jù)的反碼,當(dāng)操作完成時(shí)輸出才變?yōu)閷懭朐撐坏臄?shù)據(jù);DQ5的狀態(tài)為“1”時(shí)表示操作超時(shí),此時(shí)應(yīng)再讀一次DQ7的狀態(tài),若DQ7輸出仍不是寫入的數(shù)據(jù),則操作失敗,復(fù)位Flash,其流程如圖1所示。
檢測(cè)程序如下: _JUDGE .macro par,pdr;檢測(cè)宏程序。par是編程地址寄存 ;器,pdr是存放編程數(shù)據(jù)的寄存器
|