Schritt 3: 24AA - / 24LC I2C EEPROM
Bus: I2C, Pull-up Widerstände erforderlich.
Leistungsbedarf: 1.8volts, 5.5volts (24AA), 2.5volts bis 5,5 Volt (24LC).
Referenzen: Datenblatt, eine Kundgebung zu hacken.
Komplette Bus Pirate Sitzungsprotokoll für diese Demonstration.
Ich konnte nicht einige Formatierungen und HTML-Tabellen in einer Instructable gehören, kann man das original auf dem gefährlichen Prototypen-Blog.
IC4 ist eine 24AA-Serie-I2C-EEPROM von Microchip, diese EEPROMs kommen in eine Tonne von Größen. AA Teile Arbeiten von 1.8volts nach 5.5volts, während die 24LC-Teile eine Mindestanforderung 2,5 Volt haben.
Ein 0.1uF Kondensator (C2) entkoppelt IC4 von der Stromversorgung trennen. Der Schreibschutz Pin (WP) von einem Mikrocontroller gesteuert werden konnte, aber für diese einfache Demo deaktivieren wir es mit einer Verbindung zum Boden. Die I2C-Bus-Pins, SDA und SCL, werden Header JP2 herausgebracht.
Die Adresse von den meisten 24AA EEPROMs ist 1010AAAS, mit den letzten vier Bits durch die Adresse Pins (A0, A1, A2) und das Lese/Schreib-Modus wählen Sie Bit (S) bestimmt. Alle Adressbits sind in diesem Beispiel geerdet, so ist die Schreibadresse des EEPROMs 10100000 (Datenblatt Seite 6).
Setup
Wenn Sie einen Bus Piraten verwenden, verbinden Sie es mit 3EEPROM oder 24AA-IC wie in das Diagrammbild unten gezeigt. I2C ist ein bidirektionaler Bus, der Pull-up Widerstände auf beide Pins erfordert. Die Bus-Piraten an Bord Pull-up Widerstände können Sie durch die Vpullup (Vpu) Verbindungsbolzen der 3,3-Volt-Stromversorgung und ermöglicht ihnen im Terminal.
Schnittstellen
Hinweis: Nicht alle I2C EEPROMs funktionieren genauso. Die winzigen 24AA01, hat zum Beispiel eine völlig andere Adressierung und Zugsicherung. Achten Sie darauf, das Datenblatt für Ihren Chip überprüfen.
Presse bin "in den Bus Pirate terminal und wählen Sie I2C aus dem Menü" Modus ". Aktivieren Sie die Netzteile (große "W") und die Pull-up-Widerstände ("p", Option 2) an der I2C-Eingabeaufforderung. Erhalten Sie einen Spannung-Bericht ("V") um sicherzustellen, dass die Netzteile sind auf und die Vpullup Pin an eine Spannung angeschlossen ist.
I2C > (0) <<< Liste der Makros zu bekommen
0 Makro-Menü
1,7-Bit-Adress-Suche
I2C > (1) <<< Adresse Suche Makro
Suche 7-Bit I2C-Adressraum.
Gefundenen Geräte an:
0xa0 0xA1 <<< gefundenen Geräte
I2C >
Wir wissen bereits, dass die I2C-Adresse 10100000, aber wir auch den Bus Piraten I2C Suchmakro (1) für die 24AA - Suche können. Das Suchmakro fand das Gerät auf die erwartete schreiben (0xA0) und Las (0xA1) Adressen.
Schritt 1: schreiben Sie einige Werte
I2C > [0b10100000 0 0 3 2 1]
I2C-STARTBEDINGUNG <<< I2C Startbedingung
SCHREIBEN: 0xA0 bekam ACK: Ja <<< 24AA-Schreibadresse
SCHREIBEN: 0 x 00 bekam ACK: Ja <<< Adresse Byte 1 schreiben
SCHREIBEN: 0 x 00 bekam ACK: Ja <<< Adresse Byte 2 schreiben
SCHREIBEN: 0x03 bekam ACK: Ja <<< 3 Werte (3,2,1) schreiben
SCHREIBEN: 0X02 BEKAM ACK: JA
SCHREIBEN: 0 X 01 BEKAM ACK: JA
I2C-STOP-Zustand <<< I2C-Stop-Bedingung
I2C >
Beginnen Sie das Schreiben mit einer I2C-Startbedingung ([]), gefolgt von der Adresse 24AA schreiben (0xa0). Als nächstes schicken Sie die 16-Bit-Adresse zu schreiben (0 0) und die Daten zu schreiben (3 2 1). Ende der I2C-Transaktion mit einer Stop-Bedingung (]).
Schritt 2: Positionieren Sie den Zeiger lesen Sie
I2C > [0b10100000 0 0]
I2C-STARTBEDINGUNG <<< I2C Startbedingung
SCHREIBEN: 0xA0 bekam ACK: Ja <<< 24AA-Schreibadresse
SCHREIBEN: 0 x 00 bekam ACK: Ja <<< Adresse Byte 1 schreiben
SCHREIBEN: 0 x 00 bekam ACK: Ja <<< Adresse Byte 2 schreiben
I2C-STOP-Zustand <<< I2C-Stop-Bedingung
I2C >
Es dauert zwei Operationen aus der 24AA zu lesen. Man positioniert den Lese-/Schreibzugriff Zeiger, andererseits gibt die Werte zurück.
Beginnen Sie mit einer I2C-Start-Bedingung ([]) und die Schreibadresse (0xa0). Senden Sie die 16-Bit-Adresse zu lesen (0 0), und dann die Stop-Bedingung (]). Wir senden nicht, keine Daten zu dieser Zeit schreiben wir nur den Lese-/Schreibzugriff Zeiger wieder an den Anfang der Daten positioniert, schrieben wir in Schritt 1.
Schritt 3, lesen Sie einige Werte
I2C > [0b10100001 R: 3]
I2C-STARTBEDINGUNG <<< I2C Startbedingung
SCHREIBEN: 0xA1 bekam ACK: Ja <<< 24AA lesende Adresse
BULK READ 0x03 BYTES: <<< 3 Werte zu lesen
0x03 0x02 0x01
I2C-STOP-Zustand <<< I2C-Stop-Bedingung
I2C >
Schritt 2 Stellen Sie den Lese-/Schreibzugriff Zeiger an den Anfang der Daten, die wir lesen möchten. Jetzt können wir die Daten unter Verwendung der 24AA-Lese-Adresse lesen.
Beginnen Sie mit den I2C Startbedingung ([]) und die 24AA lesende Adresse (0xa1). Lesen Sie die drei Werte schrieben wir in Schritt 1 (R3) und enden mit einer Stop-Bedingung (]). Wenn die Werte übereinstimmen, gelang Ihr schreiben.