Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: EEPROM-Grundlagen
- Schritt 2: Macken von EEPROM
- Schritt 3: Arduino-Hardwareanschluss
- Schritt 4: Lesen und Schreiben
- Schritt 5: Schaltpläne und Code
Video: Lesen und Schreiben von Daten in ein externes EEPROM mit Arduino - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
EEPROM steht für Electrically Erasable Programmable Read-Only Memory.
EEPROM ist sehr wichtig und nützlich, da es sich um eine nichtflüchtige Form von Speicher handelt. Dies bedeutet, dass der EEPROM-Chip auch bei ausgeschalteter Platine das darauf geschriebene Programm behält. Wenn Sie also die Platine aus- und wieder einschalten, kann das in das EEPROM geschriebene Programm ausgeführt werden. Im Grunde speichert das EEPROM ein Programm und führt es aus, egal was passiert. Das bedeutet, Sie können ein Gerät ausschalten, es 3 Tage lang ausgeschaltet lassen und es wieder einschalten und es kann immer noch das darin programmierte Programm ausführen. So funktionieren die meisten Unterhaltungselektronikgeräte.
Dieses Projekt wird von LCSC gesponsert. Ich habe elektronische Komponenten von LCSC.com verwendet. LCSC hat es sich zur Aufgabe gemacht, eine große Auswahl an echten, hochwertigen elektronischen Komponenten zum besten Preis mit einem weltweiten Versandnetzwerk in über 200 Länder anzubieten. Melden Sie sich noch heute an und erhalten Sie $8 Rabatt auf Ihre erste Bestellung.
EEPROM ist auch insofern sehr effizient, als einzelne Bytes in einem herkömmlichen EEPROM unabhängig gelesen, gelöscht und neu geschrieben werden können. Bei den meisten anderen Arten von nichtflüchtigem Speicher ist dies nicht möglich. Mit seriellen EEPROM-Geräten wie dem EEPROM der 24-Serie von Microchip können Sie jedem Gerät, das I²C spricht, mehr Speicher hinzufügen.
Lieferungen
- EEPROM - 24LC512
- ATmega328P-PU
- 16 MHz Quarz
- Steckbrett
- Widerstand 4,7 kOhm x 2
- Kondensator 22 pF x 2
Schritt 1: EEPROM-Grundlagen
Der Microchip 24LC2512-Chip kann in einem 8-Pin-DIP-Gehäuse erworben werden. Die Pins des 24LC512 sind ziemlich einfach und bestehen aus Power (8), GND (4), Schreibschutz (7), SCL/SDA (6, 5) und drei Adresspins (1, 2, 3).
Eine kurze Geschichte von ROM
Frühe Computer vom Typ "gespeichertes Programm" - wie Tischrechner und Tastaturinterpreter - begannen, ROM in Form von Diodenmatrix-ROM zu verwenden. Dies war ein Speicher aus diskreten Halbleiterdioden, die auf einer speziell organisierten Platine platziert waren. Dies machte mit dem Aufkommen integrierter Schaltkreise Platz für Mask ROM. Masken-ROM war dem Dioden-Matrix-ROM sehr ähnlich, nur wurde es in einem viel kleineren Maßstab implementiert. Dies bedeutete jedoch, dass man nicht einfach ein paar Dioden mit einem Lötkolben herumbewegen und neu programmieren konnte. Masken-ROM musste vom Hersteller programmiert werden und war danach nicht mehr veränderbar.
Leider war Mask ROM teuer und die Herstellung dauerte lange, da jedes neue Programm ein brandneues Gerät erforderte, das von einer Gießerei hergestellt werden musste. 1956 wurde dieses Problem jedoch mit der Erfindung des PROM (Programmable ROM) gelöst, das es Entwicklern ermöglichte, die Chips selbst zu programmieren. Das bedeutete, dass Hersteller Millionen des gleichen unprogrammierten Geräts produzieren konnten, was es billiger und praktischer machte. PROM konnte jedoch mit einem Hochspannungs-Programmiergerät nur einmal beschrieben werden. Nachdem ein PROM-Gerät programmiert wurde, gab es keine Möglichkeit, das Gerät in seinen unprogrammierten Zustand zurückzusetzen.
Dies änderte sich 1971 mit der Erfindung des EPROM (Erasable Programmable ROM), das neben dem Hinzufügen eines weiteren Buchstabens zum Akronym die Möglichkeit mit sich brachte, das Gerät zu löschen und mit einer starken UV-Lichtquelle in einen "leeren" Zustand zu versetzen. Richtig, man musste den IC hell anstrahlen, um ihn neu zu programmieren, wie cool ist das denn? Nun, es stellt sich heraus, dass es ziemlich cool ist, es sei denn, Sie sind ein Entwickler, der an Firmware arbeitet. In diesem Fall möchten Sie das Gerät wirklich mit elektrischen Signalen neu programmieren. Dies wurde 1983 mit der Entwicklung von EEPROM (Electrically Erasable Programmable ROM) endlich Realität und damit kommen wir zu der heutigen unhandlichen Abkürzung.
Schritt 2: Macken von EEPROM
Es gibt zwei Hauptnachteile von EEPROM als Verfahren zur Datenspeicherung. In den meisten Anwendungen überwiegen die Vorteile die Nachteile, aber Sie sollten sich dessen bewusst sein, bevor Sie EEPROM in Ihr nächstes Design integrieren.
Zuallererst begrenzt die Technologie, die EEPROM ermöglicht, auch die Anzahl der Überschreibvorgänge. Dies hat damit zu tun, dass Elektronen in den Transistoren, aus denen das ROM besteht, gefangen werden und sich aufbauen, bis die Ladungsdifferenz zwischen einer "1" und einer "0" nicht mehr erkennbar ist. Aber keine Sorge, die meisten EEPROMs haben eine maximale Anzahl von Neuschreibvorgängen von 1 Million oder mehr. Solange Sie nicht kontinuierlich in das EEPROM schreiben, ist es unwahrscheinlich, dass Sie dieses Maximum erreichen. Zweitens wird das EEPROM nicht gelöscht, wenn Sie es von der Stromversorgung trennen, aber es speichert Ihre Daten nicht auf unbestimmte Zeit. Elektronen können aus den Transistoren und durch den Isolator driften, wodurch das EEPROM mit der Zeit effektiv gelöscht wird. Dies geschieht jedoch normalerweise im Laufe der Jahre (obwohl es durch Hitze beschleunigt werden kann). Die meisten Hersteller sagen, dass Ihre Daten auf EEPROM 10 Jahre oder länger bei Raumtemperatur sicher sind. Und noch etwas sollten Sie bei der Auswahl eines EEPROM-Geräts für Ihr Projekt beachten. Die EEPROM-Kapazität wird in Bits und nicht in Bytes gemessen. Ein 512K EEPROM hält 512Kbit Daten, also nur 64KB.
Schritt 3: Arduino-Hardwareanschluss
Okay, jetzt, da wir wissen, was EEPROM ist, lassen Sie uns eins anschließen und sehen, was es tun kann! Um unser Gerät zum Sprechen zu bringen, müssen wir sowohl Strom als auch serielle I²C-Leitungen anschließen. Insbesondere dieses Gerät läuft mit 5VDC, also verbinden wir es mit dem 5V-Ausgang unseres Arduino UNO. Außerdem benötigen die I²C-Leitungen Pull-Up-Widerstände, damit die Kommunikation korrekt erfolgt. Der Wert dieser Widerstände hängt von der Kapazität der Leitungen und der Frequenz ab, die Sie übertragen möchten, aber eine gute Faustregel für unkritische Anwendungen ist es, ihn nur im kΩ-Bereich zu halten. In diesem Beispiel verwenden wir 4,7 kΩ Pullup-Widerstände.
An diesem Gerät befinden sich drei Pins zur Auswahl der I²C-Adresse, auf diese Weise können Sie mehr als ein EEPROM auf dem Bus haben und diese jeweils unterschiedlich adressieren. Sie könnten sie einfach alle erden, aber wir werden sie verdrahten, damit wir später im Tutorial ein Gerät mit höherer Kapazität einsetzen können.
Wir verwenden ein Steckbrett, um alles miteinander zu verbinden. Das Diagramm unten zeigt den korrekten Anschluss für die meisten I²C-EEPROM-Geräte, einschließlich des von uns verkauften EEPROMs der 24-Serie von Microchip.
Schritt 4: Lesen und Schreiben
Wenn Sie ein EEPROM in Verbindung mit einem Mikrocontroller verwenden, müssen Sie meistens nicht den gesamten Inhalt des Speichers auf einmal sehen. Sie werden nur hier und da nach Bedarf Bytes lesen und schreiben. In diesem Beispiel werden wir jedoch eine ganze Datei in das EEPROM schreiben und dann alles wieder auslesen, damit wir sie auf unserem Computer anzeigen können. Dies soll uns mit der Idee der Verwendung von EEPROM vertraut machen und uns auch ein Gefühl dafür geben, wie viele Daten wirklich auf ein kleines Gerät passen.
Schreibe etwas
Unsere Beispielskizze nimmt einfach jedes Byte, das über den seriellen Port eingeht, und schreibt es in das EEPROM, wobei wir verfolgen, wie viele Bytes wir in den Speicher geschrieben haben.
Das Schreiben eines Speicherbytes in das EEPROM erfolgt im Allgemeinen in drei Schritten:
- Senden Sie das höchstwertige Byte der Speicheradresse, in die Sie schreiben möchten.
- Senden Sie das niedrigstwertige Byte der Speicheradresse, in die Sie schreiben möchten.
- Senden Sie das Datenbyte, das Sie an dieser Stelle speichern möchten.
Es gibt wahrscheinlich ein paar Schlüsselwörter, die es nur erklären:
Speicheradressen
Wenn Sie sich vorstellen, dass alle Bytes in einem 512-Kbit-EEPROM in einer Reihe von 0 bis 64000 stehen - weil ein Byte 8 Bit hat und Sie daher 64000 Bytes auf ein 512-Kbit-EEPROM passen können - dann ist eine Speicheradresse der richtige Platz dafür Zeile, in der Sie ein bestimmtes Byte finden würden. Wir müssen diese Adresse an das EEPROM senden, damit es weiß, wo das gesendete Byte abgelegt werden soll.
Wichtigste und am wenigsten signifikante Bytes
Da in einem 256-Kbit-EEPROM 32000 mögliche Plätze vorhanden sind - und weil 255 die größte Zahl ist, die Sie in einem Byte codieren können - müssen wir diese Adresse in zwei Bytes senden. Zuerst senden wir das Most Significant Byte (MSB) - in diesem Fall die ersten 8 Bit. Dann senden wir das Least Significant Byte (LSB) - die zweiten 8 Bit. Wieso den? Denn so erwartet das Gerät, sie zu empfangen, das ist alles.
Seite schreiben
Das Schreiben von jeweils einem Byte ist in Ordnung, aber die meisten EEPROM-Geräte verfügen über einen sogenannten "Seitenschreibpuffer", der es Ihnen ermöglicht, mehrere Bytes gleichzeitig auf die gleiche Weise wie ein einzelnes Byte zu schreiben. Wir werden dies in unserer Beispielskizze nutzen. Das EEPROM verwendet einen internen Zähler, der den Speicherplatz mit jedem folgenden empfangenen Datenbyte automatisch erhöht. Nachdem eine Speicheradresse gesendet wurde, können wir ihr bis zu 64 Byte Daten folgen. Das EEPROM nimmt (richtig) an, dass eine Adresse von 312 gefolgt von 10 Bytes Byte 0 an Adresse 312, Byte 1 an Adresse 313, Byte 2 an Adresse 314 usw. aufzeichnen wird.
Etwas lesen
Das Lesen aus dem EEPROM erfolgt grundsätzlich in drei Schritten wie das Schreiben in das EEPROM:
- Senden Sie das höchstwertige Byte der Speicheradresse, in die Sie schreiben möchten.
- Senden Sie das niedrigstwertige Byte der Speicheradresse, in die Sie schreiben möchten.
- Fragen Sie an dieser Stelle nach dem Datenbyte.
Schritt 5: Schaltpläne und Code
Code:
#enthalten
#define eeprom 0x50 //definiert die Basisadresse des EEPROM
Leere Einrichtung () {
Wire.begin(); //erzeugt ein Wire-Objekt
Serial.begin (9600);
vorzeichenlose int-Adresse = 0; //erste Adresse des EEPROM
Serial.println ("Wir schreiben die Postleitzahl 22222, eine Postleitzahl"); for(Adresse = 0; Adresse< 5; Adresse++) writeEEPROM(eeprom, Adresse, '2'); // Schreibt 22222 in das EEPROM
for (Adresse = 0; Adresse < 5; Adresse ++) {Serial.print (readEEPROM (eeprom, Adresse), HEX); } }
Leere Schleife () {
/*Es gibt nichts in der Funktion loop(), weil wir nicht möchten, dass das Arduino immer wieder dasselbe in das EEPROM schreibt. Wir wollen nur einen einmaligen Schreibvorgang, daher wird die loop()-Funktion bei EEPROMs vermieden.*/ }
// definiert die writeEEPROM-Funktion
void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data) { Wire.beginTransmission(deviceaddress); Wire.write((int)(eeaddress >> 8)); // schreibt das MSB Wire.write ((int) (eeaddress & 0xFF)); // schreibt das LSB Wire.write (Daten); Wire.endTransmission(); }
// definiert die readEEPROM-Funktion
byte readEEPROM(int deviceaddress, unsigned int eeaddress) { byte rdata = 0xFF; Wire.beginTransmission(Geräteadresse); Wire.write((int)(eeaddress >> 8)); // schreibt das MSB Wire.write ((int) (eeaddress & 0xFF)); // schreibt das LSB Wire.endTransmission(); Wire.requestFrom(Geräteadresse, 1); if (Wire.available()) rdata = Wire.read(); rdata zurückgeben; }
Empfohlen:
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Diskrete Komponente.: 5 Schritte
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Discrete Component.: Hallo zusammen, habe im Netz nach einer Ein/Aus-Schaltung gesucht. Alles, was ich fand, war nicht das, was ich suchte. Ich habe mit mir selbst gesprochen, es gibt unbedingt einen Weg dazu. Das habe ich gebraucht. - Nur ein Druckknopf zum Ein- und Ausschalten. - Muss nur
So formatieren Sie ein externes Speichergerät mit Mac OS X neu – wikiHow
So formatieren Sie ein externes Speichergerät mit Mac OS X neu: Verkaufen Sie einen alten USB-Stick? Oder Computer? Verwenden Sie diese einfache Schritt-für-Schritt-Anleitung, um Ihr externes Speichergerät auf Ihrem Mac neu zu formatieren. Die Vorteile dieser Neuformatierung einer Festplatte sind teils Sicherheit, teils Komfort und teils Wiederverwendbarkeit. Dies wird helfen, m
So schließen Sie ein Mini-HiFi-Regalsystem (Soundsystem) richtig an und richten es ein: 8-Schritte (mit Bildern)
So schließen Sie ein Mini-HiFi-Regalsystem (Soundsystem) richtig an und richten es ein: Ich bin ein Mensch, der gerne Elektrotechnik lernt. Ich bin eine High School an der Ann Richards School for Young Women Leaders. Ich mache dies anweisbar, um jedem zu helfen, der seine Musik von einem Mini LG HiFi Shelf Syste genießen möchte
Wie konvertiert man ein physisches Buch in ein E-Book?: 7 Schritte (mit Bildern)
Wie wandelt man ein physisches Buch in ein E-Book um?: Als Student im Hauptfach Chemieingenieurwesen habe ich normalerweise umfangreiche Lehrbücher, technische Bücher und Notizen zum Scannen (manchmal drucken) Ich habe seit einiger Zeit nach einem effizienten Buchscanner gesucht, aber die meisten sind es teuer, extrem groß. Es dauerte nicht lange
LESEN SIE MICH ZUERST: So richten Sie den ultimativen Mac Mini Supercomputer ein - wikiHow
LESEN SIE MICH ZUERST: So richten Sie den ultimativen Mac Mini Supercomputer ein: Der Mac Mini ist im Grunde ein Laptop ohne Bildschirm und ohne Tastatur oder Maus. Sie würden sich denken, wer zum Teufel wird dieses Ding benutzen? Dieser Computer verbraucht jedoch weniger Strom als die meisten Glühbirnen, funktioniert hervorragend, und