|
Mit dem I2C-EEprom-Modul können sie
ohne großen Lötaufwand die Funktion von seriellen EEproms
testen.
Mit dem
I2C-Modem oder dem
I2C-USB-Modem können Sie Daten auf das EEprom schreiben und wieder
auslesen.
|
Aufbau:
Hier die Pin-Belegung des Chips.
|
Pin |
Bezeichnung |
Bedeutung |
1 |
A0 |
Über die Adress-Eingänge lassen sich je nach EEprom-Typ bis zu 8 Bausteine adressieren |
2 |
A1 |
3 |
A2 |
4 |
GND |
Masse |
5 |
SDA |
Datenleitung |
6 |
SCL |
Taktleitung |
7 |
WP |
Schreibschutz
0 = read / write 1 = read only |
8 |
VCC |
Versorgungsspannung
(+5V) |
|
Adressierung:
Je nach Speichergröße des Chips können unterschiedlich
viele Bausteine am Bus betrieben werden.
Typ |
Größe |
max Anzahl |
Basisadressen |
AT24C01 |
128 Byte |
8 |
160 |
162 |
164 |
166 |
168 |
170 |
172 |
174 |
AT24C02 |
256 Byte |
8 |
160 |
162 |
164 |
166 |
168 |
170 |
172 |
174 |
AT24C04 |
512 Byte |
4 |
160 |
164 |
168 |
172 |
AT24C08 |
1024 Byte |
2 |
160 |
168 |
AT24C16 |
2048 Byte |
1 |
160 |
Die Grundadresse kann am Chip über Jumper oder
Lötbrücken eingestellt werden. Die restlichen Adressen
müssen dann über das Schreib- oder Leseprogramm
vorgegeben werden.
Programmierung:
Byteweise schreiben (Byte Write):
Mit den nachfolgenden Anweisungen wird eine Speicherzelle im AT24Cxx geschrieben:
START |
Baust. Adresse |
ACK vom AT24Cxx |
Speicheradresse |
ACK vom AT24Cxx |
Datenbyte schreiben |
ACK vom AT24Cxx |
STOP |
Nach dem Empfang des STOP führt das EEprom den
eigentlichen Schreibzyklus in den nichtflüchtigen
Speicher durch. Dieser dauert ca 10ms. Im
Anwenderprogramm muss entweder diese Zeit abgewartet
werden bevor neue Daten übertragen werden oder Sie
sprechen das EEprom zyklisch mit seiner Adresse an. So
lange es Daten schreibt antwortet es nicht. Wird vom
EEprom ein ACK gesendet, ist es wieder aufnahmebereit.
Blockweises schreiben (Page Write):
Das Blockweise schreiben funktioniert am Anfang genau so. Es werden
aber mehrere Datenbytes hintereinander geschrieben. Das EEprom zählt
die Speicheradresse selbstständig hoch.
Je nach Typ können 8 oder 16 Bytes pro Block übertragen werden.
START |
Baust. Adresse |
ACK vom AT24C |
erste Speicheradresse |
ACK vom AT24C |
1. Datenbyte schreiben |
ACK vom AT24C |
2. Datenbyte schreiben |
ACK vom AT24C |
|
3. Datenbyte schreiben |
ACK vom AT24C |
... |
ACK vom AT24C |
n. tes Datenbyte schreiben |
NO ACK vom Master |
STOP |
|
Wie beim Byte Write führt das EEprom den eigentlichen
Schreibzyklus in den nichtflüchtigen Speicher nach dem
STOP durch. Dieser dauert ca 10ms. Im Anwenderprogramm
muss entweder diese Zeit abgewartet werden bevor neue
Daten übertragen werden oder Sie sprechen das EEprom
zyklisch mit seiner Adresse an. So lange es Daten
schreibt antwortet es nicht. Wird vom EEprom ein ACK
gesendet, ist es wieder aufnahmebereit.
Byteweise lesen (Byte Read):
Beim Lesen muss als erstes die Speicherzelle eingestellt
werden, die ausgelesen werden soll. Alle Zugriffe auf
das EEprom beziehen sich immer auf die zuletzt
eingestellte Adresse.
START |
Baust. Adresse |
ACK vom AT24C |
Speicheradresse |
ACK vom AT24C |
STOP |
|
START |
Baust. Adresse +1 |
ACK vom AT24C |
Datenbyte lesen |
NO ACK vom Master |
STOP |
|
Blockweise lesen (Page Read):
Hier gilt das gleiche wie oben, nur dass mehrere Bytes
hintereinander ausgelesen werden können. Der Master
schickt immer ein ACK bevor neue Daten gelesen werden
können. Am Ende wird ein NO ACK und ein STOP gesendet.
Damit ist die Übertragung beendet.
START |
Baust. Adresse |
ACK vom AT24C |
Speicheradresse |
ACK vom AT24C |
STOP |
|
|
START |
Baust. Adresse +1 |
ACK vom AT24C |
1. Datenbyte lesen |
ACK vom Master |
2. Datenbyte lesen |
ACK vom Master |
3. Datenbyte lesen |
|
|
ACK vom Master |
4. Datenbyte lesen |
ACK vom Master |
n. tes Datenbyte lesen |
NO ACK vom Master |
STOP |
|
|