<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 三線制Microware同步串行EEPROM在MCS-51單片機(jī)上的運(yùn)用

          三線制Microware同步串行EEPROM在MCS-51單片機(jī)上的運(yùn)用

          作者: 時(shí)間:2012-02-09 來源:網(wǎng)絡(luò) 收藏

          1 Microware

            Microware同步接口是 NationalSemicondutor公司在其生產(chǎn)的COP系列和HPC系列微控制器上采用的一種,它使用的三根信號(hào)線分別為數(shù)據(jù)輸入線 SI、數(shù)據(jù)輸出線SO和時(shí)鐘信號(hào)線SK。由于Microware總線只需3~4根數(shù)據(jù)線和控制線即可擴(kuò)展具有三線制Microware總線的各種 I/O器件,而并行總線擴(kuò)展方法卻需要8根數(shù)據(jù)線、8~16根地址線和2~3位的控制線,因此,使用三線制Microware串行總線可以簡化電路設(shè)計(jì),提高設(shè)計(jì)的可靠性。

          2 三線制Microware總線的

            是一種可用電氣方法在線擦除和再編程的只讀存儲(chǔ)器,它既有 RAM在聯(lián)機(jī)操作中可讀可改寫的特性,又具有非易失性存儲(chǔ)器ROM在掉電后仍然能保持所存儲(chǔ)的數(shù)據(jù)的優(yōu)點(diǎn)。93C06/46/56/66是采用CMOS工藝制成的分別為64/128/256/512×8位或16/64/128/256×16位8引腳的可支持三線制Microware串行總線的 ,其自定時(shí)寫周期的自動(dòng)擦除時(shí)間不超過10ms,Microchip公司的串行EEPROM的擦除和寫入一個(gè)字節(jié)的時(shí)間可縮短到2ms以下,擦除/寫入周期壽命一般都可達(dá)到10萬次以上,有的產(chǎn)品(如NS公司和Microchip公司的產(chǎn)品)已可達(dá)到100萬次,片內(nèi)寫入的數(shù)據(jù)保存壽命可達(dá) 40年以上。這些三線制Microware總線的EEPROM一般采用單一+5V電源供電,低功耗時(shí)工作電流僅400μA,備用時(shí)為25μA,同時(shí)具有三態(tài)輸出,并可與TTL電平兼容。

            NM93C06/46/56/66是National Semiconductor公司的產(chǎn)品,與其兼容的有Microchip公司的93C06/46/56/66(4.5V~5.5V)、 93LC46/56/66(2.0V~6.0V)、93AA06/46/56/66和Atmel公司的AT93C46/56/66等產(chǎn)品,其中 AT93C66的引腳排列如圖1所示。各引腳說明如下:

            CS:片選信號(hào);
            SK:串行時(shí)鐘輸入信號(hào),同時(shí)也是微處理器與EEPROM之間通信的同步信號(hào),數(shù)據(jù)在它的上升沿鎖定有效;
            DI:數(shù)據(jù)輸入;
            DO:數(shù)據(jù)輸出;
            ORG:Microchip公司產(chǎn)品特有引腳。該引腳接Vcc時(shí),器件的內(nèi)部存儲(chǔ)組織結(jié)構(gòu)以16位為一個(gè)單元;接GND時(shí),器件的內(nèi)部存儲(chǔ)組織結(jié)構(gòu)以8位為一個(gè)單元。

            該芯片有7種指令,其中5種指令集的安排如 表1所列,此外,還有整片寫指令(WRAL-Write All)和整片擦除指令(ERAL-Erase All)。應(yīng)當(dāng)說明的是:在操作碼為00時(shí),為了區(qū)分不同指令,通常借用地址的前兩位來識(shí)別。

            不同型號(hào)的EEPROM有不同的存儲(chǔ)空間,93C66有512字節(jié)的存儲(chǔ)空間,其地址為 A8~A0,在編程時(shí),A8可以作為操作指令字節(jié)的最后一位,如果需要讀93C56中某個(gè)存儲(chǔ)單元(8位)中的數(shù)據(jù),其讀指令為0000110A8,地址碼為××××××××,此時(shí),如果A8為0,則地址為00H…FFH,如果A8為1,則地址為100H…1FFH,而93C06/46/56的存儲(chǔ)空間不超過256個(gè)字節(jié),其A8始終為0。

            有關(guān)93C06/46/56/66的具體操作時(shí)序可參考有關(guān)文獻(xiàn)[1]。

          3 在單片機(jī)上的應(yīng)用

            串行EEPROM技術(shù)是一種非易失性存儲(chǔ)器技術(shù),它是嵌入式控制解決方案中的先進(jìn)技術(shù),可在單片機(jī)應(yīng)用系統(tǒng)中用于數(shù)據(jù)的掉電保護(hù)、在線設(shè)置參數(shù)的存儲(chǔ)、用戶在線編程查表法中的表格存儲(chǔ),以及在微控制器的I/O線較少情況下的應(yīng)用等。

            系列單片機(jī)沒有三線制Microware串行總線接口,當(dāng)它與 93C06/46/56/66等具有三線制Microware串行總線的EEPROM連接時(shí),應(yīng)使用相應(yīng)的軟件來模擬三線制Microware串行總線的操作,其中包括串行時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出。圖2為串行EEPROM芯片AT93C66與AT89C51單片機(jī)的硬件連接圖,圖中的R為上拉電阻, AT89C51的P1.0口用于模擬AT93C66的片選端CS,P1.1口模擬AT93C66的時(shí)鐘輸入端SK,P1.2口模擬它的數(shù)據(jù)輸入端 DI,P1.3口模擬數(shù)據(jù)輸出端DO(DI和DO也可以連接在一起)。當(dāng)在時(shí)鐘的上升沿第一次檢測到CS和DI都為高電平時(shí),可啟動(dòng)AT93C66。在寫操作時(shí),首先使AT89C51的P1.1由低變高并產(chǎn)生一個(gè)脈沖,再在脈沖的上升沿將1 位數(shù)據(jù)(先為高位)從P1.2輸出到AT93C66中,并清P1.1為0,然后再置P1.1為1,隨之P1.2又輸出1位數(shù)據(jù)……依次循環(huán)8次, AT89C51便可完成1個(gè)字節(jié)的輸出操作。在寫入周期完成后,P1.0由高變低,并在保持最少100ns后變?yōu)楦唠娖?,這時(shí)93C66的DO線用來表示芯片的狀態(tài),DO為1表示數(shù)據(jù)已寫入指定的地址中,D0為0則表示正在編程。利用AT89C51可通過查詢P1.3的狀態(tài)來決定是否繼續(xù)操作,讀操作時(shí), P1.1由低變高,AT89C51經(jīng)P1.3從AT93C66讀入1位數(shù)據(jù),并循環(huán)8次,然后讀入1個(gè)字節(jié),下面是根據(jù)操作時(shí)序?qū)懗龅腁T90C51與 93C66連接時(shí)的模擬三線制Microware串行總線的操作源程序。

            首先根據(jù)AT93C66的指令集,規(guī)定如下指令格式:
            指令格式:00001××A8,其中1為起始位,××為操作碼,A8為第9位地址碼;
            讀指令(READ):00001100,即0x0c(如果對(duì)93C66的100H…1FFH地址空間操作,則指令最后一位為1,寫和擦除指令均如此); 寫指令(WRITE):00001010,即0x0a 擦除指令(ERASE):00001110,即0x0e
            擦/寫允許指令(EWEN):0000100110000000,即0x0980,該指令分兩次寫入。

            本程序可用C51語言編寫,具體代碼如下(不包括整片寫和擦除功能):


          上一頁 1 2 下一頁

          關(guān)鍵詞: 三線制 串行總線 EEPROM MCS-51

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();