AT24C256在單片機(jī)系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1引言
AT24C256 是ATMEL公司256kbit串行電可擦的可編程只讀存儲(chǔ)器,8引腳雙排直插式封裝,具有結(jié)構(gòu)緊湊、存儲(chǔ)容量大等特點(diǎn),可以在2線總線上并接4片該 IC,特別適用于具有高容量數(shù)據(jù)儲(chǔ)存要求的數(shù)據(jù)采集系統(tǒng)。本文將介紹該IC的工作原理和與單片機(jī)的軟硬件接口。
2AT24C256的主要特性及引腳說(shuō)明:
2.1主要特性——芯片有3種工作電壓;
5.0V(VCC=4.5V~5.5V)
2.7V(VCC=2.7V~5.5V)
1.8V(VCC=1.8V~3.6V)
——內(nèi)部可以組成32k×8存儲(chǔ)單元;
——2線串行接口;
——斯密特觸發(fā),濾波輸入抑制噪聲;
——雙向數(shù)據(jù)傳送協(xié)議;
——硬件寫保護(hù)引腳和軟件數(shù)據(jù)保護(hù)功能;
——具有64字節(jié)頁(yè)寫模式。
2.2AT24C256引腳說(shuō)明
其引腳排列如圖1所示。
A0、A1:地址選擇輸入端。在串行總線結(jié)構(gòu)中,可以連接4個(gè)AT24C256IC。用A0、A1來(lái)區(qū)分各IC。A0、A1懸空時(shí)為0。
SCL:串行時(shí)鐘輸入。上升沿將SDA上的數(shù)據(jù)寫入存儲(chǔ)器,下降沿從存儲(chǔ)器讀出數(shù)據(jù)送SDA上。
SDA:雙向串行數(shù)據(jù)輸入輸出口。用于存儲(chǔ)器與單片機(jī)之間的數(shù)據(jù)交換。
WP:寫保護(hù)輸入。此引腳與地相連時(shí),允許寫操作;與VCC相連時(shí),所有的寫存儲(chǔ)器操作被禁止。如果不連,芯片內(nèi)部下拉到地。
VCC:電源。
GND:地。
NC:空。
3AT24C256的工作原理
AT24C256內(nèi)部有512頁(yè),每一頁(yè)為64字節(jié),任一單元的地址為15位。地址范圍0000H~7FFFH。
3.1芯片工作狀態(tài)
1)時(shí)鐘和數(shù)據(jù)傳送
一般情況下,SDA被外部的設(shè)備拉到高,只有當(dāng)SCL為低電平時(shí),SDA上的數(shù)據(jù)變化,表示要傳送數(shù)據(jù)。SCL為高時(shí)SDA變化表示狀態(tài)變化。
2)開(kāi)始狀態(tài)(START)
當(dāng)SCL為高時(shí),SDA由高到低表示數(shù)據(jù)傳送開(kāi)始,這一狀態(tài)必須在所有命令之前。
3)結(jié)束狀態(tài)(STOP)
當(dāng)SCL為高時(shí),SDA由低到高表示數(shù)據(jù)傳送結(jié)束狀態(tài)。
4)應(yīng)答狀態(tài)(ACK)
所有的地址和數(shù)據(jù)都是以8位的形式串行傳送給存儲(chǔ)器或從存儲(chǔ)器讀出的。存儲(chǔ)器在第9個(gè)時(shí)鐘周期SDA發(fā)零信號(hào)表示已經(jīng)收到8位數(shù)據(jù)。見(jiàn)圖2總線協(xié)議圖。
3.2設(shè)備選址
EEPROM 進(jìn)入開(kāi)始狀態(tài)后,需要一個(gè)8位的地址字來(lái)選擇芯片進(jìn)行讀寫。設(shè)備地址字由5位0、1組成的命令字和兩位地址選擇位A1、A0和一位讀/寫操作位構(gòu)成。對(duì)于 AT24C256,命令字為“10100”,同一串行總線上可以連接4個(gè)設(shè)備,由地址線A1,A0加以區(qū)分。如只有一個(gè)AT24C256,A1,A0都取 0。最低位為1表示讀操作,0表示寫操作。10100A1A0R/W
4AT24C256的讀寫方式和5工作時(shí)序
4.1寫操作
有兩種方式:寫字節(jié)和寫頁(yè)。
1)寫字節(jié)
向 AT24C256發(fā)送設(shè)備地址字并接到應(yīng)答信號(hào)后,需要發(fā)送2個(gè)8位地址來(lái)選擇要寫數(shù)據(jù)的地址,AT24C256接收到這個(gè)地址,應(yīng)答一個(gè)零信號(hào),然后根據(jù)時(shí)鐘寫8位數(shù)據(jù)到AT24C256。存儲(chǔ)器接收到數(shù)據(jù)后返回一個(gè)應(yīng)答信號(hào)。寫數(shù)據(jù)結(jié)束,AT24C256進(jìn)入內(nèi)部計(jì)時(shí)的寫周期。在寫循環(huán)過(guò)程中所有的輸入都不能進(jìn)行,直到寫結(jié)束,EEPROM才響應(yīng),寫字節(jié)過(guò)程如圖2所示。
2)寫頁(yè)
AT24C256 具有64字節(jié)作為一頁(yè)的寫頁(yè)功能,可以一次性寫入一頁(yè)。寫頁(yè)的初始化過(guò)程與寫字節(jié)的方法基本相同。不同的是寫入一個(gè)字節(jié)后,微控制器不發(fā)停止?fàn)顟B(tài)命令,而是在應(yīng)答信號(hào)后,接著輸入63個(gè)字節(jié)。每一個(gè)字節(jié)接收到后,EEPROM照樣輸出一個(gè)為零的應(yīng)答信號(hào)。因?yàn)橐豁?yè)只有64個(gè)單元,所以數(shù)據(jù)字的地址低6位接收到一個(gè)字節(jié)后會(huì)自動(dòng)加1,高位地址不變,即頁(yè)地址不變。當(dāng)內(nèi)部產(chǎn)生的地址到頁(yè)邊界時(shí),接下來(lái)的字節(jié)要放至該頁(yè)的開(kāi)始。如果發(fā)送至E2PROM的數(shù)據(jù)超過(guò) 64字節(jié),則最早寫的字節(jié)將被覆蓋,流程見(jiàn)圖3的寫頁(yè)操作。
4.2讀操作
讀操作有3種方式。初始化過(guò)程與寫操作基本相同,只是將設(shè)備選擇字中的最低位改成讀。讀操作流程圖見(jiàn)圖4。
1)當(dāng)前地址讀
內(nèi)部數(shù)據(jù)的地址保持在最后的讀寫操作地址加1上,只要芯片有電源供給,這個(gè)地址一直保持著。讀到EEPROM的最后字節(jié)后又回到最開(kāi)始的位置。
2)隨機(jī)讀
隨機(jī)讀前先要向EEPROM寫入一個(gè)字節(jié)地址,然后才能讀。
3)讀串
既可以是當(dāng)前地址讀,也可以是隨機(jī)地址讀。微控制器接收到一個(gè)字后,回一個(gè)應(yīng)答信號(hào)。一旦EEPROM接收到應(yīng)答信號(hào),地址加1,接著輸出下一個(gè)字節(jié)。微控制器接收到數(shù)據(jù)后不回應(yīng)答信號(hào)時(shí),表示讀過(guò)程結(jié)束。
5單片機(jī)數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
5.1硬件連接
圖 5是AT24C256在單片機(jī)數(shù)據(jù)采集系統(tǒng)中應(yīng)用的原理圖。整個(gè)采集系統(tǒng)由AT89C51控制,負(fù)責(zé)對(duì)外圍芯片的初始化和數(shù)據(jù)傳送。其中DS1302是 Dallas公司的時(shí)鐘芯片,在此系統(tǒng)中的作用是產(chǎn)生年、月、日、時(shí)、分、秒,用于記錄采集數(shù)據(jù)的時(shí)間。2543是具有11個(gè)模擬通道的12位串行A/D 芯片,要采集的數(shù)據(jù)從傳感器經(jīng)信號(hào)調(diào)制直接連到2543的模擬輸入口。AT24C256用來(lái)保存采集的時(shí)間和數(shù)據(jù)。
5.2軟件編程
寫一個(gè)字節(jié)到AT24C256,要寫的字節(jié)在A寄存器中。
BYTEW:MOVR2,#8
SETBP1.5
SETBP1.4;停止總線操作
NOP
NOP
CLRP1.4
CLRP1.5;啟動(dòng)總線操作
OTSLP:RLCA
JNCBITLS
SETBP1.4
JMPOTSL1
BITLS:CLRP1.4
OTSL1:SETBP1.5;寫數(shù)據(jù)
NOP
NOP
CLRP1.5
DJNZR2,OTSLP
SERBP1.5
SETBP1.4
RET
參考文獻(xiàn)
[1]ATMEL公司.AT24C256的技術(shù)資料.
[2]何立民.單片機(jī)實(shí)用技術(shù)選編[M].北京航空航天大學(xué)出版社,1992.