EEPROM AT24Cx - 32/64/128/256/512 kbit
EEPROM-Reihe von Atmel mit 32 kbit (AT24C32, 4 KB), 64 kbit (AT24C64, 8 KB), 128 kbit (AT24C128, 16 KB), 256 kbit (AT24C256, 32 KB) oder 512 kbit (AT24C512, 64 KB).
Arduino Bibliothek Quellcode, ZIP.
Eigenschaften
- 32/64/128/256/512 kbit Varianten (4/8/16/32/64 kByte)
- I2C Schnittstelle
- Vcc 1,8V .. 5,5V
- Zwischen 100.000 und 1.000.000 Schreibzyklen
- 4 bis 8 Bausteine am Bus nutzbar
- I2C Adresse 1010(A2)(A1)(A0) bzw. 101000(A1)(A0)
Datenblätter
- Link zum Datenblatt des AT24C32/64.
- Link zum Datenblatt des AT24C128/256.
- Link zum Datenblatt des AT24C512.
Pinbelegung
Funktion | Name | Pin | Pin | Name | Funktion |
---|---|---|---|---|---|
Adresse (VCC = 1, GND = 0) | A0 | 1 | 8 | VCC | Versorgungsspannung |
Adresse (VCC = 1, GND = 0) | A1 | 2 | 7 | WP | Schreibschutz (VCC = An, GND = Aus) |
Adresse (VCC = 1, GND = 0) | A2 | 3 | 6 | SCL | I2C Takt |
Masse | GND | 4 | 5 | SDA | I2C Daten |
I2C Adressierung
Es können bis zu 8 EEPROM ICs am Bus angesprochen werden. Die Verdahtung der Pins A0 bis A2 bestimmt den Index und damit die I2C Adresse. Ax auf GND entspricht 0 (oder frei lassen = Standard), Ax auf Vcc entspricht 1.
Adresse (bin) | Adresse (hex) | Adresse (dez) | A2 | A1 | A0 |
---|---|---|---|---|---|
1010000 | 0x50 | 80 | 0 | 0 | 0 |
1010001 | 0x51 | 81 | 0 | 0 | 1 |
1010010 | 0x52 | 82 | 0 | 1 | 0 |
1010011 | 0x53 | 83 | 0 | 1 | 1 |
1010100 | 0x54 | 84 | 1 | 0 | 0 |
1010101 | 0x55 | 85 | 1 | 0 | 1 |
1010110 | 0x56 | 86 | 1 | 1 | 0 |
1010111 | 0x57 | 87 | 1 | 1 | 1 |
Speicheraufteilung
Es kann jeweils auf ein Byte (lesen oder schreiben) zugegriffen werden. Die Adresslänge ist damit 12 bit bzw. 13 bit lang.
Der Speicher ist jeweils in 32 Byte große Speicherseiten (page) unterteilt. Es können im Adressbereich einer Seite jeweils bis zu 32 Byte on einem Vorgang geschrieben werden. Wird über eine Seitengrenze hinweg geschrieben, werden die Daten am Anfang der Seite überschrieben.
EEPROM | Speicher (bit) | Speicher (Byte) | Adresslänge (bit) | Seitengröße (Byte) | Seiten (pages) |
---|---|---|---|---|---|
AT24C32 | 32768 | 4096 | 12 | 32 | 128 |
AT24C64 | 65536 | 8192 | 13 | 32 | 256 |
AT24C128 | 131072 | 16384 | 14 | 64 | 256 |
AT24C256 | 262144 | 32768 | 15 | 64 | 512 |
AT24C512 | 524288 | 65536 | 16 | 128 | 512 |
Kommunikationstest
/*
*
* Search for an EEPROM.
* This sketch iterate the eight possible I2C addresses and
* checks if an EEPROM is found.
*
* Written by Christian Paul, 2014-11-24
*
*
*/
// include libraries
#include <Wire.h>
// setup
void setup() {
Serial.begin(115200);
Serial.println("AT24CX search");
Serial.println("-------------------------");
Wire.begin();
int i2c = 0x50;
for (int i=0; i<8; i++) {
Serial.print("Search at [");
Serial.print(i2c, HEX);
Serial.print("]: ");
Wire.beginTransmission(i2c);
int result = Wire.endTransmission();
if (result==0)
Serial.println("FOUND!");
else
Serial.println("not found");
i2c++;
}
}
// main loop
void loop() {}