在眾多的單片機中都集成了 Flash 存儲器系統(tǒng),該存儲器系統(tǒng)可用作代碼和數(shù)據(jù)的存儲。它在整個存儲器中所處的位置在最起始的位置,一般其起始地址從0 開始,如圖1 所示。
圖1 存儲器系統(tǒng)示意圖
Flash 是由一組可獨立擦除的1KB 區(qū)塊所構(gòu)成的,對一個區(qū)塊進行擦除將使該區(qū)塊的全部內(nèi)容復(fù)位為1。
下面這幅圖是 Flash 存儲器的簡單示意圖,此圖形象的體現(xiàn)了Flash 存儲器是由1KB 區(qū)塊構(gòu)成,而且每個區(qū)塊的基地址都固定的,其基地址如圖2 所示。
圖 2 Flash 存儲器示意圖
Flash 存儲器的操作
對 Flash 存儲器的操作一般是進行讀、寫和擦除。Flash 存儲器的擦除必須是以1KB 為單位對齊的地址并指定哪一區(qū)塊被擦除,或者全部擦除。
Flash 存儲器的編程寫入的地址必須以字(4 個字節(jié))為單位對齊,且指明要寫入的具體地址。也就是說可以是任意地址,但必須滿足寫入的地址是字對齊的。
Flash 存儲器的讀取也可以是任意地址的數(shù)據(jù),但必須滿足讀取的地址是字對齊的,否則,讀出的數(shù)據(jù)絕對不正確,結(jié)果也難以預(yù)料。
Flash 存儲器的擦除必須是以1KB 為單位對齊的地址并指定哪一區(qū)塊被擦除,或者全部擦除。也就是說以區(qū)塊是flash 擦除的最小單位。
●執(zhí)行 1-KB 頁的擦除
執(zhí)行 1KB 頁的擦除步驟如下:
(1) 將頁地址寫入FMA 寄存器
(2) 將Flash 寫入匙碼(flash write key)寫入FMC 寄存器,并將ERASE 位置位(寫入0xA4420002)。
(3) 查詢FMC 寄存器直至ERASE 位被清零。
如圖1所示:
圖1 執(zhí)行1KB 頁的擦除步驟示意圖
實例程序如程序清單 1 所示: