天天看點

大容量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。

      ⑦ 有記錄内部擦除操作和程式設計寫入操作完成與否的狀态标志位。

      ⑧ 具有硬、軟體資料保護功能。

      ⑨ 具有位址和資料鎖存功能。

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

      1.3 晶片的操作

      1.3.1 晶片的軟體操作指令序列

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

      普通讀操作非常簡單,與RAM的讀操作類似,當OE和CE信号同時為低電平時,即可從晶片讀出資料。

      晶片的指令操作包括晶片的識别、位元組程式設計、扇區擦除以及整片擦除等。這些操作分别由各自的軟體操作 指令序列來完成,如表1所列。其中,BA為待程式設計位元組的位址,Data為位元組程式設計資料,SAX為待擦除扇區的位址。指令中的位址隻有低15位有效,高4位 可任意設定為“0”或“1”。

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

      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位址,進而構成頁面寄存器,在通路存儲器時,提前将頁面位址作為資料寫入頁面寄存器即可。

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

      根據以上分析可設計出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。

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

      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扇區擦除程式代碼如下:

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

      結 語

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

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