串行EEPROM X24128及其與AT89C51的接口及編程
4.1按字節(jié)寫時(shí)序
給X24128內(nèi)部存儲(chǔ)陣列中未加鎖定保護(hù)部分的某一單元寫一個(gè)字節(jié)的數(shù)據(jù)時(shí),首先設(shè)置開始狀態(tài),再依次發(fā)送器件地址和數(shù)據(jù)地址的字節(jié)1和字節(jié) 0,X24128每次接收到一個(gè)8位地址字節(jié)后,利用第9個(gè)時(shí)鐘脈沖發(fā)出應(yīng)答信號(hào)。CPU接收到第3個(gè)應(yīng)答信號(hào)后,再發(fā)送8位數(shù)據(jù)和接收應(yīng)答信號(hào),最后設(shè)置結(jié)束狀態(tài)。X24128接收到結(jié)束信號(hào)后,開始將接收到的數(shù)據(jù)寫入EEPROM陣列的內(nèi)部寫過程。在進(jìn)行內(nèi)部寫過程中,對(duì)外部輸入的任何信號(hào)都不作反應(yīng),SDA管腳輸出高阻態(tài)。
4.2按頁(yè)寫時(shí)序
由CPU給X24128寫數(shù)據(jù)時(shí),可以按頁(yè)寫,每頁(yè)包括32字節(jié),按頁(yè)寫的方式在開始時(shí)如同按字節(jié)寫,只是每次寫完一個(gè)字節(jié)數(shù)據(jù)后,X24128內(nèi)部地址指針自動(dòng)加1后才可以繼續(xù)寫數(shù)據(jù),無(wú)需再次寫入地址。本頁(yè)的最高地址寫入后,地址指針自動(dòng)返回到本頁(yè)的最低地址,如果繼續(xù)寫入數(shù)據(jù),則將已寫過的數(shù)據(jù)覆蓋,只有發(fā)送給X24128結(jié)束信號(hào)后,X24128才終止接收數(shù)據(jù),開始進(jìn)行內(nèi)部寫過程。
4.3讀當(dāng)前地址數(shù)據(jù)
如果要讀X24128內(nèi)部地址指針當(dāng)前所指單元的數(shù)據(jù),只要發(fā)送給X24128開始信號(hào)、器件地址(位為1)和接收到應(yīng)答信號(hào)后,即可接收X24128所發(fā)送的當(dāng)前地址的數(shù)據(jù)。接收完畢,發(fā)送結(jié)束信號(hào)。X24128發(fā)送完數(shù)據(jù)后,地址指針自動(dòng)加1。
4.4讀取任一地址的數(shù)據(jù)
先給X24128發(fā)送所要讀取數(shù)據(jù)的地址,使其成為當(dāng)前地址指針?biāo)傅刂?。其中器件地址的位寫?,再按讀當(dāng)前地址數(shù)據(jù)的方式讀取數(shù)據(jù)。
4.5連續(xù)讀取數(shù)據(jù)
連續(xù)讀取數(shù)據(jù)如同讀取任一地址數(shù)據(jù),將所要連續(xù)讀取數(shù)據(jù)的首位地址設(shè)置成當(dāng)前地址,在接收完第一字節(jié)的數(shù)據(jù)后,不是發(fā)送結(jié)束信號(hào),而是發(fā)送應(yīng)答信號(hào),X24128接收到應(yīng)答信號(hào)后繼續(xù)發(fā)送第二字節(jié)數(shù)據(jù)。只要CPU每次接收完一個(gè)字節(jié)的數(shù)據(jù)后所發(fā)送的是應(yīng)答信號(hào),X24128就會(huì)繼續(xù)發(fā)送下一字節(jié)的數(shù)據(jù),當(dāng)發(fā)送完整個(gè)存儲(chǔ)陣列的最高地址的數(shù)據(jù)后,地址指針將返回到0000H單元。如果繼續(xù)發(fā)送應(yīng)答信號(hào),X24128將從0000H單元開始繼續(xù)發(fā)送數(shù)據(jù)。只有接收到結(jié)束信號(hào)才終止發(fā)送。
X24128與AT89C51的接口電路如圖2所示。在2線總線上最多可并接8片X24128。以P1.0口線作為時(shí)鐘信號(hào)輸出,P1.1口線作為數(shù)據(jù)輸入、輸出。總線接4.7kΩ的上拉電阻。下面以AT89C51寄存器R2的數(shù)據(jù)寫入X24128(1)的1000H地址中為例,假設(shè)1000H地址未加寫保護(hù),則編程如下:
評(píng)論