新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于24CXX存儲芯片

        關于24CXX存儲芯片

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

          

        本文引用地址:http://www.104case.com/article/201611/315487.htm

          關于IIC總線

          

          I2C總線:i2c總線是 Philips 公司首先推出的一種兩線制串行傳輸總線。它由一根數據線(SDA)和一根 時鐘線(SDL)組成。i2c總線的數據傳輸過程如圖3所示,基本過程為:

          1、主機發出開始信號。

          2、主機接著送出1字節的從機地址信息,其中最低位為讀寫控制碼(1為讀、0為寫),高7位為從機器件地址代碼。

          3、從機發出認可信號。

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

          5、主機發出停止信號。

          

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

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

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

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

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

          

          作為一種非易失性存儲器(NVM),24系列EEPROM使用的很普遍,一般作為數據量不太大的數據存儲器。下面總結一下其應用的一些要點。從命名上看,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的條件。從以下波形可以看出,上拉電阻越大,總線的電容越小,可以實現的數據傳輸率就越大,可達400khz。

          2.寫保護腳

           芯片寫保護腳是高電平有效,即WP接高電平時禁止寫入

          3.地址腳

           24C01/24C02 三個地址腳(E0,E1,E2)都有效,24C04只有E2,E1有效,24C08只有E2有效,24C16三個地址腳都無效,如下圖所示,所謂地址腳無效是指不需要接入電路中(NC ,not connected),其對應的地址位要用來表示要操作的字節的高位地址。

          24C32/24C64三個地址腳都有效;

          24C128/24C256/24C512的地址腳E1和E0有效,其余為NC;

          24C1024的地址腳E1有效,其余為NC。

          

          三、尋址方式

          1.器件地址

           當總線上連接多個I2C器件時,需要對器件進行尋址。器件地址如下表所示,其中E2,E1,E0是指三個引腳的狀態,取決于是接地還是接高電平,R/W為1則為讀操作,為0則為寫操作。A8,A9,A10,A16指的是所要操作的字節地址的高位,后面會提到。

          

           芯片 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.字節地址

           在對芯片內的某一字節或一連續地址進行讀寫操作時,需要制定其地址或首字節的地址,不同芯片地址有不同的表示方式,如下表所示,其中有些芯片的地址位的高位存儲在器件地址中。

          

          芯片 地址位數 地址范圍

          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一般在電路中做從器件,以下的發送和接收都是針對主器件說明的,開始和結束條件也是由主器件發出。

          1、單字節寫操作

           START->發送器件地址->ack->發送字節地址->ack->發送數據->ack -> STOP

          2、按“頁”寫操作,“頁”是指高位地址一樣一組數據,對于24C01/02/04/08/16,一頁數據為16字節,一頁指高四位地址一樣的一組數據。對于24C32/24C64,一頁數據為32字節,一頁指高11位地址一樣的一組數據。

           START->發送器件地址->ack->發送頁首地址->ack->發送數據->ack.........-> 發送數據->ack -> STOP

          3、隨機單字節讀操作

           START->發送器件地址(寫)->ack->發送字節地址->ack->START->發送器件地址(讀)->ack->接收數據->noack->STOP

          4、當前單字節讀操作,“當前”指的是前面進行過讀操作,但是沒有STOP,芯片內部“指針”指的字節即為“當前”字節。

           START->發送器件地址(讀)->ack->接收數據->noack->STOP

          5、隨機連續字節讀操作

           START ->發送器件地址(寫)->ack->發送字節首地址->ack->START->發送器件地址(讀)-> ack->接收數據->ack->接收數據->ack.........接收數據(最后字節) ->noack->STOP

          6、當前連續字節讀操作

           START->發送器件地址(讀)->ack->接收數據->ack->接收數據 ->ack...............接收數據(最后字節)->noack->STOP

          

          關于頁寫的道理。

           AT24Cxx系列的EEPROM為了提高寫效率,提供了頁寫功能,內部有個一頁大小的寫緩沖RAM,地址范圍當然就是從00到一頁大小,發生寫操作時,開始送入的地址對應的頁被選中,并將其內容映像到緩沖RAM,數據從低端地址對應的緩沖RAM地址開始修改,超過這個地址范圍就回到00,寫完后,就會把開始確定的EEPROM頁擦除,再把一整頁RAM數據寫入。所有寫數據都發生在開始寫地址時確定的頁上。

           如頁容量為128,一頁都是從00開始按128字節分成一個個的頁,0頁就是0~7F,1頁就是80~FF,類推,邊界就是128字節的整數倍地址。頁 RAM的地址范圍為7位00~7F,寫入時高端地址就是頁號。發生寫操作,開始送入的地址對應的頁被鎖存,后續不論寫多少,都在這個頁中,只是一個頁內的地址進行加一,超過就歸零開始。從F0開始寫32個字節,那么開始送入的地址為F0,就會鎖定在1號頁(第2個頁)上,底端7位頁內部地址開始從70H開始寫,到達7F時回到00再到10H,也就是寫在了F0~FF,80~8F。也就是,從01開始寫也只能到7F,再往80寫就跑到00上去了,這就是寫操作的翻卷,datasheet上都有說明。就是從邊界前寫兩個字節也要分兩次寫。頁是絕對的,按整頁大小排列,不是從開始寫入的地址開始算。

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



        關鍵詞: 24CXX存儲芯

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 乐平市| 马龙县| 成安县| 郑州市| 耒阳市| 宣化县| 余干县| 水富县| 靖边县| 陆良县| 板桥市| 高雄县| 普兰店市| 宁德市| 揭西县| 金乡县| 饶平县| 长岛县| 固阳县| 营口市| 和硕县| 万源市| 沾化县| 海兴县| 潞西市| 乾安县| 兴海县| 上杭县| 福泉市| 泗阳县| 石屏县| 土默特左旗| 鄂托克前旗| 左贡县| 安达市| 嘉定区| 安义县| 永嘉县| 延津县| 神农架林区| 普安县|