Home > Technologie > Himbeere Pi Python EEPROM Programmierer

Himbeere Pi Python EEPROM Programmierer

0
Advertisement

Himbeere Pi Python EEPROM Programmierer

Dieses einfache Tutorial führt Benutzer durch den Prozess der Anbindung eines EEPROM-Chips an ein Raspberry Pi mit den GPIO-Pins und die Durchführung von Operationen mit Python-Skripts.

Beginnen wir mit einigen Grundlagen auf EEPROM:

1) CE, OE, WE - Was bedeutet das alles?

Um Daten von einem EEPROM-Chip lesen, schreiben und löschen zu können, müssen wir zuerst den Chip in den richtigen Zustand bringen. Dies erfolgt unter Verwendung von drei Steuerstiften, die typischerweise Chip Enable, Output Enable und Write Enable genannt werden.

Chip Enable steuert, ob der Chip eingeschaltet ist oder nicht. Abhängig von der Art des Chips, das Verbinden dieses Stiftes mit der Masse oder zur Spannung schaltet den Chip ein oder aus. Unnötig zu sagen, dass, wenn wir jede Operation durchführen möchten wir den Chip aktivieren müssen. Das Deaktivieren des Chips ermöglicht es uns, den Chip herunterzufahren, während er ihn elektrisch mit unserem Stromkreis verbunden hat. Auf diese Weise verbraucht der Chip weniger Energie.

Output Enable ist ein Pin, der verwendet wird, um dem Chip zu sagen, dass Sie es lesen möchten. Noch einmal, je nach Chip, den Anschluss dieser Pin auf die Erde oder auf Spannung wird der Chip, um Ihnen mit dem Inhalt der angegebenen Speicheradresse (mehr dazu später). Das Deaktivieren des Ausgangs beendet die Leseoperation.

Write Enable ist ähnlich wie Output Enable, wird aber für das Schreiben von Daten auf dem Chip verwendet. Abhängig von der Art des Chips, wird das Verbinden mit Masse oder Spannung die Chip-Schreibdaten zu einer ausgewählten Speicheradresse (mehr dazu später).

2) So wie steuere ich die Pins?

Es ist leicht! Abhängig von Ihrem EEPROM-Chip aktivieren oder deaktivieren Sie diese Pins, indem Sie sie an eine Spannungsquelle oder an die Erde anschließen. Der für die Operation verwendete Jargon ist "pull up" für den Anschluss an Spannung und "pull down" für den Anschluss an die Erde. In einigen Fällen (und in unserem Fall im Besonderen) verursacht das Hochziehen eines Stifts, dass der entsprechende Status anstelle von Aktiviert deaktiviert wird. Dies mag intuitiv klingen, da Sie erwarten, zu ziehen, um etwas zu aktivieren, aber so ist das Leben manchmal.

Warnung !!!: Das Verlassen eines dieser Stifte, der vom Stromkreis getrennt wird, ist nicht gleich, dass er heruntergezogen wird! Wenn irgendwelche der Stifte von der Schaltung getrennt bleiben, nennen wir sie "schwimmend" und im wesentlichen ihr Zustand ist zufällig und unbestimmt. Zum Beispiel können HF-Interferenzen ein Signal mit hohem oder niedrigem Signal verursachen und somit den Pin so wirken lassen, als ob er aktiviert oder deaktiviert ist. Verbinden Sie immer alle Pins mit Ihrem Stromkreis!

3) Es geht um Sequenzierung!

Angenommen, ich möchte einige Daten aus meinem EEPROM lesen, was muss ich mit diesen Pins tun, damit alles funktioniert? Durchführen von Operationen auf EEPROM ist alles über die Dinge in der richtigen Reihenfolge. Wenn wir also vom Chip lesen wollen, wäre unsere Sequenz wie folgt:

Setzen Sie die Speicheradresse (Pull up / down Address Bus Pins zu einer Adresse im Binärformat zu bilden)

Chip aktivieren (Einschalten)

Ausgang freigeben (Adresse lesen)

Lesen Sie die Speicheradresse (die Datenbus-Pins werden nun entsprechend den Daten in der Adresse hoch / niedrig gesetzt)

Ausgang deaktivieren (der Datenbus-Ausgang ist noch an diesem Punkt aktiviert, damit ich die Daten lesen kann)

Deaktivieren des Chips (Abschalten, kein Ausgang auf dem Datenbus an dieser Stelle)

Wiederholen Sie den Vorgang für die nächste Adresse, die Sie lesen möchten.

4) Was war der Bus, den Sie gesprochen?

Datenbus und Adressbus. Der EEPROM-Chip wird zusammen mit den CE-, OE- und WE-Pins ebenfalls einen Satz von Stiften zum Einstellen einer Adresse und einen Satz von Stiften zum Lesen / Schreiben von Daten in die ausgewählte Adresse aufweisen. Die Anzahl der Pins für den Adressbus hängt von der Kapazität des Chips ab. Je höher die Kapazität, desto mehr Adressen werden benötigt und desto mehr Stifte wird der Bus haben. Um eine Adresse zu setzen, ziehen wir die Pins auf / ab, um 1/0 zu repräsentieren. Jede Adresse, die durch eine beliebige Kombination von Bits dargestellt wird, enthält 1 Byte. So ein Chip mit 2048 Adressen haben 2048 Byte Kapazität. Die Pins auf dem Adressbus sind typischerweise wie folgt numeriert: A0, A1, A2, A3, ... A (n)

Der Datenbus kann, im Gegensatz zum Adressbus, je nach gewähltem Betrieb entweder Eingang oder Ausgang sein. Wenn wir beschließen, auf den Chip zu schreiben, setzen wir die Adresse, die wir schreiben wollen, über den Adressbus und dann setzen wir den Datenbus, indem wir seine Pins aufwärts / abwärts ziehen, um ein Byte darzustellen. Wenn wir vom Chip lesen, werden die Datenbus-Pins hoch / niedrig gesetzt, um den 1/0-Wert des in der von uns gewählten Adresse enthaltenen Bytes darzustellen. Die Pins auf dem Datenbus wie nummeriert: D0, D1, D2, ... D7

5) Eine letzte Sache: Most Significant Bit

Das meiste signifikante Bit ist im wesentlichen das Bit, das den höchsten Wert in einem Byte darstellt. Unterschiedliche Chips können ein anderes Bestellschema beim Speichern von Bytes verwenden. Die Dokumentation Ihres Chips legt fest, ob das Most Significant Bit die höchste oder niedrigste Pin-Nummer auf dem Datenbus ist. Sobald Sie wissen, welcher Pin das MSB hat, stellen die restlichen Pins den Rest der Bits in aufsteigender oder absteigender Reihenfolge dar. Wenn zum Beispiel das MSB auf Pin D7 des Datenbusses liegt, dann geht das Least Significant Bit auf den Pin D0.

Schritt 1: Wir setzen zusammen

Ich bin die Befestigung der GPIO-Layout von Himbeere Pi B + zusammen mit den Pin-Verbindungen zum Chip. Seien Sie sehr vorsichtig mit dem 5V-Pin auf der Pi, weil, obwohl Ihr EEPROM-Chip kann bei 5v funktionieren, wird es auch Ausgabe 5v auf dem Datenbus, wenn Sie daraus lesen. Und das bedeutet, dass es 5v in den GPIO des Pi-Feeds, die wirklich schlechte Nachricht, weil Pi verwendet 3.3V Logik und Sie werden Ihre Pi braten wird.

Also NICHT verwenden Sie die 5V Pins auf dem Pi! Macht Ihren Chip von den 3.3v Stiften!

1) OK, zeigen Sie mir Ihre Ausrüstung

Der Rest der Anleitung basiert auf der Verbindung des Pi mit dem EEPROM-Chip, den ich habe. Es ist ein SST 39SF020A, den ich von einem alten digitalen Verstärker weggeräumt habe. Sie können online nach der Dokumentation für den Chip suchen. Es ist frei verfügbar aus vielen Quellen. Ich bin nicht anhängen es hier im Falle von Copyright-Fragen. Es gibt drei verschiedene Version dieses Chips, jeder mit unterschiedlicher Kapazität und daher eine unterschiedliche Anzahl von Address Pins. Wenn Sie eines der drei Modelle von meinem Chip erhalten können, können Sie diese Anleitung genau folgen. Wenn Sie einen anderen Chip haben, müssen Sie die Dokumentation Ihres Chips vom Hersteller zu finden und erstellen Sie eine Tabelle, die die Chip-Chip meines Mine Karten. Die Notation für Adresse, Daten und Freigabe Pins ist in der Branche Standard, so dass es nicht schwer sein sollte. Es ist auch erwähnenswert, dass mein Chip die CE, OE und WE Pins berücksichtigt werden, wenn sie heruntergezogen werden. Deshalb, um den Chip zu aktivieren, muss ich CE abziehen. Wenn ich den Chip deaktivieren will, muss ich CE hochziehen. Dies geschieht durch Ein / Ausschalten der GPIO-Pins. Dies gilt nicht für Daten- und Adresspins. So für Daten-und Adress-Pins, ein "1" ist ein "ein" -Signal auf dem angeschlossenen GPIO-Pin. Sie sehen, wohin das geht, nicht wahr?

2) JEDEC-Schreibschutz: Halten Sie unsere Daten sicher und machen unser Leben härter!

Denken Sie daran, wenn ich sagte, dass es alles über Sequenzierung, wenn Sie Operationen auf dem Chip ausführen möchten? Gut manchmal es gerade geschieht, daß wegen der Störung oder der Spannungsspitzen (oder irgendeines anderen unerwünschten Auftretens in der Schaltung) ein Chip in den "Schreibmodus" gesetzt werden kann und versehentlich einige Ihrer Daten verlieren. Um dies zu vermeiden, hat JEDEC einen Standard für den Schutz der Daten entwickelt. Alles, was bedeutet, ist, dass der Chip wird nicht in den "Schreibmodus" durch einfaches Aktivieren der WIR-Pin. Er erwartet eine Folge von Adressen und Bytes, bevor der Chip seinen "Schreibmodus" entriegelt und es ermöglicht, Daten an eine Adresse zu schreiben. Ihre Chip-Dokumentation wird definieren, was diese Sequenz ist und es wird alles mehr Sinn machen, wenn Sie einen Blick auf den Code. Für jetzt, einfach im Kopf behalten, dass dieser Mechanismus die Dinge etwas kompliziert, wenn wir Daten schreiben wollen, weil es einen Overhead für die Operation hinzufügt.

3) Wir haben alles, was wir brauchen, machen wir das!

Ich nehme an, dass Sie wissen, wie man ein Steckbrett und Drähte benutzt, um Ihren Chip an die GPIO Stifte anzuschließen, wie im beigefügten Diagramm gezeigt. Da mein Chip mehr Stifte hat als mein Pi's GPIO, habe ich mich entschieden, die drei höchsten Pins am Adressbus dauerhaft am Boden zu befestigen. Daher lesen diese Pins immer 0 und ich kann nicht auf den gesamten Speicher meines Chips zugreifen. Fühlen Sie sich frei, das gleiche zu tun, wenn Ihr Chip hat auch zu viele Adresse Pins. Sie können auch wählen, dauerhaft ziehen Sie den CE-Pin, so dass der Chip immer auf. Es liegt ganz bei Ihnen. Also, um zu klären, bin ich dauerhaft befestigen A17, A16 und A15 auf meinem Chip auf den Boden und durch die Pi-GPIO-Pins steuern die Pins A15 bis A0. So habe ich einen 16bit Adreßbus und 8 Bit Datenbus. Ich kontrolliere auch CE, OE und WE. Und eine letzte Sache, auf meinem Chip, ist die Most Significant Bit immer die höchste nummerierte Pin.

Schritt 2: Lesen vom Chip

In diesem Schritt bin ich das Python-Skript zum Lesen von dem Chip anfügen. Zur Ausführung auf Ihrem Pi, laden Sie einfach die Datei und in das Terminal in den Ordner , in dem Sie die Datei speichern , und gespeichert: sudo python EEPROMr.py

Ich habe viele Kommentare in den Code, so werde ich hier nicht analysieren, was ich tat. Es ist ziemlich selbsterklärend, wenn Sie die Kommentare lesen. Ich habe versucht , versuchen zu nutzen und zu fangen Schleifen Ausnahmen zu behandeln , wenn die Dinge schief gehen , oder wenn der Benutzer das Programm unterbricht , bevor es abgeschlossen ist .

Eine Sache zu beachten ist , dass der erste Kommentar im Skript: "#Benutzen Chip Nummerierungsschema" bezieht sich auf den Broadcom - Chips Pi und nicht auf den EEPROM - Chip. Verwechseln Sie nicht die beiden.

Schritt 3: Löschen des Chips - das wischt ALLES aus!

Also in diesem Schritt bin ich das Skript, das den gesamten EEPROM-Chip löscht. Dadurch werden alle Bits in jeder Adresse des Chips mit "1" gesetzt.

In diesem Fall tritt der JEDEC-Schreibschutz auf, so dass Sie, wenn Sie dem Code genau folgen, die Schritte sehen, die der Sequenz von Adressen und Daten entsprechen, die den "Schreibmodus" des Chips freischalten. Wie Sie den Code durchlaufen, denken Sie daran, wie die CE- und WE-Pins aktiviert / deaktiviert werden, um Adressen und Daten zu "verriegeln".

Um das Skript auszuführen, auf den Ordner , in dem Sie sie gespeichert haben und Typ: sudo python EEPROMd.py

Sie erhalten eine Eingabeaufforderung, mit der Sie aufgefordert werden, den Vorgang zu bestätigen, bevor alle Daten gelöscht werden.

Schritt 4: Daten auf dem Chip speichern

OK, also ist dieses Skript etwas interessanter als die anderen. Sie führen es durch Eingabe von sudo python EEPROMw.py

Sie wird zuerst eine Adresse von 15 Bits festlegen. Geben Sie die Adresse ein, beginnend mit dem Most Significant Bit im Binärformat. Das Skript überprüft, ob Sie nur 1/0 verwendet haben und dass es 15 von ihnen gibt. Sobald es glücklich ist, wird es Sie bitten, die Daten, die Sie in der ausgewählten Adresse speichern möchten, zu definieren. Geben Sie erneut ein volles Byte (8 Bits) im Binärformat ein. Sobald es glücklich ist, führt es die Schreiboperation für Sie durch und informiert Sie, wenn es vollständig ist. JEDEC Schreibschutz ist in der Tat in diesem Skript auch, so achten Sie in den Code für die Sequenz, dass "entriegelt" den Chip.

Dieses Skript hat ein wenig Aufsicht, dass es nicht fangen Tastatur Interrupts, wenn es den Benutzer für Adressen in Daten auffordert. Dies bedeutet, dass, wenn Sie Strg + C während dieser Schritte, das Skript wird ohne Reinigung der GPIO-Pins beendet. Fühlen Sie sich frei, diese Funktionalität zum Code für die Praxis hinzuzufügen.

Dies schließt den EEPROM-Programmierleitfaden mit Python auf dem Pi ab. Sie sind frei, diese Skripte zu verwenden, zu modifizieren und zu verteilen sie für den individuellen Gebrauch und pädagogischen Zwecken.

Bitte geben Sie Headamage und einen Link zurück zu dieser Seite. Die Software ist unter der GNU General Public License v2 verfügbar.

Related Reading