關(guān)于24CXX存儲芯片
本文引用地址:http://butianyuan.cn/article/201611/315487.htm
關(guān)于IIC總線
I2C總線:i2c總線是 Philips 公司首先推出的一種兩線制串行傳輸總線。它由一根數(shù)據(jù)線(SDA)和一根 時鐘線(SDL)組成。i2c總線的數(shù)據(jù)傳輸過程如圖3所示,基本過程為:
1、主機發(fā)出開始信號。
2、主機接著送出1字節(jié)的從機地址信息,其中最低位為讀寫控制碼(1為讀、0為寫),高7位為從機器件地址代碼。
3、從機發(fā)出認(rèn)可信號。
4、主機開始發(fā)送信息,每發(fā)完一字節(jié)后,從機發(fā)出認(rèn)可信號給主機。
5、主機發(fā)出停止信號。
I2C總線上各信號的具體說明:
開始信號:在時鐘線(SCL)為高電平其間,數(shù)據(jù)線(SDA)由高變低,將產(chǎn)生一個開始信號。
停止信號:在時鐘線(SCL)為高電平其間,數(shù)據(jù)線(SDA)由低變高,將產(chǎn)生一個停止信號。
應(yīng)答信號:既認(rèn)可信號,主機寫從機時每寫完一字節(jié),如果正確從機將在下一個時鐘周期將數(shù)據(jù)線(SDA)拉低,以告訴主機操作有效。在主機讀從機時正確讀完一字節(jié)后,主機在下一個時鐘周期同樣也要將數(shù)據(jù)線(SDA)拉低,發(fā)出認(rèn)可信號,告訴從機所發(fā)數(shù)據(jù)已經(jīng)收妥。(注:讀從機時主機在最后1字節(jié)數(shù)據(jù)接收完以后不發(fā)應(yīng)答,直接發(fā)停止信號)。
注意:在I2C通信過程中,所有的數(shù)據(jù)改變都必須在時鐘線SCL為低電平時改變,在時鐘線SCL為高電平時必須保 持?jǐn)?shù)據(jù)SDA信號的穩(wěn)定,任何在時鐘線為高電平時數(shù)據(jù)線上的電平改變都被認(rèn)為是起始或停止信號。
作為一種非易失性存儲器(NVM),24系列EEPROM使用的很普遍,一般作為數(shù)據(jù)量不太大的數(shù)據(jù)存儲器。下面總結(jié)一下其應(yīng)用的一些要點。從命名上看,24CXX中XX的單位是kbit,如24C08,其存儲容量為8k bit,即1k Byte=1024 Byte。
一、工作條件
1.工作電壓(VCC)
24CXX: 4.5V-5.5V
24CXX-W: 2.5V-5.5V
24CXX-R: 1.8V-5.5V
2. 輸入電平定義(VIH,VIL)
VIH:0.7VCC-VCC+1
VIL:-0.45V-0.3VCC
二、硬件連接
1.上拉電阻RP的取值
由于I2C總線電容要滿足小于400pf的條件。從以下波形可以看出,上拉電阻越大,總線的電容越小,可以實現(xiàn)的數(shù)據(jù)傳輸率就越大,可達(dá)400khz。
2.寫保護腳
芯片寫保護腳是高電平有效,即WP接高電平時禁止寫入
3.地址腳
24C01/24C02 三個地址腳(E0,E1,E2)都有效,24C04只有E2,E1有效,24C08只有E2有效,24C16三個地址腳都無效,如下圖所示,所謂地址腳無效是指不需要接入電路中(NC ,not connected),其對應(yīng)的地址位要用來表示要操作的字節(jié)的高位地址。
24C32/24C64三個地址腳都有效;
24C128/24C256/24C512的地址腳E1和E0有效,其余為NC;
24C1024的地址腳E1有效,其余為NC。
三、尋址方式
1.器件地址
當(dāng)總線上連接多個I2C器件時,需要對器件進(jìn)行尋址。器件地址如下表所示,其中E2,E1,E0是指三個引腳的狀態(tài),取決于是接地還是接高電平,R/W為1則為讀操作,為0則為寫操作。A8,A9,A10,A16指的是所要操作的字節(jié)地址的高位,后面會提到。
芯片 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
24C01/02/2 1 1 0 1 0 E2 E1 E0 R/W
24C041 0 1 0 E2 E1 A8 R/W
24C08 1 0 1 0 E2 A9 A8 R/W
24C16 1 0 1 0 A10 A9 A8 R/W
24C32/64 1 0 1 0 E2 E1 E0 R/W
24C128/256/512 1 0 1 0 0 E1 E0 R/W
24C1024 1 0 1 0 0 E1 A16 R/W
2.字節(jié)地址
在對芯片內(nèi)的某一字節(jié)或一連續(xù)地址進(jìn)行讀寫操作時,需要制定其地址或首字節(jié)的地址,不同芯片地址有不同的表示方式,如下表所示,其中有些芯片的地址位的高位存儲在器件地址中。
芯片 地址位數(shù) 地址范圍
24C01 bit7-bit0 0x00-0x7F
24C02 bit7-bit0 0x00-0xFF
24C04 A8,bit7-bit0 0x00-0x1FF
24C08 A9,A8,bit7-bit0 0x00-0x3FF
24C16 A10,A9,A8,bit7-bit0 0x00-0x7FF
24C32 bit15-bit8,bit7-bit0 0x00-0xFFF
24C64 bit15-bit8,bit7-bit0 0x00-0x1FFF
24C128 bit7-bit0 0x00-0x3FFF
24C256 bit7-bit0 0x00-0x7FFF
24C512 bit7-bit0 0x00-0xFFFF
24C1024 A16,bit15-bit8,bit7-bit0 0x00-0x1FFFF
四、讀寫時序
EEPROM一般在電路中做從器件,以下的發(fā)送和接收都是針對主器件說明的,開始和結(jié)束條件也是由主器件發(fā)出。
1、單字節(jié)寫操作
START->發(fā)送器件地址->ack->發(fā)送字節(jié)地址->ack->發(fā)送數(shù)據(jù)->ack -> STOP
2、按“頁”寫操作,“頁”是指高位地址一樣一組數(shù)據(jù),對于24C01/02/04/08/16,一頁數(shù)據(jù)為16字節(jié),一頁指高四位地址一樣的一組數(shù)據(jù)。對于24C32/24C64,一頁數(shù)據(jù)為32字節(jié),一頁指高11位地址一樣的一組數(shù)據(jù)。
START->發(fā)送器件地址->ack->發(fā)送頁首地址->ack->發(fā)送數(shù)據(jù)->ack.........-> 發(fā)送數(shù)據(jù)->ack -> STOP
3、隨機單字節(jié)讀操作
START->發(fā)送器件地址(寫)->ack->發(fā)送字節(jié)地址->ack->START->發(fā)送器件地址(讀)->ack->接收數(shù)據(jù)->noack->STOP
4、當(dāng)前單字節(jié)讀操作,“當(dāng)前”指的是前面進(jìn)行過讀操作,但是沒有STOP,芯片內(nèi)部“指針”指的字節(jié)即為“當(dāng)前”字節(jié)。
START->發(fā)送器件地址(讀)->ack->接收數(shù)據(jù)->noack->STOP
5、隨機連續(xù)字節(jié)讀操作
START ->發(fā)送器件地址(寫)->ack->發(fā)送字節(jié)首地址->ack->START->發(fā)送器件地址(讀)-> ack->接收數(shù)據(jù)->ack->接收數(shù)據(jù)->ack.........接收數(shù)據(jù)(最后字節(jié)) ->noack->STOP
6、當(dāng)前連續(xù)字節(jié)讀操作
START->發(fā)送器件地址(讀)->ack->接收數(shù)據(jù)->ack->接收數(shù)據(jù) ->ack...............接收數(shù)據(jù)(最后字節(jié))->noack->STOP
關(guān)于頁寫的道理。
AT24Cxx系列的EEPROM為了提高寫效率,提供了頁寫功能,內(nèi)部有個一頁大小的寫緩沖RAM,地址范圍當(dāng)然就是從00到一頁大小,發(fā)生寫操作時,開始送入的地址對應(yīng)的頁被選中,并將其內(nèi)容映像到緩沖RAM,數(shù)據(jù)從低端地址對應(yīng)的緩沖RAM地址開始修改,超過這個地址范圍就回到00,寫完后,就會把開始確定的EEPROM頁擦除,再把一整頁RAM數(shù)據(jù)寫入。所有寫數(shù)據(jù)都發(fā)生在開始寫地址時確定的頁上。
如頁容量為128,一頁都是從00開始按128字節(jié)分成一個個的頁,0頁就是0~7F,1頁就是80~FF,類推,邊界就是128字節(jié)的整數(shù)倍地址。頁 RAM的地址范圍為7位00~7F,寫入時高端地址就是頁號。發(fā)生寫操作,開始送入的地址對應(yīng)的頁被鎖存,后續(xù)不論寫多少,都在這個頁中,只是一個頁內(nèi)的地址進(jìn)行加一,超過就歸零開始。從F0開始寫32個字節(jié),那么開始送入的地址為F0,就會鎖定在1號頁(第2個頁)上,底端7位頁內(nèi)部地址開始從70H開始寫,到達(dá)7F時回到00再到10H,也就是寫在了F0~FF,80~8F。也就是,從01開始寫也只能到7F,再往80寫就跑到00上去了,這就是寫操作的翻卷,datasheet上都有說明。就是從邊界前寫兩個字節(jié)也要分兩次寫。頁是絕對的,按整頁大小排列,不是從開始寫入的地址開始算。
讀沒有頁的問題,可以從任意地址開始讀取任意大小數(shù)據(jù),只是超過整個存儲器容量時地址才回卷。但一次性訪問的數(shù)據(jù)長度也不要太大。所以分頁的存儲器要做好存儲器管理,盡量同時讀寫的數(shù)據(jù)放在一個頁上。
評論