EEPROM als externer Speicher

By | 11. März 2017

Ein EEPROM (electrically erasable programmable read-only memory) ist ein nichtflüchtiger, elektronischer Speicherbaustein. Er wird verwendet zur Speicherung kleinerer Datenmengen in elektrischen Geräten, bei denen die Information auch ohne anliegende Versorgungsspannung erhalten bleiben muss.

Ein EEPROM kann im Durchschnitt 1 Million Schreib/Lesezyklen durchführen wobei die Speicherbarkeit der Daten vom Hersteller für mehrere Jahrzehnte garantiert wird.

Der Anschluss an den Arduino ist über den I2C Bus mit wenig Aufwand verbunden. Man muss nur darauf achten, beim anschliessen der Speicherbausteine, die Adressen über die herausgeführten Adress-Leitungen A0-A2 entsprechend einzustellen.

Der Versuchsaufbau sieht wie folgt aus:

Die Adressen der Bausteine werden nach folgendem Schema belegt: Frei konfigurierbar sind nur die 3 letzten Bits. Alle anderen sind bereits vorgelegt, wie in der Abbildung dargestellt. Daher ergeben sich 8 Möglichkeiten, beginnend bei der Adresse 0x50 bis 0x57. Im obigen Versuchsaufbau sind beim ersten Baustein alle Adressbits auf LOW daher die Adresse 0x50. Beim zweiten Baustein ist Bit A1 auf HIGH was zu einer Adresse 0x52.

In der Praxis kann so ein Aufbau dann wie folgt aussehen:

Hier wurden drei EEPROMS verbaut mit den Adressen 0x50,0x51 und 0x52.

 

I2C Scanner

Um festzustellen welche Bausteine bzw. welche Adressen die Bausteine in einem I2C Netzwerk haben, verwendet man einen so
genannten I2C Scanner. Dieser geht alle möglichen Adressen durch und versucht eine Kommunikation aufzubauen, ist dieser Versuch erfolgreich, so wurde ein Teilnehmer mit einer legalen Adresse identifiziert. Das Programm gibt dann die entsprechende Adresse aus.

Das Programm, das ich verwende stammt aus dem Buch “Die elektronische Welt mit dem Arduino entdecken” von Erik Bartmann:

Da ein Steckbrett-Aufbau für den ersten Test zwar sehr praktisch ist, aber für den realen Betrieb doch etwas unhandlich daher kommt, habe ich mir eine kleine Speicherkarte mit einem EEPROM Baustein gebaut.

Die Karte lässt sich dann direkt an die I2C Anschlüsse stecken und benötigt nur ein weiteres Kabel für die Spannungsversorgung.

Damit sind nun alle Hardware-Voraussetzungen geschaffen, um sich mit der Frage zu befassen, wie nun Daten auf die Karte geschrieben und gelesen werden können.

EEPROM Daten Lesen und Schreiben

Das Schreiben und Lesen von Daten in und aus einem EEPROM erfolgt innerhalb eines Ablaufs, der als Transmission bezeichnet wird. Sie einzelnen Schritte sind in der nachfolgenden Abbildung illustriert.

Die Speicherung der Daten in einen EEPROM beginnt mit der Übertragung der I2C Adresse, um den Baustein eindeutig zu adressieren. Dann folgt die Übertragung der Speicheradresse in Form von zwei Byte Blöcken. Zuerst wird das höhenwertige Byte (MSB) dann das niederwertige Byte (LSB) übertragen.

Nach der Übertragung der Speicheradresse folgt dann das Datum (1 Byte) das an der angegeben Adresse gespeichert werden soll.

Das Lesen der Daten aus einem EEPROM erfolgt nach einem ähnlichen Schema. Es beginnt analog mit der Übertragung der I2C Bausteinadresse gefolgt von der Übertragung der Speicheradresse.

Das eigentliche Lesen erfolgt dann erst nach Abschluss der Transmission in dem dem Speicher mitgeteilt wird, wie viele Daten-Bytes ab der Speicheradresse angefordert werden. Danach werden die Daten auf den Bus geschrieben und können von dort gelesen und weiter verarbeitet werden.

Softwaretechnisch lassen sich die Programmierung mit Hilfe der wire.h-Bibliothek umsetzen. In dieser Bibliothek sind viele der Hardware-nahen Ansteuerungen bereits implementiert worden. Sie stellt zwei Anweisungen read und write zur Verfügung, mit der Daten geschrieben und gelesen werden können. Ebenfalls werden Funktionen für den Beginn und das Ende einer Transmission bereit gestellt.

Um zu überprüfen, welche Werte in den Speicherstellen enthalten sind, benötigt man ein Monitor-Programm. Derartige Monitore, die eine übersichtliche Darstellung der Speicherinhalte erlaubte, waren in den Anfängen der Computer-Programmierung Bestandteil jedes Computersystems.

Der Monitor liefert folgende Ausgabe:

Damit lassen sich die Speicherinhalte sehr anschaulich darstellen und überprüfen.