三線制Microware同步串行EEPROM在MCS-51單
介紹了三線制Microware串行總線及其相關(guān)的EEPROM,設(shè)計了該類EEPROM與AT89C51的連接和軟件模擬,并給出C51源程序。
關(guān)鍵詞:三線制,串行總線,EEPROM,MCS-51
1三線制Microware串行總線
三線制Microware同步串行總線接口是松下半導(dǎo)體公司在其生產(chǎn)的COP系列和HPC系列微控制器上采用的一種串行總線。它使用的三根信號線是數(shù)據(jù)輸入線SI、數(shù)據(jù)輸出線SO和時鐘信號線SK。由于三線制Microware總線只需3~4根數(shù)據(jù)線和控制線即可擴展具有三線制Microware總線的各種I/O器件,而并行總線擴展方法要8根數(shù)據(jù)線、8~16根地址線和2~3位控制線,因而使用三線制Microware串行總線可以簡化電路設(shè)計,提高設(shè)計的可靠性。
2具有三線制Microware總線的EEPROM
EEPROM是一種可用電氣方法在線擦除和再編程的只讀存儲器,它既有RAM在聯(lián)機操作中可讀可改寫的特性,又具有非易失性存儲器ROM在掉電后仍然能保持所存儲數(shù)據(jù)的優(yōu)點。93C06/46/56/66是采用CMOS工藝制成的分別為64/128/256/512×8位,或16/64/128/256×16位8引腳的支持三線制Microware串行總線的EEPROM,其自定時寫周期包括自動擦除時間不超過10ms,而Microchip公司的串行EEPROM的擦除和寫入一個字節(jié)的時間可縮短到2ms以下,擦除/寫入周期壽命一般都已達到10萬次以上,有的產(chǎn)品(如NS和Microchip的產(chǎn)品)可達到100萬次,片內(nèi)寫入的數(shù)據(jù)保存壽命在40年以上,采用單一電源+5V供電,低功耗工作電流400μA,備用時為25μA,三態(tài)輸出,與TTL電平兼容。
NM93C06/46/56/66是松下半導(dǎo)體公司的產(chǎn)品,與其兼容的有Microchip公司的93C06/46/56/66(4.5V~5.5V)、93LC/46/56/66(2.0V~6.0V)、93AA06/46/56/66和Atmel公司的AT93C46/56/66,其封裝形式如圖1。
引腳說明:CS:片選信號;SK:串行時鐘輸入信號,是微處理器與EEPROM之間通信的同步信號,數(shù)據(jù)在它的上升沿鎖定有效;
DI:數(shù)據(jù)輸入;
DO:數(shù)據(jù)輸出;
ORG:Microchip公司產(chǎn)品特有引腳,接Vcc時內(nèi)部存儲組織結(jié)構(gòu)是16位為一個單元,接GND時內(nèi)部存儲組織結(jié)構(gòu)是8位為一個單元。
芯片有7種指令,指令集的安排見表1。表1
注意:在操作碼為00時,為了區(qū)分不同指令,借用地址的前兩位來識別。此外還有整片寫指令(WRAL-Write All)和整片擦除指令(ERAL-EraseAll)。
不同型號的EEPROM有不同的存儲空間,93C66有512字節(jié)的存儲空間,其地址為A8…A0,在編程時A8可以作為操作指令字節(jié)的最后一位,如:讀93C66中某個存儲單元(8位)中的數(shù)據(jù),讀指令0000110A8,地址碼××××××××,如果A8為0,則地址00H…FFH,如果A8為1,地址為100H…1FFH。而93C06/46/56的存儲空間不超過256個字節(jié),A8始終為0。
有關(guān)93C06/46/56/66的具體操作時序見參考文獻〔1〕。
3三線制Microware總線EEPROM在MCS┐51單片機上的運用
串行EEPROM技術(shù)是一種非易失性存儲器技術(shù),它是嵌入式控制解決方案中的先進技術(shù),在MCS-51單片機應(yīng)用系統(tǒng)中可用于數(shù)據(jù)的掉電保護、可在線設(shè)置參數(shù)的存儲、用戶在線可編程查表法中的表格存儲、微控制器I/O線較少情況下的應(yīng)用等等場合。
MCS-51系列單片機沒有三線制Microware串行總線接口,它與93C06/46/56/66等具有三線制Microware串行總線的EEPROM連接時,要使用軟件來模擬三線制Microware串行總線的操作,包括串行時鐘、數(shù)據(jù)輸入、數(shù)據(jù)輸出。圖2為串行EEPROM AT93C66與AT89C51單片機的硬件連接圖,R為上拉電阻,AT89C51的P1.0模擬AT93C66的片選端CS,P1.1模擬AT93C66的時鐘輸入端SK,P1.2模擬它的數(shù)據(jù)輸入端DI,P1.3模擬數(shù)據(jù)輸出端DO(DI和DO也可以連接在一起)。當在時鐘的上升沿第一次檢測到CS和DI都為高電平時,啟動AT93C66。寫操作時,AT89C51的P1.1由低變高,產(chǎn)生一個脈沖,在脈沖的上升沿將1位數(shù)據(jù)(先為高位)從P1.2輸出到AT93C66中,清P1.1為0,再置P1.1為1,P1.2又輸出1位數(shù)據(jù)……依次循環(huán)8次,AT89C51完成1個字節(jié)的輸出操作。寫入周期完成后,P1.0由高變低,并保持最少100ns后變?yōu)楦唠娖?,這時93C66的DO線用來表示芯片的狀態(tài),DO為1表示數(shù)據(jù)已寫入指定的地址中,為0則表示正在編程,AT89C51可以查詢P1.3的狀態(tài)來決定是否繼續(xù)操作。讀操作時,P1.1由低變高,AT89C51經(jīng)P1.3從AT93C66讀入1位數(shù)據(jù),循環(huán)8次,讀入1個字節(jié)。根據(jù)操作時序可以寫出AT90C51與93C66連接時的操作程序。
模擬三線制Mircroware串行總線的操作源程序。根據(jù)AT93C66的指令集,規(guī)定如下指令格式:
指令格式:00001××A8,其中1為起始位,××為操作碼,A8為第9位地址碼;
讀指令(READ):00001100,即0x0c(如果對93C66的100H…1FFH地址空間操作,則指令最后一位為1,寫和擦除指令均如此);
寫指令(WRITE):00001010,即0x0a;
擦除指令(ERASE):00001110,即0x0e;
擦/寫允許指令(EWEN):0000100110000000,即0x0980,該指令分兩次寫入;
本程序用C51語言編寫(不包括整片寫和擦除功能)
評論