EEPROM---AT24Cxx應用介紹


結論:1、讀寫AT24CXX芯片,根據容量有多種方式:一、容量為AT24C01~AT24C16,首先發送設備地址(8位地址),再發送數據地址(8位地址),再發送或者接受數據。

                        二、AT24C32/AT24C64~AT24C512,首先發送設備地址(8位地址),再發送高位數據地址,再發送地位數據地址,再發送或者接受數據。

                        三、容量AT24C1024的芯片,是把容量一和容量二的方法結合,設備地址中要用一位作為數據地址位,存儲地址長度是17位。

     2、它的設備地址根據容量不同有區別:

        1)、AT24C01~AT24C16:這一類又分為兩類,分別為AT24C01/AT24C02和AT24C04~AT24C16;他們的設備地址為高7位,低1位用來作為讀寫標示位,1為讀,0為寫。

            *1*、AT24C01/AT24C02。AT24C01/AT24C02的A0、A1、A2引腳作為7位設備地址的低三位,高4為固定為1010B,低三位A0、A1、A2確定了AT24CXX的設備地址,所以一根I2C線上最大可以接8個AT24CXX,地址為1010000B~1010111B。

            *2*、AT24C04~AT24C16的 A0、A1、A2只使用一部分,不用的懸空或者接地(數據手冊中寫的是懸空不接)。舉例:AT24C04只用A2、A1引腳作為設備地址,另外一位A0不用懸空,發送地址中對應的這位(A0)用來寫入頁尋址的頁面號,一根I2C線上最大可以接4個,地址為101000xB~101011xB

        2)、AT24C32/AT24C64:和AT24C01/AT24C02一樣,區別是,發送數據地址變成16位。

 

 注意事項:對AT24C32來說,WP置高,則只有四分之一受保護,即0x0C00-0x0FFF。也就是說保護區為1KBytes。對於低地址的四分之三,則不保護。所以,如果數據較多時,可以有選擇地存儲。不重要的數據則放在低四分之三區域,重要的數據則放在高四分之一區域。

 

 

 

詳細如下:

 

圖AT24C01/02/04/08/16的外形級封裝和引腳說明

AT24C系列為美國ATMEL公司推出的串行COMS型E2PROM,是典型的串行通信E2PROM 。

AT24CXX是IIC總線串行器件,具有工作電源寬(1.8~6.0 V),抗干擾能力強(輸入引腳內置施密特觸發器濾波抑制噪聲),功耗低(寫狀態時最大工作電流3 mA),高可靠性(寫次數100萬次,數據保存100年),支持在線編程等特點.

 

從上面兩張圖片可以得知:

AT :ATMEL公司出品

24:  系列號

C :商業

XX : 存儲容量 ,舉例 01 –> 1K à 128 字節

    02 à 2K à 256 字節

   …………….

    16à 16K à 2K 字節

I2C總線協議規定,任何將數據傳送到總線的器件作為發送器。任何從總線接收數據的器件為接收器。

主器件控制串行時鍾和起始、停止信號的發生。主器件任何期間都可以發送或接收數據,但是主器件控制數據傳送模式(發送或者接收)。

WP寫保護引腳:當該引腳連接到VCC,I2C器件內的內容被寫保護(只能讀)。如果允許對器件進行正常的讀寫,那么WP引腳需連接到地或者懸空。

通過器件地址輸入端A0、A1、A2可以實現講最多8個at24c01器件和at24c02器件、4個at24c04器件、2個at24c08器件、1個at24c16器件連接到總線上。當總線上只有一個器件時,A0、A1、A2可以連接到地或者懸空。

下面重點分析一下這句話:為什么 at24c01/at24c02 可以掛接8個器件呢?為什么到了 at24C16 卻只能掛接1個器件呢???

WHY? 

器件識別控制字節的作用

以at24c01/at24c02 和at24C16  舉例:

I2C總線上所有外圍器件都有唯一的地址,這個地址由器件地址和引腳地址兩部分組成。共7位。

器件地址是I2C器件固有的地址編碼,器件出廠時已經給定,不可更改。

引腳地址由I2C總線外圍器件的地址引腳A0、A1、A2決定,根據其在電路中接電源正極、接地或者懸空的不同,形成不同的地址代碼。引腳地址數也決定了同一器件可接入總線的最大數目。

 

此時於引腳地址無關,與 P2、P1、P0有關,即頁地址有關,頁地址高三位是器件識別控制字節的1-3位,器件上的A0,A1,A2,就無效了,所以只能接1個AT24C16器件。

 

頁地址是什么乖乖,從何而來呢????

上圖可知 AT24C16 存儲容量 16K = 2K字節 = 128(頁面數)* 16 (每頁的字節數) = 2^11 (尋址地址位數 11位)。

AT24C16內部有2048*8位的存儲容量,即可以存儲2K字節的數據。這2K字節被放在128個頁內,每頁存放16個字節。所以對AT24C16內部的訪問需要11位地址(0-7ff)。

 

舉個實際的例子:

對AT24C16訪問時,按照頁地址和頁偏移量的方式進行訪問。

比如要訪問第100頁的第3個字節,則在發送尋址的時候,就要發送0X0643,其中頁地址的高三位放在器件地址中。

第100頁的第3個字節  ==  0X0643

0643 = 6 * 256 + 4 * 16  + 3 =  (6*16+4)*16 + 3 = 1603 

就是 100頁的第3個字節。

所以在編寫程序對AT24C16第100頁的第3個字節進行寫數據的時候,步驟如下:

1)發送起始信號;

2)發送器件地址0XAC(1010 1100,1010是固定地址,110是頁地址的高三位,0表示寫操作);

3)發送操作地址0X43(0100 0010,0100是頁地址的低四位,0010是頁地址偏移量,即第100頁內的第三個字節;

4)發送要寫的數據;

5)發送終止信號。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM