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