<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è) > 嵌入式系統 > 設計應用 > 閃速存儲器AT29C040與單片機的接口設計

閃速存儲器AT29C040與單片機的接口設計

作者: 時(shí)間:2013-10-16 來(lái)源:網(wǎng)絡(luò ) 收藏
1 引言

自1984年第一塊問(wèn)世以來(lái),就以其EPROM的可編程能力和EEPROM的電可擦除性能,以及在線(xiàn)電可改寫(xiě)特性而得到了廣泛的應用和發(fā)展。隨著(zhù)制造工藝和材料的改進(jìn),比EPROM和EEPROM、SRAM及DRAM等存儲器的優(yōu)勢越來(lái)越明顯。

Atmel公司于1998年推出了新一代大容量快閃存儲器,由于它采用了Fowler-Nordheim隧道效應技術(shù),使編程電流比第一代閃存降低了一個(gè)數量級。該芯片只需要+5V電源并支持分頁(yè)編程,此外,還具有硬件數據保護、軟件數據保護、數據查詢(xún)和自舉模塊等其他功能。根據筆者的使用情況,本文對閃速存儲器的結構特點(diǎn)、使用方法等作了簡(jiǎn)要介紹,并以筆者開(kāi)發(fā)的某測試儀器為例說(shuō)明的接口及使用方法。

2 芯片簡(jiǎn)介

2.1 芯片的結構與特點(diǎn)

AT29C040的結構類(lèi)似于SRAM,它有8條數據線(xiàn)(D0~D7)、19條地址線(xiàn)(A0~A18)、3條控制線(xiàn)(/OE、/CE、/WE)以及電源、地線(xiàn)共32個(gè)引腳,具體引腳分布如圖所示。

AT29C040閃速存儲器有如下幾個(gè)特點(diǎn):

(1)用5V單一電源供電,讀、寫(xiě)操作使用同一電源,省去了一個(gè)12V的編程電源VPP ;

(2)編程前不需要附加的擦除操作,在編程期間,擦除操作會(huì )在芯片內部自動(dòng)進(jìn)行;

(3)在單個(gè)編程周期內,每次寫(xiě)一個(gè)扇區的數據,大大縮短了編程時(shí)間。AT29C040的扇區編程時(shí)間為10ms,而其他扇區的編程時(shí)間為數百 ms;

(4)扇區容量小,減少了寫(xiě)數據時(shí)對系統內存資源的要求;

(5)軟件數據保護SDP(Software Data Protect)功能。為了避免人為疏忽或者系統上電、掉電等因素引起對閃速存儲器的誤寫(xiě)操作, AT29C040設置了軟件數據保護功能。其原理是對閃速存儲器寫(xiě)操作前,必須按一定順序送入三個(gè)字節的命令碼,然后才能寫(xiě)入數據,否則數據不能被寫(xiě)入。

2.2 芯片操作

2.2.1 讀寫(xiě)操作

對AT29C040的讀操作非常簡(jiǎn)單,類(lèi)似于SRAM,不再贅述。這里主要討論一下對它進(jìn)行寫(xiě)操作的方法。首先在系統RAM區為AT29C040產(chǎn)生一個(gè)扇區的數據映像,即先將待寫(xiě)入的數據放入 RAM中,接著(zhù)送三字節的命令碼到AT29C040中;然后將事先放在RAM中的數據傳送到AT29C040指定的扇區中;最后還要等待閃速存儲器的寫(xiě)周期時(shí)間(10ms),以便將數據寫(xiě)入存儲器中。其“寫(xiě)” 操作時(shí)序如圖所示。

2.2.2 數據輪詢(xún)

在編程周期期間,如果讀取最后裝入的字節將使I/O7上出現所裝入數據的補碼,一旦編程周期結束,所有輸出線(xiàn)上的真數據有效,可以開(kāi)始下一個(gè)編程周期。數據輪詢(xún)可以在編程周期的任何時(shí)刻開(kāi)始,數據輪詢(xún)時(shí)序如圖3所示。圖中,各時(shí)間參數的含義分別是:tDH是數據保持時(shí)間; tOEH是OE信號保持時(shí)間;tWR 是寫(xiě)信號恢復時(shí)間。

2.3 軟件數據保護

軟件數據保護是通過(guò)一連串地向2個(gè)特殊地址寫(xiě)入3個(gè)特殊數據來(lái)完成的。關(guān)閉軟件數據保護也是通過(guò)一連串地向2個(gè)特殊地址寫(xiě)入6個(gè)特殊數據來(lái)完成。如果不執行這樣的操作,對29C040的訪(fǎng)問(wèn)將不能正常進(jìn)行。該軟件保護算法可由用戶(hù)開(kāi)啟或關(guān)閉。圖4和圖5分別是是軟件保護和關(guān)閉軟件保護的流程圖。

有關(guān)29C040芯片其他特性以及一些相關(guān)參數在其芯片手冊里有很詳細的說(shuō)明,這里不再描述,下面就其應用作一介紹。

3 與的接口

3.1 硬件設計

AT29C040和微處理器接口很簡(jiǎn)便,和我們經(jīng)常擴展的數據存儲器基本相似。稍微有所不同的是,由于它相當于8個(gè)普通的64k字節空間的 RAM,所以地址最高3位分別由3根處理器地址線(xiàn)來(lái)控制,訪(fǎng)問(wèn)的范圍是0 0000~7 FFFF。接口如圖。

在硬件設計中,筆者使用的微處理器是80C51。由于擴展的芯片較多,在各器件的片選時(shí),沒(méi)有使用138譯碼器,而是采用了一個(gè)可編程邏輯器件(PLD)。在圖6中,選中29C040時(shí), P13,P14的狀態(tài)是00,選中ROM和RAM則分別是01和10(為簡(jiǎn)單起見(jiàn),假設擴展芯片僅是以上幾個(gè))。

3.2 軟件設計

在掌握了該芯片的主要特性之后,對它的使用就比較簡(jiǎn)單了。下面我們提供了16進(jìn)制數0X45寫(xiě)到29C040里的C語(yǔ)言程序。

#include

#include

void delay(unsigned int l_time);

void protect();

void select_segment(unsigned char seg);

unsigned char data cdat;

void write_data(unsigned int m_addr,unsigned int s_sector,unsigned int acount);

{

unsigned int data addraa,addrbb; /* addraa 為內存地址,addrbb 為29C020地址 */

unsigned int data i,j;

bit data flaga;

flaga=EA;

EA=0;

addraa=m_addr;

addrbb=s_sector*256;

for(j=acount;j>0;j--)

{

protect();

for(i=0;i256;i++)

{

P14=0;P13=1;

cdat=XBYTE[addraa];

select_segment(s_sector/256);

/*s_sector 是256的整數倍*/

XBYTE[addrbb]=cdat;

P14=0;P13=1;

addraa++;

addrbb++;


}

s_sector++;

delay(1000);

}


P14=0;P13=1;

EA=flaga;

}

/* 選擇 29C040 段地址(高位地址),

seg 為段地址*/

void select_segment(unsigned char seg)

{

switch(seg)

{

case 0: P1=0x00;_nop_(); break; /* 29c040 a18a17a16= 000 00000-0ffff */

case 1: P1=0x01;_nop_(); break; /* 29c040 a18a17a16= 001 10000-1ffff */

case 2: P1=0x02;_nop_(); break; /* 29c040 a18a17a16= 010 20000-2ffff */

case 3: P1=0x03;_nop_(); break; /* 29c040 a18a17a16= 011 30000-3ffff */

case 4: P1=0x04;_nop_(); break; /* 29c040 a18a17a16= 100 40000-4ffff */

case 5: P1=0x05;_nop_(); break; /* 29c040 a18a17a16= 101 50000-5ffff */

case 6: P1=0x06;_nop_(); break; /* 29c040 a18a17a16= 110 60000-6ffff */

case 7: P1=0x07;_nop_(); break; /* 29c040 a18a17a16= 111 70000-7ffff */

}

}

void protect()

{

select_segment(0);/*必須寫(xiě)到第0段*/

XBYTE[0x5555]=0xaa;

XBYTE[0x2aaa]=0x55;

XBYTE[0x5555]=0xa0;

P14=0;P13=1;

}

void delay(unsigned int l_time)/*寫(xiě)完一個(gè)扇區后延時(shí)*/

{

unsigned int data lp;/* 4ms */

for(lp=0;lp

_nop_();

}

main()

{

unsigned int data i;

P14=0;P13=1;

for(i=0;i256;i++)

{XBYTE[0x0200+i]=0x45;}

write_data(0x0200,0,1);

delay(1000);

while(1);

}

4 結束語(yǔ)

AT29C040在中的應用不僅能使用戶(hù)快速地實(shí)現所需功能,而且電擦除的方式為程序和數據的存儲和更新提供了方便,隨著(zhù)閃速存儲器器件朝著(zhù)容量越來(lái)越大、工作電壓越來(lái)越低、支持共同的接口標準的方向發(fā)展,閃速存儲器硬件接口和軟件設計將越來(lái)越容易。


參考文獻:

[1] 孫涵芳,徐愛(ài)卿.MCS51/96系列單片機原理及應用[M].北京:北京航空航天大學(xué)出版社,1988.

[2] 余永權.ATMEL FLASH 單片機原理及應用[M].北京:電子工業(yè)出版社,1997.

[3] 竇振中. 單片機外圍器件實(shí)用手冊——存儲器分冊[M]. 北京:北京航空航天大學(xué)出版社,1998.

[4] AT29C040數據手冊.www.atmel.com.

[5].AT29C040datasheethttp://www.dzsc.com/datasheet/AT29C040_809355.html.

[6].EPROMdatasheethttp://www.dzsc.com/datasheet/EPROM_1128137.html.

[7].80C51datasheethttp://www.dzsc.com/datasheet/80C51_103447.html.

[8].P13datasheethttp://www.dzsc.com/datasheet/P13_2043489.html.

[9].29C020datasheethttp://www.dzsc.com/datasheet/29C020_952547.html.

存儲器相關(guān)文章:存儲器原理




關(guān)鍵詞: 閃速存儲器 AT29C040 單片機

評論


相關(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>