<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

            

          本文引用地址:http://www.ex-cimer.com/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ā)出認可信號。

            4、主機開始發(fā)送信息,每發(fā)完一字節(jié)后,從機發(fā)出認可信號給主機。

            5、主機發(fā)出停止信號。

            

            I2C總線上各信號的具體說明:

            開始信號:在時鐘線(SCL)為高電平其間,數(shù)據(jù)線(SDA)由高變低,將產(chǎn)生一個開始信號。

            停止信號:在時鐘線(SCL)為高電平其間,數(shù)據(jù)線(SDA)由低變高,將產(chǎn)生一個停止信號。

            應(yīng)答信號:既認可信號,主機寫從機時每寫完一字節(jié),如果正確從機將在下一個時鐘周期將數(shù)據(jù)線(SDA)拉低,以告訴主機操作有效。在主機讀從機時正確讀完一字節(jié)后,主機在下一個時鐘周期同樣也要將數(shù)據(jù)線(SDA)拉低,發(fā)出認可信號,告訴從機所發(fā)數(shù)據(jù)已經(jīng)收妥。(注:讀從機時主機在最后1字節(jié)數(shù)據(jù)接收完以后不發(fā)應(yīng)答,直接發(fā)停止信號)。

            注意:在I2C通信過程中,所有的數(shù)據(jù)改變都必須在時鐘線SCL為低電平時改變,在時鐘線SCL為高電平時必須保 持數(shù)據(jù)SDA信號的穩(wěn)定,任何在時鐘線為高電平時數(shù)據(jù)線上的電平改變都被認為是起始或停止信號。

            

            作為一種非易失性存儲器(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ù)傳輸率就越大,可達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.器件地址

             當總線上連接多個I2C器件時,需要對器件進行尋址。器件地址如下表所示,其中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ù)地址進行讀寫操作時,需要制定其地址或首字節(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、當前單字節(jié)讀操作,“當前”指的是前面進行過讀操作,但是沒有STOP,芯片內(nèi)部“指針”指的字節(jié)即為“當前”字節(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、當前連續(xù)字節(jié)讀操作

             START->發(fā)送器件地址(讀)->ack->接收數(shù)據(jù)->ack->接收數(shù)據(jù) ->ack...............接收數(shù)據(jù)(最后字節(jié))->noack->STOP

            

            關(guān)于頁寫的道理。

             AT24Cxx系列的EEPROM為了提高寫效率,提供了頁寫功能,內(nèi)部有個一頁大小的寫緩沖RAM,地址范圍當然就是從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)的地址進行加一,超過就歸零開始。從F0開始寫32個字節(jié),那么開始送入的地址為F0,就會鎖定在1號頁(第2個頁)上,底端7位頁內(nèi)部地址開始從70H開始寫,到達7F時回到00再到10H,也就是寫在了F0~FF,80~8F。也就是,從01開始寫也只能到7F,再往80寫就跑到00上去了,這就是寫操作的翻卷,datasheet上都有說明。就是從邊界前寫兩個字節(jié)也要分兩次寫。頁是絕對的,按整頁大小排列,不是從開始寫入的地址開始算。

             讀沒有頁的問題,可以從任意地址開始讀取任意大小數(shù)據(jù),只是超過整個存儲器容量時地址才回卷。但一次性訪問的數(shù)據(jù)長度也不要太大。所以分頁的存儲器要做好存儲器管理,盡量同時讀寫的數(shù)據(jù)放在一個頁上。



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

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();