新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于24CXX存儲(chǔ)芯片

關(guān)于24CXX存儲(chǔ)芯片

作者: 時(shí)間:2016-11-17 來源:網(wǎng)絡(luò) 收藏
所看過的對(duì)24系列I2C讀寫時(shí)序描述最準(zhǔn)確最容易理解的資料,尤其是關(guān)于主從器件的應(yīng)答描述和頁寫描述,看完后明白了很多。關(guān)于頁寫的描述,網(wǎng)絡(luò)上絕大部分范程都沒提到頁寫時(shí)的數(shù)據(jù)地址必須是每頁的首地址才能準(zhǔn)確寫入,而且如果寫入超過一頁的數(shù)據(jù)會(huì)循環(huán)覆蓋當(dāng)前頁的數(shù)據(jù)。

  

本文引用地址: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è)頁上。



關(guān)鍵詞: 24CXX存儲(chǔ)芯

評(píng)論


技術(shù)專區(qū)

關(guān)閉