<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Flash硬件接口和程序設計中的關(guān)鍵技術(shù)

Flash硬件接口和程序設計中的關(guān)鍵技術(shù)

作者: 時(shí)間:2017-06-04 來(lái)源:網(wǎng)絡(luò ) 收藏

閃速存儲器( Memory)以其集成度高、制造成本低、使用方便等諸多優(yōu)點(diǎn)廣泛地應用于辦公設備、通信設備、醫療設備、家用電器等領(lǐng)域。利用其信息非易失性和可以在線(xiàn)更新數據參數特性,可將其作為具有一定靈活性的只讀存儲器使用。

本文引用地址:http://dyxdggzs.com/article/201706/348433.htm

在單片機應用系統中,經(jīng)常遇到大容量的數據存儲問(wèn)題。閃速存儲器由于容量大、存儲速度快、體積小、功耗低等諸多優(yōu)點(diǎn),而成為應用系統中數據存儲器的首選。但是,由于單片機的資源有限,而閃速存儲器的種類(lèi)和工作方式又千差萬(wàn)別,因而在單片機與閃速存儲器的電路和程序設計中,有許多關(guān)鍵技術(shù)問(wèn)題需要解決。

  
單片機與閃速存儲器的電路應注意的問(wèn)題有:

  (1)很多單片機的工作電壓為+5V,而很多閃速存儲器卻工作在1.8~6V之間,有些閃速存儲器( Memory)的電壓又工作在12V。

  (2)8位的單片機很多,而閃速存儲器很多是16位的。

  (3)同一型號的閃速存儲器由于廠(chǎng)家不同,引腳的定義是不一樣的,例如Intel公司的28F008BV與AMD公司的29LV008有很多引腳是不一樣的。

  
單片機與閃速存儲器的程序設計應注意的問(wèn)題有:

  (1)不同廠(chǎng)家的閃速存儲器使用不同的操作命令集,軟件要根據不同廠(chǎng)家的閃速存儲器使用不同的操作命令集。

  (2)很多閃速存儲器內部存儲結構和時(shí)間參數是不同的。由于閃速存儲器內部都是分成不同大小存儲塊,在對閃速存儲器進(jìn)行操作時(shí),軟件要根據不同型號的閃速存儲器調整被存儲塊的大小等參數。同時(shí),由于不同型號的閃速存儲器時(shí)間參數是不同,軟件要根據閃速存儲器的時(shí)間參數來(lái)調整讀寫(xiě)和擦除操作的時(shí)間。

  針對上面遇到的問(wèn)題,我們從硬件和軟件兩個(gè)方面來(lái)考慮單片機與閃速存儲器應用系統中應解決的關(guān)鍵技術(shù)問(wèn)題。


1 單片機與閃速存儲器硬件的關(guān)鍵技術(shù)

  生產(chǎn)閃速存儲器的半導體公司主要有美國的Intel、AMD公司和日本的Sharp、Fujitsu公司,這四家公司生產(chǎn)的閃速存儲器的市場(chǎng)占有份額相當大。表1列出了四家公司生產(chǎn)的主要型號的閃速存儲器的性能指標。

從表1中可以看出,不同廠(chǎng)家的閃速存儲器的工作電壓和擦除電壓是不一樣的,同時(shí)數據位的長(cháng)度也是不一樣的。由于目前國內應用最廣泛的單片機仍然是8位的MCS-51系列單片機,16位的單片機種類(lèi)比較少,而且工作電壓在低電壓(2.7~3.6V)的單片機又是寥寥無(wú)幾。能否用市場(chǎng)上常見(jiàn)的普通8位單片機來(lái)設計一個(gè)與大多數閃速存儲器接口的電路呢?答案是肯定的。我們用普通的8位單片機AT89C52設計了一個(gè)與閃速存儲器TE28F160B3的接口電路,AT89C52是ATMEL公司生產(chǎn)的與MCS-51系列單片機兼容的8位單片機,它內部有一個(gè)16K 的E2PROM程序存儲器,它的工作電壓是5V。TE28F160B3是INTEL公司生產(chǎn)的容量為16M位、數據總線(xiàn)寬度為16位的閃存存儲器,它的工作電壓為2.7~3.6V。需要指出的是,雖然TE28F160B3的工作電壓為2.7~3.6V,但是其各引腳的最大工作電壓范圍卻在-0.5V~5.0V,各引腳高電平最高工作電壓不能超過(guò)5.5V,這樣就使得我們可以使用AT89C52來(lái)設計與TE28F160B3的接口電路。該接口電路如圖1所示。


由于A(yíng)T89C52是8位單片機,而TE28F160B3是16位數據總線(xiàn),我們使用了兩片74HC244和兩片74HC373來(lái)完成8位和16位的數據轉換。當AT89C52往TE28F160B3寫(xiě)數據時(shí),首先單片機將高8位數據寫(xiě)入到鎖存器74HC373-1中。其中74HC373-1鎖存信號W373由譯碼器GAL16V8輸出,然后單片機開(kāi)始執行對TE28F160B3寫(xiě)數據操作,低8位數據由AT89C52的P0口直接寫(xiě)入TE28F160B3,而鎖存在74HC373-1中的高8位數據通過(guò)緩沖器74HC244-1寫(xiě)入到TE28F160B3的DQ8~DQ15總線(xiàn)上。當AT89C52從TE28F160B3讀數據時(shí),讀出的高8位數據先鎖存到74HC373-2上,然后通過(guò)緩沖器74HC244-2讀入到AT89C52中。TE28F160B3的存儲容量為16M位,有20根地址線(xiàn)A0~A19,而AT89C52一共才有16根地址線(xiàn)。因此利用AT89C52的地址線(xiàn)A15、A14和A13經(jīng)譯碼作為兩片74HC244、兩片74HC373和TE28F160B3的鎖存信號和片選信號。這樣地址線(xiàn)只剩下A0~A12,為此利用一片計數器74HC4040作為地址線(xiàn)A13~A19,從而就解決了AT89C52的尋址問(wèn)題。

  TE28F160B3的供電電源Vcc與AT89C52一樣,均接+5V直流電源。但是TE28F160B3的電壓和擦除電壓Vpp必須接+12V。

圖1的單片機使用了市場(chǎng)上常見(jiàn)的AT89C52,但在設計中我們推薦使用寬電壓范圍工作的單片機AT89LV52和地址譯碼器ATF16LV8,這樣就可以使用+3V左右的供電電源。

  在生產(chǎn)閃速存儲器的半導體公司Intel、AMD、Sharp和Fujitsu中,Intel和Sharp公司的閃速存儲器的引腳是一樣的,AMD和Fujitsu公司的閃存存儲器的引腳是一樣的。所以Intel和AMD公司的閃速存儲器是不能互換的,如果要互換必須經(jīng)過(guò)一個(gè)接口板進(jìn)行轉接。


2 單片機與閃速存儲器程序設計的關(guān)鍵技術(shù)

  由于生產(chǎn)閃速存儲器的半導體公司眾多,即使是同一公司的閃速存儲器也是型號眾多、千差萬(wàn)別。為使程序設計盡可能地適用于大多數的閃速存儲器,需注意以下幾個(gè)關(guān)鍵技術(shù)。

2.1 器件自動(dòng)識別

  器件自動(dòng)識別要識別出器件使用的命令集、內部陣列結構參數、電氣和時(shí)間參數及器件所支持的功能。器件自動(dòng)識別的方法有兩種:如果閃速存儲器支持CFI功能,可以直接通過(guò)CFI獲得器件的各種參數;如果閃速存儲器不支持CFI功能,可以寫(xiě)器件識別命令,然后從器件中讀取產(chǎn)品的生產(chǎn)廠(chǎng)家和器件代碼,根據生產(chǎn)廠(chǎng)家和器件代碼從程序中建立的器件參數表中讀取器件的各種參數。器件自動(dòng)識別的流程圖如圖2所示。

正確識別器件之后,就可以根據器件的命令集對器件進(jìn)行各種操作。對閃速存儲器的所有操作都是通過(guò)芯片的命令用戶(hù)接口CUI實(shí)現的。通過(guò)CUI寫(xiě)入不同的控制命令,閃速存儲器就從一個(gè)工作狀態(tài)轉移到另一個(gè)工作狀態(tài)。其主要的工作狀態(tài)是:讀存儲單元操作、擦除操作和操作。

2.2 讀存儲單元操作

  在閃速存儲器芯片上電以后,芯片就處于讀存儲單元狀態(tài),也可以通過(guò)寫(xiě)入復位命令進(jìn)入讀存儲單元狀態(tài),讀存儲單元的操作與SRAM相同。

2.3 擦除操作

  在對閃速存儲器芯片編程操作前,必須保證存儲單元為空。如果不空,必須對閃速存儲器芯片進(jìn)行擦除操作。由于閃速存儲器采用模塊分區的陣列結構,使得各個(gè)存儲模塊可以被獨立地擦除。當給出的地址是在模塊地址范圍之內且向命令用戶(hù)接口寫(xiě)入模塊擦除命令時(shí),相應的模塊就被擦除。要保證擦除操作的正確完成,必須考慮以下幾個(gè)參數:(1)該閃速存儲器芯片的內部模塊分區結構。(2)擦除電壓Vpp。(3)整片擦除時(shí)間和每個(gè)模塊分區的擦除時(shí)間參數。上面三個(gè)參數在器件識別中獲得。

2.4 編程操作

  閃速存儲器芯片的編程操作是自動(dòng)字節編程,既可以順序寫(xiě)入,也可指定地址寫(xiě)入。編程操作時(shí)注意芯片的編程電壓Vpp和編程時(shí)間參數,這兩個(gè)參數也可以在器件識別中獲得。


結語(yǔ):

  
上面,我們給出了單片機與閃速存儲器硬件接口電路和軟件編程設計中應注意的關(guān)鍵技術(shù)問(wèn)題。硬件上主要考慮芯片的工作電壓和編程電壓,軟件上要考慮到器件的內部結構、使用命令集和時(shí)間參數等因素。隨著(zhù)閃速存儲器器件朝著(zhù)容量越來(lái)越大、工作電壓越來(lái)越低、支持共同的接口標準的方向發(fā)展,將會(huì )使閃速存儲器硬件接口和軟件編程設計越來(lái)越容易,也會(huì )使閃速存儲器的應用更加廣泛。



關(guān)鍵詞: 編程 接口 Flash 擦除

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>