Stap 4: DS2431 1-Wire EEPROM
Bus: 1-Wire, < 2.2Kohm pull-up weerstand nodig.
Stroomvereisten: 2.8volts naar 5.25volts.
Referenties: gegevensblad, Hack een demonstratie van de dag.
Compleet Bus Pirate sessie logboek voor deze demonstratie.
Ik kon niet bepaalde opmaak en de HTML-tabellen opnemen in een Instructable, kunt u de oorspronkelijke op de blog van gevaarlijke Prototypes.
De DS2431 haalt zijn spanning uit de pull-up weerstand en heeft geen behoefte aan een externe leveringen of ontkoppeling condensator.
1-wire moet een sterke pull-up weerstand, een maximum van 2.2Kohms. The Bus Pirate on-board pull-up weerstanden zijn 10K, te zwak om goed de macht van de DS2431 tijdens het schrijven. Moet u een 2.2Kohm of kleinere externe weerstand tussen macht en de 1-Wire bus pin. Als u problemen ondervinden bij het schrijven van gegevens, controleert u of dat uw pull-up weerstand is groot genoeg. Het 3EEPROM explorer bord bevat een pull-up weerstand van 1800 ohm (R1) op de 1-Wire bus zodat er geen externe weerstand nodig is.
Setup
Als u van een Bus Pirate gebruikmaakt, aansluiten op de 3EEPROM kamer of DS2431 zoals weergegeven in de grafiekafbeelding hieronder. De DS2431 de macht levering pin niet nodig, het wordt gebruikt op het 3EEPROM-bord aan de macht van de grote pull-up weerstand voor de 1-Wire-bus.
Interfacing
Pers ben ' in de Bus Pirate-terminal en selecteer 1-Wire-modus. Inschakelen van de on-board voedingen (grote ' W') en controleert u de monitor van de spanning (v).
Stap 1, vindt u het apparaatadres
1-WIRE > (0xf0) <<< 1-Wire zoekmacro
1WIRE ROM OPDRACHT: ZOEK (0XF0)
Gevonden apparaten op:
Macro 1WIRE adres
1.0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B <<< DS2431 unieke ID
* DS2431 1K EEPROM <<< apparaattype heet
Gevonden 0x01 apparaten.
De eerste 10 apparaat-id's zijn beschikbaar door MACRO, zie (0).
1-WIRE >
Elk 1-Wire-apparaat heeft een unieke 8 byte-ID. 1-wire heeft een zoekprocedure die de ID van alle aangesloten apparaten detecteert. De Bus piraat implementeert de 1-Wire-zoekopdracht als macro (240). Type '(240)' in de Bus Pirate terminal om de 1-Wire-zoekopdracht te starten.
Het apparaatadres van elk wordt afgedrukt, bekende apparaten worden geïdentificeerd. De eerste tien 1-Wire apparaat adressen worden opgeslagen als macro's, in dit voorbeeld het adres van onze DS2431 is beschikbaar door '(1)' in de terminal te typen.
Stap 2, 8 bytes naar het Kladblok schrijven
1-WIRE > (0x55) (1) 0x0f 0 0 8 7 6 5 4 3 2 1
1WIRE BUS-RESET OK <<< ook {opdracht
1WIRE schrijven ROM opdracht: overeenkomen met (0x55) * volgen met 64-bits adres
1WIRE ADRES MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B '
SCHRIJVEN: 0x0F <<< DS2431 schrijven Kladblok opdracht
SCHRIJVEN: 0x00 <<< DS2431 schrijven byte van het adres 1
SCHRIJVEN: 0x00 <<< DS2431 schrijven byte van het adres 2
SCHRIJVEN: 0x08 <<< start 8 gegevenswaarden te schrijven
SCHRIJVEN: 0X07
SCHRIJVEN: 0X06
SCHRIJVEN: 0X05
SCHRIJVEN: 0X04
SCHRIJVEN: 0X03
SCHRIJVEN: 0X02
SCHRIJVEN: 0X01
1-WIRE >
We schrijven volgende 8 bytes naar een tijdelijke locatie in de DS2431 genaamd het Kladblok.
Start de transactie met een 1-Wire-bus-reset en MATCH command (0x55). Beide zijn beschikbaar als macro '(0x55)'. Dit kan ook worden gedaan zonder een macro door te typen "{0x55', {stuurt het 1-Wire-resetten, 0x55 is de 1-Wire MATCH opdracht.
Na de MATCH opdracht, de 8 byte-ID van het apparaat naar adres te verzenden. We gebruikten de macro (1), die werd bevolkt met de DS2431-ID in stap 1. U kan ook de 8 byte-ID handmatig invoeren. Op dit punt die de DS2431 moeten krijgen het adres is en worden klaar voor opdrachten.
0x0f is de opdracht write Kladblok, vertelt het de DS2431 te verwachten van de gegevens. De volgende twee bytes te vertellen waar de gegevens plaatsen, bewaren we het aan het begin (0 0). Tot slot, wij sturen 8 bytes van waarden op te slaan, de getallen 8 tot en met 1.
U moet een volledige 8 bytes schrijven aan de DS2431. Bovendien moet het adres schrijven op de grens van een 8-byte. Zie het gegevensblad voor een compleet overzicht van de beperkingen van het schrijven.
Stap 3 Controleer of de Kladblok en krijgen de authorisatiecode
1-WIRE > (0x55)(1) 0xaa r: 3 r: 8 r: 2 r: 2
1WIRE BUS-RESET OK <<< adres van het apparaat
1WIRE schrijven ROM opdracht: overeenkomen met (0x55) * volgen met 64-bits adres
1WIRE ADRES MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
SCHRIJVEN: 0xAA <<< Lees Kladblok opdracht
BULK Lees 0x03 BYTES: <<< authorisatiecode
0x00 0x00 0x07
BULK lezen 0x08 BYTES: <<< de we verzonden gegevens
0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01
BULK lezen 0x02 BYTES: <<< CRC voor de gegevens
0xC8 0x86
BULK lezen 0x02 BYTES: <<< alle 1s na CRC
0xFF 0xFF
1-WIRE >
Controleren of de gegevens correct werd ontvangen en krijgen een authorisatiecode schrijven.
Opnieuw beginnen met een 1-Wire-reset en MATCH opdracht macro (0x55), en het apparaat adres macro (1). Deze tijd verzenden de DS2431 lezen Kladblok command (0xAA) en lees vervolgens een totaal van 15 bytes.
De eerste 3 bytes lezen (r: 3) zijn de authorisatiecode schrijven, moeten we het in de volgende stap om te kopiëren van het Kladblok naar de EEPROM. De volgende 8 bytes (r: 8) moet overeenkomen met de gegevens die we bij stap 2 hebt verzonden. De laatste 2 bytes (r: 2) zijn een CRC16 voor de gegevens. Na de CRC terugkeer alle 1s leest.
Stap 4, het Kladblok schrijven naar de EEPROM
1-WIRE > (0x55)(1) 0x55 0x00 0x00 0x07
1WIRE BUS-RESET OK <<< adres van het apparaat
1WIRE schrijven ROM opdracht: overeenkomen met (0x55) * volgen met 64-bits adres
1WIRE ADRES MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
SCHRIJVEN: 0x55 <<< kopiëren, opdracht Kladblok
SCHRIJVEN: 0x00 <<< code van de vergunning van 3 bytes vanaf stap 3
SCHRIJVEN: 0X00
SCHRIJVEN: 0X07
1-WIRE >
Wij hebben alles wat die we nodig voor het opslaan van de Kladblok-gegevens permanent in de EEPROM.
Adres van het apparaat, dan stuurt de DS2431 kopieeropdracht Kladblok (0x55) gevolgd door de drie byte authorizatiecode we in stap 3 hebt opgehaald (0x00 0x00 0x07). Als de autorisatie-code juist is, worden de gegevens wordt verplaatst naar de EEPROM.
Stap 5, controleert u of de Kladblok schrijven
1-WIRE > (0x55)(1) 0xaa r: 3
1WIRE BUS-RESET OK <<< adres van het apparaat
1WIRE schrijven ROM opdracht: overeenkomen met (0x55) * volgen met 64-bits adres
1WIRE ADRES MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
SCHRIJVEN: 0xAA <<< Lees Kladblok opdracht
BULK 0X03 BYTES LEZEN:
0x00 0x00 0x87 <<< authorisatiecode bijgewerkt
1-WIRE >
De DS2431 wordt de bovenste meeste bit van de code van de vergunning schrijven na een succesvolle kopieeropdracht Kladblok. Stuur een ander lezen Kladblok command (0xAA) om de bijgewerkte authorizatiecode, maar lees net de eerste drie bytes (r: 3). De vorige waarde 0x07 is veranderd naar 0x87, het copy commando succesvol werd ontvangen.
Stap 6, oplezen van de waarden
1-WIRE > (0x55)(1) 0xf0 0x00 0x00 r: 8 v: 8
1WIRE BUS-RESET OK <<< adres van het apparaat
1WIRE schrijven ROM opdracht: overeenkomen met (0x55) * volgen met 64-bits adres
1WIRE ADRES MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
SCHRIJVEN: 0xF0 <<< DS2431 Lees opdracht
SCHRIJVEN: 0x00 <<< 2 byte Lees het adres
SCHRIJVEN: 0X00
BULK lezen 0x08 BYTES: <<< de 8 bytes we schreven lezen
0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01
BULK lezen 0x08 BYTES: <<< Lees meer waarden
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
1-WIRE >
Controleer of het schrijven goed gewerkt door het ophalen van de waarden. Het adres van de DS2431, dan stuur het lezen command (0xf0) en het adres om te lezen van (0x00 0x00).
Het is mogelijk om te lezen de hele geheugenbereik met een enkele opdracht. We lezen de acht bytes schreven we eerder (r: 8), die de verwachte waarden geretourneerd. De acht bytes buiten deze waarden niet hebt geschreven en 0 terug te keren.