IC匯流排應用下的EEPROM

2021-06-21 21:33:27 字數 4281 閱讀 1508

所看過的對24系列i2c讀寫時序描述最準確最容易理解的資料,尤其是關於主從器件的應答描述和頁寫描述,看完後明白了很多。關於頁寫的描述,網路上絕大部分範程都沒提到頁寫時的資料位址必須是每頁的首位址才能準確寫入,而且如果寫入超過一頁的資料會迴圈覆蓋當前頁的資料。

關於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

24c04            1    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上都有說明。就是從邊界前寫兩個位元組也要分兩次寫。頁是絕對的,按整頁大小排列,不是從開始寫入的位址開始算。

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

ic卡的應用

很多應用系統都會與卡打交道,像機房收費系統,永和豆漿收銀系統等。生活中見的較多的是磁卡和ic 卡。相比較兩種卡,ic 卡除了 稍貴些外,其優點更多。ic 卡包括接觸式ic 卡和非接觸式ic 卡 這就是我們在多數系統中使用的射頻卡 像我們在永和豆漿收銀系統中使用的m1 卡也屬於射頻卡。m1卡較我們的機...

I2C匯流排結構的EEPROM

常用晶元at24c02 at24c02是乙個2k位序列cmos e2prom,內部含有256個8位位元組。at24c02有乙個8位元組頁寫緩衝器。該器件通過iic匯流排介面進行操作,有乙個專門的寫保護功能 引腳 scl 序列時鐘 at24c02序列時鐘輸入管腳用於產生器件所有資料傳送或接收的時鐘,這...

51微控制器內部EEPROM的應用

51微控制器內部eeprom的應用 stc89c51 52內部都自帶有2k位元組的eeprom,54 55和58都自帶有16k位元組的eeprom,stc微控制器是利用iap技術實現的eeprom,內部flash擦寫次數可達100,000 次以上,先來介紹下isp與iap的區別和特點。表1 isp ...