Inhaltsverzeichnis:

Bus Pirate 3EEPROM Explorer Board - Gunook
Bus Pirate 3EEPROM Explorer Board - Gunook

Video: Bus Pirate 3EEPROM Explorer Board - Gunook

Video: Bus Pirate 3EEPROM Explorer Board - Gunook
Video: Bus Pirate demo board build 2024, Juli
Anonim
Bus Pirate 3EEPROM Explorer Board
Bus Pirate 3EEPROM Explorer Board

Wenn Sie einen von Hack a Day's Bus Pirates haben, was machen Sie damit? Erfahren Sie mehr über 1-Wire-, I2C- und SPI-EEPROMs mit dem 3EEPROM-Explorer-Board (wir nennen es das THR-EE-PROM). EEPROM ist eine Art Speicherchip, der Daten ohne kontinuierliche Stromversorgung speichert. Es ist nützlich für die dauerhafte Datenspeicherung in kleinen Loggerschaltkreisen oder das Speichern benutzerdefinierter Seiten in einem Mini-Webserver. EEPROMs gibt es in vielen Größen und Protokollen. Das 3EEPROM hat drei gängige EEPROM-Chips: den DS2431 (1-Wire), 24AA- (I2C) und 25AA- (SPI). Alle drei wurden zuvor auf Hack a Day demonstriert, aber jede Demo verwendet eine andere Version der Bus Pirate-Hardware und -Firmware. Für Anfänger ist es schwierig, mit einem Bus Pirate v2go zu folgen. Lesen Sie weiter, um eine aktualisierte Schritt-für-Schritt-Anleitung zur Verwendung zu erhalten die DS2431, 24AA- und 25AA-EEPROMs mit dem Bus Pirate v2go. Wir haben auch die vollständigen Sitzungsprotokolle als Textdateien, damit Sie kein einziges Detail verpassen. Wir können 3EEPROM-Explorer-Board-PCBs oder -Kits bei Seeed Studio produzieren lassen. Leiterplatten kosten etwa 10 US-Dollar, Kits etwa 15 US-Dollar, die weltweit versandt werden. Wir müssen einen Gruppenkauf von 10 PCBs oder 20 Kits organisieren, um loszulegen. Wenn Sie an einem Bus-Piraten interessiert sind, kommt Version 3. Ich konnte einige Formatierungselemente und HTML-Tabellen nicht in ein Instructable aufnehmen, Sie können den Originalbeitrag im Dangerous Prototypes-Blog sehen.

Schritt 1: Übersicht über die 3EEPROM-Hardware

3EEPROM-Hardware-Übersicht
3EEPROM-Hardware-Übersicht
3EEPROM-Hardware-Übersicht
3EEPROM-Hardware-Übersicht
3EEPROM-Hardware-Übersicht
3EEPROM-Hardware-Übersicht

Das Ziel dieses Prototyps ist es, EEPROM und drei gängige Busprotokolle kennenzulernen. Zuerst schauen wir uns die 3EEPROM-Platine an und demonstrieren dann jedes EEPROM mit einem universellen seriellen Schnittstellentool von Bus Pirate. Wenn Sie keinen Bus-Piraten haben, können Sie trotzdem mitmachen, da die grundlegende Reihenfolge der Schnittstellenoperationen gleich bleibt, egal wie Sie sie implementieren. SchaltplanSchema in voller Größe [PNG]. Wir haben die Schaltung und das PCB mit der Freeware-Version von Cadsoft Eagle erstellt. Sie können den Schaltplan und die Platine aus dem Bus Pirate SVN-Archiv herunterladen. Die 3EEPROM-Platine enthält ein DS2431 1-Wire EEPROM (IC1), ein 24AA-I2C EEPROM (IC4) und ein 25AA-SPI EEPROM (IC5). IC1) zieht parasitär Strom aus dem 1-Wire-Bus, hat keinen externen Stromversorgungs-Pin und benötigt keinen Entkopplungskondensator. IC2 und IC3 sind leere Plätze für zusätzliche 1-Wire-Geräte, wie einen weiteren DS2431 oder einen DS1822 Temperatursensor. C1 (0,01uF) ist optional und wird nur benötigt, wenn IC2 oder IC3 mit einem mit Strom versorgten 1-Wire-Gerät bestückt sind.1-Wire erfordert einen starken Pullup-Widerstand, maximal 2,2K Ohm. Die On-Board-Pull-Up-Widerstände des Bus Pirate sind 10K, zu schwach, um den DS2431 während des Schreibens richtig mit Strom zu versorgen. Das 3EEPROM-Explorer-Board enthält einen 1,8 kOhm, 1/8 Watt Pull-Up-Widerstand (R1) auf dem 1-Wire-Bus, sodass kein zusätzlicher Pull-Up-Widerstand erforderlich ist. Die 24AA-(IC4) und 25AA- (IC5) erhalten jeweils einen 0,1uF-Kondensator, um sie von der Stromversorgung (C2, C3) zu entkoppeln. Sie brauchen die Kondensatoren wahrscheinlich nicht in einer so einfachen Schaltung, wir haben sie in der Demonstration von der Prototypenplatine weggelassen. Der vom 24AA- verwendete I2C-Bus erfordert auch Pull-Up-Widerstände, aber die integrierten 10K-Ohm-Pull-Up-Widerstände des Bus Pirate sind ausreichend. Alle Komponenten werden von 2,8 Volt bis 5 Volt DC betrieben. Die Schaltung wird über die VCC- und GND-Pins von Jumper 3 mit Strom versorgt. Es gibt zwei VCC-Pins, einer für die Stromversorgung, der andere für den Pullup-Widerstandsspannungseingangspin (Vpullup) des Bus Piraten Freeware-Version von Cadsoft Eagle. Sie können den Schaltplan und die Platine aus dem Bus Pirate SVN-Archiv herunterladen. Wenn Sie ein professionell vorbereitetes PCB- oder 3EEPROM-Kit wünschen, können wir bei Interesse von 10 oder 20 Personen möglicherweise einen Gruppenkauf arrangieren. Stückliste R1 1800 Ohm Widerstand (1/8 Watt)C2, 3 0,1uF Kondensator/10Volt+JP1-4 0,1" StiftleisteIC1 DS2431 1K 1-Draht EEPROM TO-92IC4** 24AA014-I/P I2C EEPROM DIP8IC5** 25AA010A-I/P SPI EEPROM DIP8ICS4, 5 8-Pin-DIP-Buchse für IC5, 6**IC4, IC5 könnte jede Größe haben, wir haben kleine Chips verlinkt, wir haben 128Byte und 128KByte verwendet. Ich konnte einige Formatierungs- und HTML-Tabellen nicht einfügen In einem Instructable können Sie den ursprünglichen Beitrag im Blog Dangerous Prototypes sehen.

Schritt 2: 25AA- / 25LC- SPI EEPROM

25AA- / 25LC- SPI-EEPROM
25AA- / 25LC- SPI-EEPROM
25AA- / 25LC- SPI-EEPROM
25AA- / 25LC- SPI-EEPROM
25AA- / 25LC- SPI-EEPROM
25AA- / 25LC- SPI-EEPROM

DemonstrationenAlle EEPROM-Demos sehen ziemlich gleich aus. Wir schreiben ein paar Zahlen auf den Chip und lesen sie dann aus. Jedes Gerät verfügt über Bedingungen, die gelten, wenn Sie mehr als einige Werte schreiben möchten, z. B. Seitengröße und Begrenzungsgrenzen. Lesen Sie mehr darüber im Datenblatt für Ihr spezifisches Gerät. Wenn Sie eine Demonstration nicht zum Laufen bringen können, laden Sie das vollständige Terminalprotokoll herunter, damit Sie nichts verpassen, was wir getan haben. Pull-Up-Widerstände sind das häufigste Problem. Überprüfen Sie die Pull-Up-Pin-Spannung mit dem Menü 'v' im Bus Pirate-Terminal. Chip: 25AA, SPI EEPROM (1Kbyte). Bus:SPI. Pull-up-Widerstände nur für Mischspannungsschnittstellen erforderlich. Stromversorgung: 1,8 Volt bis 5,5 Volt (AA), 2,5 Volt bis 5,5 Volt (LC). Referenzen: Datenblatt, Hack a Day-Demonstration. Vollständiges Bus Pirate-Sitzungsprotokoll für diese Demonstration. Ich konnte einige Formatierungs- und HTML-Tabellen nicht in ein Instructable aufnehmen, Sie können das Original im Dangerous Prototypes-Blog sehen. IC5 ist ein I2C-EEPROM der 25AA-Serie von Microchip, diese EEPROMs gibt es in einer Menge Größen. AA-Teile laufen von 1,8 Volt bis 5,5 Volt, während die 25LC-Teile eine Mindestanforderung von 2,5 Volt haben. C3 (0,1uF) entkoppelt das SPI-EEPROM von der Stromversorgung. Die Schreibschutz- (WP) und Halte-Pins könnten von einem Mikrocontroller gesteuert werden, aber wir haben sie deaktiviert, indem wir diese Pins hoch gehalten haben. Die SPI-Buspins CS, DO, CLK und DI werden zum Header JP4 gebracht. Setup Wenn Sie einen Bus Pirate verwenden, schließen Sie ihn an das 3EEPROM oder 25AA-IC an, wie in der Abbildung unten gezeigt. SPI benötigt normalerweise keine Pull-up-Widerstände. Schnittstelle Drücken Sie im Bus Pirate Terminal 'm' für das Modusmenü und wählen Sie SPI. Konfigurieren Sie die SPI-Bibliothek für die normale Pinausgabe, verwenden Sie die Standardeinstellungen für alle anderen SPI-Moduseinstellungen. Aktivieren Sie die Netzteile (großes 'W') an der SPI-Modus-Eingabeaufforderung. Schließlich erhalten Sie einen Spannungsbericht, um sicherzustellen, dass die Netzteile funktionieren ('v'). Wir zeigen, wie Sie das EEPROM direkt mit 3,3 Volt mit der SPI-Bibliothek im normalen Pin-Modus verbinden. Pull-up-Widerstände sind für diese Demo nicht erforderlich. Wenn Sie ein mit 5 Volt betriebenes EEPROM anschließen möchten, verwenden Sie die SPI-Bibliothek im Open-Collector (HiZ)-Pin-Modus und aktivieren Sie die Pullup-Widerstände mit dem Vpullup-Pin (Vpu), der mit der Stromversorgung des EEPROMs verbunden ist. Schritt 1, Schreibschutz deaktivieren SPI>[0b110]CS ENABLED <<<Chip Select aktiviertWRITE: 0x06 <<<Schreibschutz deaktivieren BefehlCS DISABLED <<Der 25AA- ist beim Einschalten schreibgeschützt. Senken Sie die Chipauswahl (CS) ([), senden Sie den Befehl zum Deaktivieren des Schreibschutzes (0x06) und erhöhen Sie dann den Befehl CS (]), um Schreibvorgänge in das EEPROM zu aktivieren 0b110 und der Buspirat versteht es immer noch. Schritt 2, SPI einiger Werte schreiben>[0b10 0 3 2 1]CS ENABLED <<<Chip Select aktiviertWRITE: 0x02 <<<write commandWRITE: 0x00 <<<write start addressWRITE: 0x03 <<<3 zu schreibende Werte (3.), 2, 1)SCHREIBEN: 0x02SCHREIBEN: 0x01CS DEAKTIVIERT <<Jetzt ist das EEPROM beschreibbar. Senken Sie zuerst CS, um die 25AA- ([) zu aktivieren. Senden Sie als Nächstes den Schreibbefehl (0x02) und den Ort, an dem das Schreiben beginnen soll (0). Senden Sie die Daten an den Speicher (3 2 1), und erhöhen Sie dann CS (]), um die Werte zu speichern. Hinweis: Wir haben ein winziges 128-Byte-EEPROM verwendet, größere Chips verwenden eine 16-Bit- (2 Byte) Adresse. Dieser Befehl wäre [0b10 0 '''0''' 3 2 1] für EEPROMs größer als 256 Bytes, notieren Sie die zweite 0. Überprüfen Sie das Datenblatt Ihres EEPROMs, um sicherzugehen. Schritt 3, Werte zurück lesen SPI>[0b11 0 r:3]CS ENABLED <<<Chip Select enabledWRITE: 0x03 <<<read commandWRITE: 0x00 <<<read start addressBULK READ 0x03 BYTES: <<<read 3 values0x03 0x02 0x01CS DEAKTIVIERT <<Lesen Sie schließlich die Daten zurück, um zu überprüfen, ob der Schreibvorgang erfolgreich war. Wählen Sie 25AA- ([), senden Sie den Lesebefehl (0x03) und die Startadresse (0) und lesen Sie dann drei Werte (r:3). Erhöhen Sie CS, um die Transaktion abzuschließen (]). Die Werte stimmen überein, der Schreibvorgang war erfolgreich. Hinweis: Wir haben ein winziges 128-Byte-EEPROM verwendet, größere Chips verwenden eine 16-Bit- (2 Byte) Adresse. Dieser Befehl wäre [0b11 0 '''0''' r:3] für EEPROMs größer als 256 Bytes, notiere die zweite 0. Überprüfen Sie das Datenblatt Ihres EEPROMs, um sicherzugehen.

Schritt 3: 24AA- / 24LC I2C EEPROM

24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM

Chip: 24AA, I2C EEPROM (1Kbyte). Bus:I2C, Pull-Up-Widerstände erforderlich. Strombedarf: 1,8Volt bis 5,5Volt (24AA), 2,5Volt bis 5,5Volt (24LC). Referenzen:Datenblatt, Hack a Day-Demonstration. Vollständiges Bus Pirate-Sitzungsprotokoll für diese Demonstration. Ich konnte einige Formatierungs- und HTML-Tabellen nicht in ein Instructable aufnehmen, Sie können das Original im Dangerous Prototypes-Blog sehen. IC4 ist ein I2C-EEPROM der 24AA-Serie von Microchip, diese EEPROMs kommen in a Tonnen von Größen. AA-Teile arbeiten von 1,8 Volt bis 5,5 Volt, während die 24LC-Teile einen Mindestbedarf von 2,5 Volt haben. Ein 0,1uF-Kondensator (C2) entkoppelt IC4 von der Stromversorgung. Der Schreibschutz-Pin (WP) könnte von einem Mikrocontroller gesteuert werden, aber für diese einfache Demonstration deaktivieren wir ihn mit einer Verbindung zu Masse. Die I2C-Bus-Pins, SDA und SCL, werden zum Header JP2 geführt. Die Adresse der meisten 24AA-EEPROMs ist 1010AAAS, wobei die letzten vier Bits durch die Adress-Pins (A0, A1, A2) und das Lese-/Schreibmodus-Auswahlbit bestimmt werden (S). Alle Adressbits sind in diesem Beispiel geerdet, sodass die Schreibadresse des EEPROMs 10100000 ist (Datenblatt Seite 6). Setup Wenn Sie einen Bus Pirate verwenden, schließen Sie ihn an das 3EEPROM oder 24AA-IC an, wie in der Abbildung unten gezeigt. I2C ist ein bidirektionaler Bus, der Pullup-Widerstände an beiden Pins erfordert. Sie können die On-Board-Pull-Up-Widerstände des Bus Pirate verwenden, indem Sie den Vpullup (Vpu)-Pin mit der 3,3-Volt-Stromversorgung verbinden und im Terminal aktivieren. Schnittstellenhinweis: Nicht alle I2C EEPROMs funktionieren gleich. Der winzige 24AA01 zum Beispiel hat ein ganz anderes Adressierungs- und Befehlssystem. Überprüfen Sie unbedingt das Datenblatt Ihres Chips. Drücken Sie 'm' im Bus Pirate Terminal und wählen Sie I2C aus dem Modusmenü. Aktivieren Sie die Netzteile (großes 'W') und die Pull-up-Widerstände ('p', Option 2) an der I2C-Eingabeaufforderung. Holen Sie sich einen Spannungsbericht ('v'), um sicherzustellen, dass die Netzteile eingeschaltet sind und der Vpullup-Pin mit einer Spannung verbunden ist. I2C>(0) <<(1) <<<Adresssuchmakro verwendenDurchsuchen des 7-Bit-I2C-Adressraums. Gefundene Geräte unter:0xA0 0xA1 <<Wir wissen bereits, dass die I2C-Adresse 10100000 ist, aber wir können auch das I2C-Suchmakro (1) von Bus Pirate verwenden, um nach der 24AA- zu suchen. Das Suchmakro hat das Gerät an den erwarteten Schreib- (0xA0) und Lese- (0xA1) Adressen gefunden. Schritt 1, schreibe einige Werte I2C>[0b10100000 0 0 3 2 1]I2C START CONDITION <<<I2C start conditionWRITE: 0xA0 GOT ACK: YES <<<24AA- write addressWRITE: 0x00 GOT ACK: YES <<<write address byte 1WRITE: 0x00 GOT ACK: YES <<<Adreßbyte schreiben 2WRITE: 0x03 GOT ACK: YES <<<3 zu schreibende Werte (3, 2, 1)WRITE: 0x02 GOT ACK: YESWRITE: 0x01 GOT ACK: YESI2C STOP ZUSTAND < <Beginnen Sie den Schreibvorgang mit einer I2C-Startbedingung ([), gefolgt von der 24AA-Schreibadresse (0xa0). Senden Sie als Nächstes die zu schreibende 16-Bit-Adresse (0 0) und die zu schreibenden Daten (3 2 1). Beenden Sie die I2C-Transaktion mit einer Stoppbedingung (]). Schritt 2, positionieren Sie den Lesezeiger I2C>[0b10100000 0 0]I2C START CONDITION <<<I2C start conditionWRITE: 0xA0 GOT ACK: YES <<<24AA- write addressWRITE: 0x00 GOT ACK: YES <<<write address byte 1WRITE: 0x00 GOT ACK: YES <<<Adreßbyte schreiben 2I2C STOPPZUSTAND <<Das Lesen von 24AA- erfordert zwei Operationen. Einer positioniert den Lese-/Schreibzeiger, der andere gibt die Werte zurück. Beginnen Sie mit einer I2C-Startbedingung ([) und der Schreibadresse (0xa0). Senden Sie die 16-Bit-Adresse zum Lesen (0 0) und dann die Stoppbedingung (]). Diesmal haben wir keine Daten zum Schreiben gesendet, sondern nur den Lese-/Schreibzeiger an den Anfang der in Schritt 1 geschriebenen Daten positioniert. Schritt 3, einige Werte lesen I2C>[0b10100001 r:3]I2C START CONDITION <<<I2C start conditionWRITE: 0xA1 GOT ACK: YES <<<24AA- Adresse lesenBULK READ 0x03 BYTES: <<<3 Werte lesen0x03 0x02 0x01I2C STOP CONDITION <<Schritt 2 setzen Sie den Lese-/Schreibzeiger auf den Anfang der Daten, die wir lesen möchten. Jetzt können wir die Daten mit der 24AA-Leseadresse lesen. Beginnen Sie mit der I2C-Startbedingung ([) und der 24AA-Leseadresse (0xa1). Lesen Sie die drei Werte, die wir in Schritt 1 geschrieben haben (r:3), und beenden Sie sie mit einer Stoppbedingung (]). Wenn die Werte übereinstimmen, war Ihr Schreibvorgang erfolgreich.

Schritt 4: DS2431 1-Wire EEPROM

DS2431 1-Draht-EEPROM
DS2431 1-Draht-EEPROM
DS2431 1-Draht-EEPROM
DS2431 1-Draht-EEPROM
DS2431 1-Draht-EEPROM
DS2431 1-Draht-EEPROM

Chip: DS2431, 1-Draht-EEPROM (1Kbyte). Bus:1-Draht, <2,2Kohm Pull-Up-Widerstand erforderlich. Strombedarf: 2,8Volt bis 5,25Volt. Referenzen:Datenblatt, Hack a Day-Demonstration. Vollständiges Bus-Pirate-Sitzungsprotokoll für diese Demonstration. Ich konnte einige Formatierungs- und HTML-Tabellen nicht in ein Instructable aufnehmen, Sie können das Original im Dangerous Prototypes-Blog sehen. Der DS2431 zieht Strom aus dem Pull-up-Widerstand und benötigt keine externe Versorgung oder Entkopplungskondensator. 1-Wire benötigt einen starken Pull-Up-Widerstand, maximal 2,2Kohm. Die On-Board-Pull-Up-Widerstände des Bus Pirate sind 10K, zu schwach, um den DS2431 während des Schreibens richtig mit Strom zu versorgen. Sie müssen einen externen Widerstand von 2,2 kOhm oder kleiner zwischen der Stromversorgung und dem 1-Wire-Bus-Pin verwenden. Wenn Sie Schwierigkeiten beim Schreiben von Daten haben, stellen Sie sicher, dass Ihr Pullup-Widerstand groß genug ist. Das 3EEPROM-Explorer-Board enthält einen 1800-Ohm-Pull-up-Widerstand (R1) auf dem 1-Wire-Bus, sodass kein externer Widerstand erforderlich ist. Setup Wenn Sie einen Bus Pirate verwenden, schließen Sie ihn an die 3EEPROM-Platine oder DS2431 an, wie in der Abbildung unten gezeigt. Der DS2431 benötigt keinen Stromversorgungs-Pin, er wird auf der 3EEPROM-Platine verwendet, um den großen Pullup-Widerstand für den 1-Wire-Bus zu versorgen. Schnittstelle Drücken Sie 'm' im Bus Pirate Terminal und wählen Sie den 1-Wire-Modus. Aktivieren Sie die Bordnetze (großes 'W') und überprüfen Sie den Spannungswächter (v). Schritt 1, finden Sie die Geräteadresse 1-WIRE>(0xf0) <<<1-Wire search macro 1WIRE ROM COMMAND: SEARCH (0xF0)Gefundene Geräte unter:Macro 1WIRE address1.0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B <<<DS2431 eindeutige ID*DS2431 1K EEPROM <<Jedes 1-Wire-Gerät hat eine eindeutige 8-Byte-ID. 1-Wire verfügt über ein Suchverfahren, das die ID aller angeschlossenen Geräte erkennt. Der Bus Pirat implementiert die 1-Wire-Suche als Makro (240). Geben Sie '(240)' in das Bus Pirate Terminal ein, um die 1-Wire-Suche zu starten. Jede Geräteadresse wird gedruckt, bekannte Geräte werden identifiziert. Die ersten zehn 1-Wire-Geräteadressen werden als Makros gespeichert, in diesem Beispiel ist unsere DS2431-Adresse durch Eingabe von '(1)' im Terminal verfügbar. Schritt 2, schreiben Sie 8 Bytes in das Notizblock 1-WIRE>(0x55) (1) 0x0f 0 0 8 7 6 5 4 3 2 11WIRE BUS RESET OK <<<auch { Befehl 1WIRE WRITE ROM COMMAND: MATCH (0x55) * Folgen Sie mit 64bit address1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B ' WRITE: 0x0F <<<DS2431 Write Scratch Pad Befehl WRITE: 0x00 <<<DS2431 Write Address Byte 1 WRITE: 0x00 <<<DS2431 Write Address Byte 2WRITE: 0x08 <<Als nächstes schreiben wir 8 Bytes an einen temporären Speicherort im DS2431, der als Scratch-Pad bezeichnet wird. Starten Sie die Transaktion mit einem 1-Wire-Bus-Reset und einem MATCH-Befehl (0x55). Beide stehen als Makro '(0x55)' zur Verfügung. Dies kann auch ohne Makro durch Eingabe von '{ 0x55' erfolgen, { sendet den 1-Wire-Reset, 0x55 ist der 1-Wire MATCH-Befehl. Nach dem MATCH-Befehl die 8 Byte ID des Geräts an Adresse senden. Wir haben das Makro (1) verwendet, das in Schritt 1 mit der DS2431-ID gefüllt wurde. Sie können die 8-Byte-ID auch manuell eingeben. An diesem Punkt sollte der DS2431 seine Adresse erhalten haben und für Befehle bereit sein. Die nächsten zwei Bytes sagen ihm, wo die Daten abgelegt werden sollen, wir speichern sie am Anfang (0 0). Schließlich senden wir 8 Byte Werte zum Speichern, die Zahlen 8 bis 1. Sie müssen volle 8 Byte in den DS2431 schreiben. Außerdem muss die Schreibadresse auf einer 8-Byte-Grenze liegen. Eine vollständige Übersicht über die Schreibbeschränkungen finden Sie im Datenblatt. Schritt 3, überprüfen Sie das Notizblock und erhalten Sie den Autorisierungscode 1-WIRE>(0x55)(1) 0xaa r:3 r:8 r:2 r:21WIRE BUS RESET OK <<<Adresse des Geräts1WIRE WRITE ROM COMMAND: MATCH (0x55). 0x07 0x06 0x05 0x04 0x03 0x02 0x01BULK READ 0x02 BYTES: <<<CRC für die Daten0xC8 0x86BULK READ 0x02 BYTES: <<Stellen Sie sicher, dass die Daten korrekt empfangen wurden, und holen Sie sich einen Schreibberechtigungscode. Beginnen Sie erneut mit einem 1-Wire-Reset und einem MATCH-Befehlsmakro (0x55) und dem Geräteadressmakro (1). Senden Sie dieses Mal den DS2431-Befehl Scratchpad lesen (0xAA) und lesen Sie dann insgesamt 15 Bytes. Die ersten 3 gelesenen Bytes (r:3) sind der Schreibberechtigungscode, den wir im nächsten Schritt zum Kopieren benötigen Scratch-Pad auf das EEPROM. Die nächsten 8 Bytes (r:8) sollten mit den Daten übereinstimmen, die wir in Schritt 2 gesendet haben. Die letzten 2 Bytes (r:2) sind ein CRC16 für die Daten. Liest, nachdem der CRC alle 1s zurückgibt. Schritt 4, schreiben Sie den Notizblock in das EEPROM 1-WIRE>(0x55)(1) 0x55 0x00 0x00 0x071WIRE BUS RESET OK <<<Adresse des Geräts1WIRE WRITE ROM COMMAND: MATCH (0x55) *follow with 64bit address1WIRE ADDRESS MACRO 1: 1 EEPROM. Adressieren Sie das Gerät und senden Sie dann den DS2431-Befehl zum Kopieren von Notizblöcken (0x55) gefolgt von dem drei Byte langen Autorisierungscode, den wir in Schritt 3 abgerufen haben (0x00 0x00 0x07). Wenn der Autorisierungscode korrekt ist, werden die Daten in das EEPROM verschoben. Schritt 5, überprüfen Sie das Notizblock schreiben 1-WIRE>(0x55)(1) 0xaa r:31WIRE BUS RESET OK <<<Adresse des Geräts1WIRE WRITE ROM COMMAND: MATCH (0x55) *folgen Sie mit 64bit address1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0xAA <<<Befehl Scratchpad lesenBULK READ 0x03 BYTES:0x00 0x00 0x87 <<Der DS2431 setzt das oberste Bit des Schreibberechtigungscodes nach einem erfolgreichen Befehl zum Kopieren des Notizblocks. Senden Sie einen weiteren Befehl zum Lesen des Scratchpads (0xAA), um den aktualisierten Autorisierungscode abzurufen, aber lesen Sie nur die ersten drei Bytes (r:3). Der bisherige Wert 0x07 hat sich auf 0x87 geändert, der Kopierbefehl wurde erfolgreich empfangen. Schritt 6, lesen Sie die Werte zurück 1-WIRE>(0x55)(1) 0xf0 0x00 0x00 r:8 r:81WIRE BUS RESET OK <<<Gerät adressieren1WIRE WRITE ROM COMMAND: MATCH (0x55) *follow with 64bit address1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0xF0 <<<DS2431 read commandWRITE: 0x00 <<<2 byte read addressWRITE: 0x00BULK READ 0x08 BYTES: <<<lies die 8 Bytes die wir geschrieben haben0x08 0x07 0x06 0x05 0x0204 0x 0x08 Byte: <<Überprüfen Sie, ob der Schreibvorgang ordnungsgemäß funktioniert hat, indem Sie die Werte abrufen. Adressieren Sie den DS2431, senden Sie dann den Lesebefehl (0xf0) und die Adresse, von der gelesen werden soll (0x00 0x00). Es ist möglich, den gesamten Speicherbereich mit einem einzigen Befehl zu lesen. Wir lesen die acht Bytes, die wir zuvor geschrieben haben (r:8), die die erwarteten Werte zurückgeben. Die acht Bytes über diesen Werten wurden nicht geschrieben und geben 0 zurück.

Schritt 5: Fazit

Abschluss
Abschluss

FazitDieser Prototyp lehrt über EEPROM-Speicher und demonstriert die Verwendung des Bus Pirate mit drei gängigen Protokollen: 1-Wire, I2C und SPI der anspruchsvollere 1-Wire-Bus mit parasitär gespeisten Komponenten. Wir können 3EEPROM-Explorer-Board-Leiterplatten oder -Kits bei Seeed Studio produzieren lassen. Leiterplatten kosten etwa 10 US-Dollar, Kits etwa 15 US-Dollar, die weltweit versandt werden. Wir müssen einen Gruppenkauf von 10 PCB oder 20 Kits organisieren, um loszulegen.

Empfohlen: