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