大容量NOR Flash與8位單片機的接口設計

      引 言

      Flash存儲器又稱閃速存儲器,是20世紀80年代末逐漸發展起來的一種新型半導體不揮發存儲器。它兼有RAM和ROM的特點,既可以在線擦除、改寫,又能夠在掉電後保持數據不丟失。

      NOR Flash是Flash存儲器中最早出現的一個品種,與其他種類的Flash存儲器相比具有以下優勢:可靠性高、隨機讀取速度快,可以單字節或單字編程, 允許CPU直接從芯片中讀取代碼執行等。因此NOR Flash存儲器在嵌入式系統應用開發中佔有非常重要的地位。本文以SST公司的NOR Flash芯片SST39SF040和MCS-51單片機爲例,針對大容量NORFlash在8位低檔單片機中應用的特殊性,詳細介紹了其接口硬件和接口 軟件的設計方法。

      1 SST39SF040芯片介紹

      SST39SF040是SST公司最近推出的一種基於SuperFlash技術的NOR Flash存儲器,屬於SST公司並行閃速存儲器系列;適用於需要程序在線寫入或大容量、非易失性數據重複存儲的場合。

      1.1 芯片內部功能結構和外部引腳

      圖1是SST39SF040的內部功能結構框圖,由Super-Flash存儲單元、行譯碼器、列 譯碼器、地址緩衝與鎖存器、輸入/輸出緩衝和數據鎖存器以及控制邏輯電路等部分組成。圖2是其外部引腳分佈圖,其中A18~A0爲地址線,CE爲芯片選通 信號,OE可作爲讀信號,WE爲寫信號,DQ7~DQ0爲數據線。

      1.2 芯片的主要特性

      ① 容量爲512 KB,按512K×8位結構組織。

      ② 採用單一的5 V電源供電,編程電源VPP在芯片內部產生。

      ③ 芯片可反覆擦寫100 000次,數據保存時間爲100年。

      ④ 工作電流典型值爲10 mA,待機電流典型值爲30μA。

      ⑤ 扇區結構:扇區大小統一爲4 KB。

      ⑥ 讀取、擦除和字節編程時間的典型值:數據讀取時間爲45~70 ns;扇區擦除時間爲18 ms,整片擦除時間爲70 ms;字節編程時間爲14μs。

      ⑦ 有記錄內部擦除操作和編程寫入操作完成與否的狀態標誌位。

      ⑧ 具有硬、軟件數據保護功能。

      ⑨ 具有地址和數據鎖存功能。

070830185219750.jpg

      1.3 芯片的操作

      1.3.1 芯片的軟件操作命令序列

      SST39SF040的軟件操作可以分成兩類:普通讀操作和命令操作。

      普通讀操作非常簡單,與RAM的讀操作類似,當OE和CE信號同時爲低電平時,即可從芯片讀出數據。

      芯片的命令操作包括芯片的識別、字節編程、扇區擦除以及整片擦除等。這些操作分別由各自的軟件操作 命令序列來完成,如表1所列。其中,BA爲待編程字節的地址,Data爲字節編程數據,SAX爲待擦除扇區的地址。命令中的地址只有低15位有效,高4位 可任意設置爲“0”或“1”。

070830185220041.jpg

      SST39SF040的軟件操作命令序列實際上是由一個或多個總線寫操作組成的。以 SST39SF040的扇區擦除爲例,其操作過程包括3個步驟:第1步,開啓擦除方式,用表1中給出的第1至第5週期的總線寫操作來實現;第2步,裝載扇 區擦除命令(30H)和待擦除扇區的地址,用其對應的第6週期的總線寫操作來實現;第3步,進行內部擦除。內部擦除時間最長爲25 ms。

      總線寫操作時,OE必須保持爲高電平,CE和WE應爲低電平。地址和數據的鎖存由CE和WE兩個信號的邊沿進行控制。它們當中後出現的下降沿將鎖存地址,先出現的上升沿將鎖存數據。

      1.3.2 字節編程和擦除操作的狀態檢測

      芯片在進行內部字節編程或擦除操作時都需要花費一定的時間,雖然可以採用固定的延時來等待這些操作 的完成,但爲了優化系統的字節編程和擦除操作時間,以及時判斷內部操作的完成與否,SST39SF040提供了兩個用於檢測的狀態位,即跳變位DQ6和數 據查詢位DQ7。在芯片進行內部操作時,只要根據圖3的流程對DQ6或者DQ7進行查詢就能及時作出判斷。

      2 SST39SF040與MCS-51的接口設計

      2.1 硬件設計

      硬件設計就是搭建合適的接口電路,將SST39SF040連接到MCS-51的系統總線上。根據 SST39SF040和MCS-51系列單片機的結構特性,我們發現SST39SF040的數據線和讀、寫信號線可以很容易地連接到MCS-51的系統總 線上,所以要考慮的主要問題是SST39SF040地址線的連接。由於其容量已經超出了MCS-51的尋址範圍,19根地址線無法全部連接到MCS-51 的地址總線上,因此必須在該系統中進行進一步的存儲器擴展。存儲器擴展通常可利用單片機空閒的I/O口線作爲頁面地址輸出引腳來實現。但是許多應用系統當 中,單片機的I/O口線都是非常緊張的,在沒有多餘的I/O口線時,頁面地址就必須提前從數據總線輸出並存放在鎖存器中備用。具體做法是:將鎖存器直接掛 在數據總線上,爲其安排一個I/O地址,從而構成頁面寄存器,在訪問存儲器時,提前將頁面地址作爲數據寫入頁面寄存器即可。

070830185220142.jpg

      根據以上分析可設計出SST39SF040與MCS-51之間的接口電路,如圖4所示。本系統中, 將512 KB的存儲器分爲32頁面,每頁大小爲16 KB。由此可得,頁面地址需要5位,頁內偏移量需要14位。頁面地址的給出是在進行存儲器訪問之前完成的,具體的方法是:用一條“MOVX"’命令將頁面 地址輸出到鎖存器74LS374中,再由74LS374將頁面地址保持在存儲器的地址引腳A14~A18上。頁內偏移量則直接在存儲器的讀寫命令中給出, 執行命令時,低8位地址A0~A7從P0口輸出到74LS373中保持;地址A8~A13則由單片機的P2.0~P2.5直接提供。以上分時輸出的地址信 號A0~A18將在讀/寫控制信號開始作用後,同時有效,以實現對SST39SF040的512KB全地址空間的訪問。P2.6和P2.7分別用作 SKT39SF040和鎖存器74LS374的片選信號,SST39SF040的片選信號地址範圍是8000H~BFFFH,74LS374的片選信號地 址範圍是4000H~7FFFH。

070830185220233.jpg

      2.2 軟件設計

      軟件設計就是編寫對SST39SF040的操作程序,包括字節讀出、扇區或整片擦除以及字節編程等。下面給出第1個扇區的擦除程序,其中DELAY25爲25 ms延時子程序,其他操作程序可參照編寫。

      程序編寫過程中的難點是,如何將SST39SF040中待訪問的單元地址進行分解並對應到讀寫命令 中去。以扇區擦除操作的第1個命令爲例,該命令的功能是將數據AAH寫入地址5555H中。對於地址5555H,其最高5位A18~A14是01H,低 14位A13~A0爲1555H。最高5位地址決定的頁面號必須先作爲數據寫入鎖存器74LS374中,再將數據AAH寫入該頁中由低14位地址決定的單 元。寫入頁面號時,指令中的地址可在4000H~7FFFH範圍內任選一個,即選中鎖存器74LS374;寫人數據AAH時,指令中的地址可由低14位地 址1555H加上8000H得到,其值爲9555H。

      第1扇區擦除程序代碼如下:

070830185220314.jpg
070830185220375.jpg

      結 語

      本文從硬件和軟件兩個方面對大容量NOR Flash存儲器與8位單片機的接口技術進行了分析、探討,給出了具體的設計方案。其思想和方法對嵌入式系統的應用設計具有較高的參考價值,筆者已將它應用到一款考勤機產品的設計開發當中。



原文地址:http://www.mcuol.com/tech/109/17233.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章