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