FLASH存儲器是一種電擦除與再編程的快速存儲器,又稱為閃速存儲器。它可以分為兩大類:并行Flash和串行FLASH。串行產品能節約空間和成本,但存儲量小,又由于是串行通信,所以速度較慢,開發編程較復雜;并行產品具有存儲量大,速度快,使用方便等特點。ATMEL公司生產的29系列存儲器是一種并行、高性能、大容量閃速存儲器。 AT29C010A的主要特點 ATMEL公司生產的29系列CMOS Flash存儲器分為電池電壓型AT29BV系列(2.7V-3.6V操作),低電壓型AT29LV系列(3.0-3.6V操作),標準電壓型AT29C (5V操作)。AT29C010A是一種5V 在線閃速可電擦除的存儲器,具有掉電保護功能;方便的在線編程能力不需高的輸入電壓,指令系統在5V電壓下即可控制AT29C010A。 AT29C010A具有1M位的存儲空間,分成1024個分區,每一分區有128個字節。從AT29C010A中讀取數據與E2PROM的操作相似,再編程能力是以每一分區為單位的,128字節的數據裝入AT29C010A的同時完成編程。在一個再編程周期里,存儲單元的尋址和128字節數據通過內部鎖存可釋放地址和數據總線,這樣可為其他操作提供地址和數據總線。編程周期開始,AT29C010A會自動擦除分區的內容,然后對鎖存的數據在定時器的作用下進行編程。編程周期的結束是通過查詢I/O7的有效時實現的,一旦編程周期結束,就可開始一個新的讀或編程操作。 AT29C010A具有以下主要特性:可電擦除、可編程的閃速存儲器;快速讀取時間—70ns;內部程序和定時器控制;2個8K的可鎖定的自舉模塊;分區程序操作,擦除、編程單向循環方式,可超過10000次,1024個分區(128字節/分區),內部地址和128位數據鎖存;硬件和軟件數據保護;快速的的分區編程周期—10ms;數據輪詢檢測編程是否結束;低功率消耗—50mA有效電流,100mACMOS維持電流;單一5V±10%電源供電;CMOS和TTL可兼容的輸入輸出;有商用和工業用的溫度可選范圍。 AT29C010A的內部結構如圖1所示。 圖1 AT29C010A內部結構圖 器件操作 讀操作 AT29C010A的存取類似于E2PROM,當和為低電平、WE為高電平時,由A0-A16尋址的內存單元中的數據會讀到I/O0-I/O7輸出管腳;若和為高電平,則I/O0-I/O7輸出管腳為高阻態。這種雙向控制的方式為使用者提供了避免總線競爭的靈活性。 字節裝載 AT29C010A的字節裝載是用于裝入每一分區待編程的128K字節數據或是用于進行數據保護的軟件編碼。每一字節的裝載是通過或各自有低電平,為高電平時實現的,數據是在或在一個上升沿時鎖存的。 編程 AT29C010A 以分區為單位進行再編程,如果某一分區中的一個數據需要改變,那么這一分區中的所有數據必須重新裝入。一旦某一分區中的字節被裝入,這些字節將同時在內部編程時間內進行編程,在此時間內若有數據裝入,則會產生不確定的數據;當第一字節數據裝入AT29C010A之后,接著其余字節將以同一方式依次裝入,字節不需按順序裝載,可以任意方式裝載。每一新裝載的數據若要被編程,必須有(或)由高到低的跳變,這一跳變需在150ms內完成,同時前面字節的(或)由低到高的跳變時間也是150ms。如果一個由高到低的跳變在最后一個由低到高的150ms內沒有被檢測到,那么字節裝載的時間段將結束,此時內部編程時間段開始。A7-A16提供分區地址,分區地址只在每一個(或)由高到低的跳變時才有效;A0-A6提供分區中每一字節的地址。一旦編程時間段開始,在寫周期的維持時間內,讀操作實際上是一種查詢。 軟件數據保護 AT29C010A具有軟件控制數據保護的特性,這一特性在ATMEL公司出廠時沒有開啟,用戶可根據需要開啟或關閉。一旦開啟,在未執行關閉指令之前這一特性始終有效;供電情況的改變不會重新設置這一特性,但需警惕在供電情況改變時隨機的編程周期可能改變這一特性。若要開啟軟件數據保護,必須執行三條針對存放有特殊數據的特殊地址單元的程序指令。當開啟軟件數據保護之后,所需的程序若要出現,也必須執行同樣的三條程序指令。軟件保護使能的軟件算法必須在程序可能執行之前發送到AT29C010A,所有的軟件程序指令要按照分區程序的時序要求進行。在給出軟件數據保護的指令代碼之后便可進行字節的裝載。圖2給出了軟件數據保護使能或撤銷軟件算法的流程圖。 圖2 軟件數據保護使能或撤銷流程圖 硬件數據保護 AT29C010A硬件保護有以下幾種方法: ·VCC自動檢測—如果VCC低于3.8V(典型值),程序的運行將中止。 ·VCC供電延遲—如果VCC達到自動檢測水平,AT29C010A將自動在編程前暫停5ms。 ·編程禁止—當為低電平時,或為高電平時禁止編程。 ·噪聲濾波—當或輸入脈寬少于15ns(典型值),則不啟動編程周期。 數據輪詢 AT29C010A采用數據輪詢來識別程序是否結束。在編程周期內,試圖讀數據的操作將在裝載最后一字節時在I/O7上產生裝載數據完成的信號;一旦編程周期結束,有效的數據將送到輸出端,并且開始下一編程周期,數據輪詢可以在編程周期的任何時間進行。 重復位 另外,除數據輪詢方式外,AT29C010A還提供另一種決定編程、擦除周期的方法。編程和擦除操作周期,連續的試圖從AT29C010A中讀數據的操作在I/O6上出現1和0,一旦編程周期結束,I/O6位將重復并且讀取有效數據;檢測重復位可在編程周期任何時間進行。 應用實例 下面介紹用AT29C010A作為工業智能檢測儀器存儲器的一個實際應用,主要用AT29C010A來存儲一級漢字庫漢字部分、單片機采集處理的數據和儀器設定的一些參數。該儀器采用AT89C52作為中央處理器,AT29C010A作為存儲器,74HC373作為地址鎖存器,點陣式LCD顯示器用作顯示圖形和字符,X1203作為實時時鐘;另外,還有上位機通信電路,繼電器報警電路,按鍵操作電路、指示燈電路及檢測電路等。圖3為工業智能檢測儀器框圖。 圖3 工業智能檢測儀器框圖 硬件接口電路 AT29C010A存儲器與單片機AT89C52的硬件接口電路圖如圖4所示。用AT89C52的 P0口作為存儲器的數據輸入/輸出端,通過P0口經74HC373輸出低8位地址,P2口和P3.0出端作為存儲器A8~A16地址,CE接ALE,WE 接WR(P3.6),OE接RD(P3.7)。 圖4 硬件接口電路圖 軟件注意事項 讀取數據過程類似于普通E2PROM。但在寫入(編程)時,它和普通 E2PROM不同,AT29C010A是采用按扇區編程,每個扇區大小為128個字節。由于每次寫入數據時,整個扇區數據都將重寫,因此必須采用數據緩沖區來存放要寫入的數據(包括該扇區內已存在的數據)。在此應用實例中,采用AT89C52作中央處理器,它具有256字節內部數據存儲器(RAM),用其中128字節(80H_FFH)RAM作為數據緩沖區存放要寫入的數據。圖5為數據寫入流程圖。 圖5 數據寫入流程框圖 在存儲器進入軟件數據保護狀態、塊鎖定狀態或軟件產品標識狀態時,無法對存儲器進行寫入。此時,必須用軟件來退出軟件數據保護狀態、塊鎖定狀態或軟件產品標識狀態 |