摘? 要: 介紹了閃速存儲(chǔ)器" title="閃速存儲(chǔ)器">閃速存儲(chǔ)器的使用方法,,并給出了單片機(jī)與閃速存儲(chǔ)器接口和程序設(shè)計(jì)" title="程序設(shè)計(jì)">程序設(shè)計(jì)中應(yīng)注意的關(guān)鍵技術(shù),。
關(guān)鍵詞:
單片機(jī): 閃速存儲(chǔ)器? 公共閃存接口CFI
?
閃速存儲(chǔ)器(Flash Memory)以其集成度高、制造成本低,、使用方便等諸多優(yōu)點(diǎn)廣泛地應(yīng)用于辦公設(shè)備,、通信設(shè)備、醫(yī)療設(shè)備,、家用電器等領(lǐng)域,。利用其信息非易失性和可以在線更新數(shù)據(jù)參數(shù)特性,,可將其作為具有一定靈活性的只讀存儲(chǔ)器使用。
在單片機(jī)應(yīng)用系統(tǒng)中,,經(jīng)常遇到大容量的數(shù)據(jù)存儲(chǔ)問題,。閃速存儲(chǔ)器由于容量大、存儲(chǔ)速度快,、體積小,、功耗低等諸多優(yōu)點(diǎn),而成為應(yīng)用系統(tǒng)中數(shù)據(jù)存儲(chǔ)器的首選,。但是,,由于單片機(jī)的資源有限,而閃速存儲(chǔ)器的種類和工作方式又千差萬別,,因而在單片機(jī)與閃速存儲(chǔ)器的接口電路和程序設(shè)計(jì)中,,有許多關(guān)鍵技術(shù)問題需要解決。
單片機(jī)與閃速存儲(chǔ)器的接口電路應(yīng)注意的問題有:
(1)很多單片機(jī)的工作電壓" title="工作電壓">工作電壓為+5V,,而很多閃速存儲(chǔ)器卻工作在1.8~6V之間,,有些閃速存儲(chǔ)器(Flash Memory)的擦除電壓又工作在12V。
(2)8位的單片機(jī)很多,,而閃速存儲(chǔ)器很多是16位的,。
(3)同一型號的閃速存儲(chǔ)器由于廠家不同,引腳的定義是不一樣的,,例如Intel公司的28F008BV與AMD公司的29LV008有很多引腳是不一樣的,。
單片機(jī)與閃速存儲(chǔ)器的程序設(shè)計(jì)應(yīng)注意的問題有:
(1)不同廠家的閃速存儲(chǔ)器使用不同的操作命令集,軟件要根據(jù)不同廠家的閃速存儲(chǔ)器使用不同的操作命令集,。
(2)很多閃速存儲(chǔ)器內(nèi)部存儲(chǔ)結(jié)構(gòu)和時(shí)間參數(shù)" title="時(shí)間參數(shù)">時(shí)間參數(shù)是不同的。由于閃速存儲(chǔ)器內(nèi)部都是分成不同大小存儲(chǔ)塊,,在對閃速存儲(chǔ)器進(jìn)行擦除操作時(shí),,軟件要根據(jù)不同型號的閃速存儲(chǔ)器調(diào)整被擦除存儲(chǔ)塊的大小等參數(shù)。同時(shí),,由于不同型號的閃速存儲(chǔ)器時(shí)間參數(shù)是不同,,軟件要根據(jù)閃速存儲(chǔ)器的時(shí)間參數(shù)來調(diào)整讀寫和擦除操作的時(shí)間。
針對上面遇到的問題,,我們從硬件和軟件兩個(gè)方面來考慮單片機(jī)與閃速存儲(chǔ)器應(yīng)用系統(tǒng)中應(yīng)解決的關(guān)鍵技術(shù)問題,。
1 單片機(jī)與閃速存儲(chǔ)器硬件接口的關(guān)鍵技術(shù)
生產(chǎn)閃速存儲(chǔ)器的半導(dǎo)體公司主要有美國的Intel、AMD公司和日本的Sharp,、Fujitsu公司,,這四家公司生產(chǎn)的閃速存儲(chǔ)器的市場占有份額相當(dāng)大。表1列出了四家公司生產(chǎn)的主要型號的閃速存儲(chǔ)器的性能指標(biāo),。
?
?
????從表1中可以看出,,不同廠家的閃速存儲(chǔ)器的工作電壓和編程擦除電壓是不一樣的,,同時(shí)數(shù)據(jù)位的長度也是不一樣的。由于目前國內(nèi)應(yīng)用最廣泛的單片機(jī)仍然是8位的MCS-51系列單片機(jī),,16位的單片機(jī)種類比較少,,而且工作電壓在低電壓(2.7~3.6V)的單片機(jī)又是寥寥無幾。能否用市場上常見的普通8位單片機(jī)來設(shè)計(jì)一個(gè)與大多數(shù)閃速存儲(chǔ)器接口的電路呢?答案是肯定的,。我們用普通的8位單片機(jī)AT89C52設(shè)計(jì)了一個(gè)與閃速存儲(chǔ)器TE28F160B3的接口電路,,AT89C52是ATMEL公司生產(chǎn)的與MCS-51系列單片機(jī)兼容的8位單片機(jī),它內(nèi)部有一個(gè)16K 的E2PROM程序存儲(chǔ)器,,它的工作電壓是5V,。TE28F160B3是INTEL公司生產(chǎn)的容量為16M位、數(shù)據(jù)總線寬度為16位的閃存存儲(chǔ)器,,它的工作電壓為2.7~3.6V,。需要指出的是,雖然TE28F160B3的工作電壓為2.7~3.6V,,但是其各引腳的最大工作電壓范圍卻在-0.5V~5.0V,,各引腳高電平最高工作電壓不能超過5.5V,這樣就使得我們可以使用AT89C52來設(shè)計(jì)與TE28F160B3的接口電路,。該接口電路如圖1所示,。
?
?
由于AT89C52是8位單片機(jī),而TE28F160B3是16位數(shù)據(jù)總線,,我們使用了兩片74HC244和兩片74HC373來完成8位和16位的數(shù)據(jù)轉(zhuǎn)換,。當(dāng)AT89C52往TE28F160B3寫數(shù)據(jù)時(shí),首先單片機(jī)將高8位數(shù)據(jù)寫入到鎖存器74HC373-1中,。其中74HC373-1鎖存信號W373由譯碼器GAL16V8輸出,,然后單片機(jī)開始執(zhí)行對TE28F160B3寫數(shù)據(jù)操作,低8位數(shù)據(jù)由AT89C52的P0口直接寫入TE28F160B3,,而鎖存在74HC373-1中的高8位數(shù)據(jù)通過緩沖器74HC244-1寫入到TE28F160B3的DQ8~DQ15總線上,。當(dāng)AT89C52從TE28F160B3讀數(shù)據(jù)時(shí),讀出的高8位數(shù)據(jù)先鎖存到74HC373-2上,,然后通過緩沖器74HC244-2讀入到AT89C52中,。TE28F160B3的存儲(chǔ)容量為16M位,有20根地址線A0~A19,,而AT89C52一共才有16根地址線,。因此利用AT89C52的地址線A15、A14和A13經(jīng)譯碼作為兩片74HC244,、兩片74HC373和TE28F160B3的鎖存信號和片選信號,。這樣地址線只剩下A0~A12,為此利用一片計(jì)數(shù)器74HC4040作為地址線A13~A19,,從而就解決了AT89C52的尋址問題,。
TE28F160B3的供電電源Vcc與AT89C52一樣,,均接+5V直流電源。但是TE28F160B3的編程電壓和擦除電壓Vpp必須接+12V,。
圖1的單片機(jī)使用了市場上常見的AT89C52,,但在設(shè)計(jì)中我們推薦使用寬電壓范圍工作的單片機(jī)AT89LV52和地址譯碼器ATF16LV8,這樣就可以使用+3V左右的供電電源,。
在生產(chǎn)閃速存儲(chǔ)器的半導(dǎo)體公司Intel,、AMD、Sharp和Fujitsu中,,Intel和Sharp公司的閃速存儲(chǔ)器的引腳是一樣的,,AMD和Fujitsu公司的閃存存儲(chǔ)器的引腳是一樣的。所以Intel和AMD公司的閃速存儲(chǔ)器是不能互換的,,如果要互換必須經(jīng)過一個(gè)接口板進(jìn)行轉(zhuǎn)接,。
2 單片機(jī)與閃速存儲(chǔ)器程序設(shè)計(jì)的關(guān)鍵技術(shù)
由于生產(chǎn)閃速存儲(chǔ)器的半導(dǎo)體公司眾多,即使是同一公司的閃速存儲(chǔ)器也是型號眾多,、千差萬別,。為使程序設(shè)計(jì)盡可能地適用于大多數(shù)的閃速存儲(chǔ)器,需注意以下幾個(gè)關(guān)鍵技術(shù),。
2.1 器件自動(dòng)識別
器件自動(dòng)識別要識別出器件使用的命令集,、內(nèi)部陣列結(jié)構(gòu)參數(shù)、電氣和時(shí)間參數(shù)及器件所支持的功能,。器件自動(dòng)識別的方法有兩種:如果閃速存儲(chǔ)器支持CFI功能,,可以直接通過CFI獲得器件的各種參數(shù);如果閃速存儲(chǔ)器不支持CFI功能,可以寫器件識別命令,,然后從器件中讀取產(chǎn)品的生產(chǎn)廠家和器件代碼,,根據(jù)生產(chǎn)廠家和器件代碼從程序中建立的器件參數(shù)表中讀取器件的各種參數(shù)。器件自動(dòng)識別的流程圖如圖2所示,。
?
?
正確識別器件之后,,就可以根據(jù)器件的命令集對器件進(jìn)行各種操作。對閃速存儲(chǔ)器的所有操作都是通過芯片的命令用戶接口CUI實(shí)現(xiàn)的,。通過CUI寫入不同的控制命令,閃速存儲(chǔ)器就從一個(gè)工作狀態(tài)轉(zhuǎn)移到另一個(gè)工作狀態(tài),。其主要的工作狀態(tài)是:讀存儲(chǔ)單元" title="存儲(chǔ)單元">存儲(chǔ)單元操作,、擦除操作和編程操作。
2.2 讀存儲(chǔ)單元操作
在閃速存儲(chǔ)器芯片上電以后,,芯片就處于讀存儲(chǔ)單元狀態(tài),,也可以通過寫入復(fù)位命令進(jìn)入讀存儲(chǔ)單元狀態(tài),讀存儲(chǔ)單元的操作與SRAM相同,。
2.3 擦除操作
在對閃速存儲(chǔ)器芯片編程操作前,,必須保證存儲(chǔ)單元為空,。如果不空,必須對閃速存儲(chǔ)器芯片進(jìn)行擦除操作,。由于閃速存儲(chǔ)器采用模塊分區(qū)的陣列結(jié)構(gòu),,使得各個(gè)存儲(chǔ)模塊可以被獨(dú)立地擦除。當(dāng)給出的地址是在模塊地址范圍之內(nèi)且向命令用戶接口寫入模塊擦除命令時(shí),,相應(yīng)的模塊就被擦除,。要保證擦除操作的正確完成,必須考慮以下幾個(gè)參數(shù):(1)該閃速存儲(chǔ)器芯片的內(nèi)部模塊分區(qū)結(jié)構(gòu),。(2)擦除電壓Vpp,。(3)整片擦除時(shí)間和每個(gè)模塊分區(qū)的擦除時(shí)間參數(shù)。上面三個(gè)參數(shù)在器件識別中獲得,。
2.4 編程操作
閃速存儲(chǔ)器芯片的編程操作是自動(dòng)字節(jié)編程,,既可以順序?qū)懭耄部芍付ǖ刂穼懭?。編程操作時(shí)注意芯片的編程電壓Vpp和編程時(shí)間參數(shù),,這兩個(gè)參數(shù)也可以在器件識別中獲得。
上面,,我們給出了單片機(jī)與閃速存儲(chǔ)器硬件接口電路和軟件編程設(shè)計(jì)中應(yīng)注意的關(guān)鍵技術(shù)問題,。硬件上主要考慮芯片的工作電壓和編程電壓,軟件上要考慮到器件的內(nèi)部結(jié)構(gòu),、使用命令集和時(shí)間參數(shù)等因素,。隨著閃速存儲(chǔ)器器件朝著容量越來越大、工作電壓越來越低,、支持共同的接口標(biāo)準(zhǔn)的方向發(fā)展,,將會(huì)使閃速存儲(chǔ)器硬件接口和軟件編程設(shè)計(jì)越來越容易,也會(huì)使閃速存儲(chǔ)器的應(yīng)用更加廣泛,。
?
參考文獻(xiàn)
1 Intel Products CD-ROM. Intel公司,,1998.5
2 何立民. MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)—系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1990
3 竇振中.單片機(jī)外圍器件實(shí)用手冊-存儲(chǔ)器分冊.北京:北京航空航天大學(xué)出版社,,1998