Schritt 4: DS2431 1-Wire EEPROM
Bus: 1-Wire, < 2.2Kohm Pull-up-Widerstand erforderlich.
Leistungsbedarf: 2.8volts, 5.25volts.
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.
Die DS2431 schöpft Kraft aus der Pull-up-Widerstand und braucht eine externe Versorgung oder Entkopplung Kondensator.
1-Wire braucht einen starke Pull-up-Widerstand, ein Maximum an 2.2Kohms. The Bus Pirate on-Board-Pull-up-Widerstände sind 10K, zu schwach, um richtig die DS2431 während schreibt macht. Sie ein 2.2Kohm oder kleineren externen Widerstand zwischen macht und die 1-Wire Bus Pin verwenden müssen. Haben Sie Schwierigkeiten, die Daten geschrieben werden, sicherstellen Sie, dass Ihre Pull-up-Widerstand groß genug ist. Die 3EEPROM Explorer Halbpension beinhaltet einen 1800 Ohm Pull-up-Widerstand (R1) auf dem 1-Wire-Bus, so dass keine externen Widerstand erforderlich ist.
Setup
Wenn Sie einen Bus Piraten verwenden, verbinden Sie es mit 3EEPROM Board oder DS2431 wie in dem folgenden Diagrammbild gezeigt. Der DS2431 nicht die Stromversorgung Pin erforderlich, es wird auf dem 3EEPROM-Brett verwendet, um der großen Pull-up-Widerstand für den 1-Wire-Bus macht.
Schnittstellen
Presse bin ' im Bus Pirate terminal und wählen Sie 1-Wire-Modus. Aktivieren Sie die on-Board-Netzteile (große "W") und überprüfen Sie die Spannungsüberwachung (V).
Schritt 1: finden Sie die Geräteadresse
1-WIRE > (0xf0) <<< 1-Wire Suchmakro
1WIRE ROM BEFEHL: SUCHE (0XF0)
Gefundenen Geräte an:
Makro 1WIRE Adresse
1.0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B <<< DS2431 eindeutige ID
* DS2431 1K EEPROM <<< Gerà ¤ tetyp bekannt
Gefunden Sie 0 x 01-Geräte.
Die ersten 10 Geräte-IDs stehen per Makro, sehen (0).
1-WIRE >
Jedes 1-Wire-Gerät besitzt eine einzigartige 8-Byte-ID. 1-Wire ist ein Suchverfahren, die die ID des alle angeschlossenen Geräte erkennt. Der Bus-Pirat implementiert die 1-Wire-Suche als Makro (240). Typ "(240)" im Bus Pirate Terminal 1-Wire-Suche starten.
Jede Geräteadresse wird gedruckt, bekannte Geräte werden erkannt. Die ersten zehn 1-Wire-Geräte-Adressen als Makros gespeichert sind, in diesem Beispiel ist unsere DS2431 Adresse durch Eingabe von "(1)" im Terminal zur Verfügung.
Schritt 2, 8 Bytes in den Notizblock schreiben
1-WIRE > (0x55) (1) 0x0f 0 0 8 7 6 5 4 3 2 1
1WIRE BUS RESET OK <<< auch {Befehl
1WIRE schreiben ROM Befehl: übereinstimmen (0x55) * folgen mit 64-Bit-Adresse
1WIRE ADRESSE MAKRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B "
SCHREIBEN: 0x0F <<< DS2431 Notizblock Schreibbefehl
SCHREIBEN: 0 x 00 <<< DS2431 Adresse Byte 1 schreiben
SCHREIBEN: 0 x 00 <<< DS2431 Adresse Byte 2 schreiben
SCHREIBEN: 0x08 <<< 8 Daten-Startwerte zu schreiben
SCHREIBEN: 0X07
SCHREIBEN: 0 X 06
SCHREIBEN: 0 X 05
SCHREIBEN: 0 X 04
SCHREIBEN: 0X03
SCHREIBEN: 0X02
SCHREIBEN: 0 X 01
1-WIRE >
Als nächstes schreiben wir 8 Byte an einen temporären Speicherort in der DS2431 bezeichnet den Notizblock.
Start die Transaktion mit einem 1-Wire-Bus zurückgesetzt und MATCH-Befehl (0x55). Beide sind als Makro "(0x55)". Dies geht auch ohne ein Makro durch Eingabe "{0x55", {sendet die 1-Wire Reset, 0x55 ist der 1-Wire-MATCH-Befehl.
Senden Sie nach dem MATCH-Befehl der 8-Byte-ID des Geräts an Adresse. Wir nutzten das Makro (1) das bevölkert wurde mit der DS2431 ID in Schritt 1. Sie könnte auch die 8-Byte-ID manuell eingeben. An dieser Stelle, die die DS2431 erhalten haben, sollten es ist Adresse und für Befehle bereit.
0x0F sagt der Schreibbefehl Notizblock, es der DS2431 Daten zu erwarten. Die nächsten zwei Bytes sagen es, wo die Daten abgelegt werden sollen, wir werden es am Anfang zu retten (0 0). Schließlich senden wir 8 Byte Werte zu speichern, die Nummern 8 bis 1.
Sie müssen eine vollständige 8 Byte der DS2431 schreiben. Darüber hinaus muss die Schreibadresse auf eine 8-Byte-Grenze sein. Sehen Sie das Datenblatt für eine vollständige Übersicht über die Grenzen schreiben.
Schritt 3, überprüfen Sie den Notizblock und bekommen den Authorisierungs-code
1-WIRE > (0x55)(1) 0xaa R3: R: R: 2 R 8,2
1WIRE BUS RESET OK <<< Adresse das Gerät
1WIRE schreiben ROM Befehl: übereinstimmen (0x55) * folgen mit 64-Bit-Adresse
1WIRE ADRESSE MAKRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
SCHREIBEN: 0xAA <<< Scratch Pad-Befehl zu lesen
BULK lesen 0x03 BYTES: <<< Authorisierungs-Code
0 x 00 0x00 0x07
BULK lesen 0x08 BYTES: <<< die Daten, die wir geschickt
0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01
BULK lesen 0x02 BYTES: <<< CRC für die Daten
0xc8 0x86
BULK lesen 0x02 BYTES: <<< alle 1 s nach CRC
0xFF 0xFF
1-WIRE >
Stellen Sie sicher, dass die Daten korrekt empfangen wurde, und erhalten einen Authorisierungs-Code schreiben.
Beginnen Sie wieder mit einem 1-Wire-Reset und MATCH Befehlsmakro (0x55) und das Gerät Adresse Makro (1). Dieser Zeit senden die DS2431 lesen Notizblock Befehl (0xAA) und lesen Sie dann insgesamt 15 Byte.
Die ersten 3 Bytes lesen (R3) sind den Authorisierungs-Code schreiben, brauchen wir es im nächsten Schritt kopieren Sie den Notizblock im EEPROM. Die nächsten 8 Bytes (R: 8) sollten die Daten übereinstimmen, schickten wir in Schritt 2. Die letzten 2 Bytes (R2) sind eine CRC16 für die Daten. Nachdem die CRC zurück alle 1 s liest.
Schritt 4, der Notizblock im EEPROM schreiben
1-WIRE > (0x55)(1) 0x55 0x00 0x00 0x07
1WIRE BUS RESET OK <<< Adresse das Gerät
1WIRE schreiben ROM Befehl: übereinstimmen (0x55) * folgen mit 64-Bit-Adresse
1WIRE ADRESSE MAKRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
SCHREIBEN: 0x55 <<< Scratch Pad-Befehl Kopieren
SCHREIBEN: 0 x 00 <<< 3-Byte-Authorisierungs-Code aus Schritt 3
SCHREIBEN: 0 X 00
SCHREIBEN: 0X07
1-WIRE >
Wir haben alles was wir brauchen die Notizblock-Daten dauerhaft im EEPROM zu speichern.
Adresse des Geräts, dann senden Sie den Befehl "DS2431 kopieren Notizblock" (0x55) gefolgt von den drei Byte-Authorisierungs-Code, wir in Schritt 3 abgerufen (0 x 00 0x00 0x07). Wenn der Authorisierungs-Code korrekt ist, werden die Daten im EEPROM verschoben.
Schritt 5, überprüfen Sie die Notizblock schreiben
1-WIRE > (0x55)(1) 0xaa R: 3
1WIRE BUS RESET OK <<< Adresse das Gerät
1WIRE schreiben ROM Befehl: übereinstimmen (0x55) * folgen mit 64-Bit-Adresse
1WIRE ADRESSE MAKRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
SCHREIBEN: 0xAA <<< Scratch Pad-Befehl zu lesen
MASSE 0X03 BYTES ZU LESEN:
0 x 00 0x00 0x87 <<< aktualisiert Authorisierungs-Code
1-WIRE >
Die DS2431 setzt der obere die meisten Bit des Autorisierungscodes schreiben nach einem erfolgreichen Kopierbefehl Notizblock. Senden Sie anderen lesen Scratch Pad-Befehl (0xAA), um den aktualisierten Authorisierungs-Code, aber lesen einfach die ersten drei Bytes (R: 3). Der vorherige Wert 0x07 auf 0x87 geändert hat, den Befehl "kopieren" wurde erfolgreich empfangen.
Schritt 6, die Werte auslesen
1-WIRE > (0x55)(1) 0xf0 0x00 0x00 R: R 8,8
1WIRE BUS RESET OK <<< Adresse das Gerät
1WIRE schreiben ROM Befehl: übereinstimmen (0x55) * folgen mit 64-Bit-Adresse
1WIRE ADRESSE MAKRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
SCHREIBEN: 0xF0 <<< DS2431 lesen Sie Befehl
SCHREIBEN: 0 x 00 <<< 2 Byte Adresse zu lesen
SCHREIBEN: 0 X 00
BULK READ 0x08 BYTES: <<< die 8 Bytes, wir schrieben, lesen
0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01
BULK READ 0x08 BYTES: <<< lesen Sie mehr Werte
0X00 0X00 0x00 0x00 0x00 0x00 0x00 0x00
1-WIRE >
Den Schreibvorgang funktionierte einwandfrei durch Abrufen der Werte zu überprüfen. Adresse DS2431, dann senden die Read-Befehl (0xf0) und die Adresse von (0x00 0x00) zu lesen.
Es ist möglich, den gesamten Speicherbereich mit einem einzigen Befehl zu lesen. Wir lesen die acht Bytes schrieben wir frühere (R: 8), die die erwarteten Werte zurückgegeben. Die acht Bytes hinter diesen Werten noch nicht geschrieben worden und 0 zurück.