Stap 3: 24AA - / 24LC I2C EEPROM
Bus: I2C, pull-up weerstanden vereist.
Stroomvereisten: 1.8volts naar 5.5volts (24AA), 2.5volts tot 5.5 volt (24LC).
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.
IC4 is een 24AA-serie I2C EEPROM van Microchip, deze EEPROMs komen in een ton van de maten. AA onderdelen werken van 1.8volts 5.5volts, terwijl de 24LC-delen een minimumvereiste van 2,5 volt hebben.
Een 0.1uF condensator (C2) loskoppelt IC4 uit het stopcontact haalt. De schrijfbeveiliging pin (WP) kan worden bediend vanuit een microcontroller, maar voor deze eenvoudige demonstratie we deze uitschakelen met een verbinding met de grond. De I2C bus pennen, SDA en SCL, zijn gebleken voor koptekst JP2.
Het adres van de meeste 24AA EEPROMs is 1010AAAS, met de laatste vier stukjes bepaald door de adres-pinnen (A0, A1, A2) en de lezen/schrijven-modus Selecteer bit (S). Alle bits van het adres zijn geaard in dit voorbeeld dus het adres schrijven van de EEPROM 10100000 (gegevensblad pagina 6 is).
Setup
Als u van een Bus Pirate gebruikmaakt, aansluiten op de 3EEPROM of 24AA-IC zoals weergegeven in de grafiekafbeelding hieronder. I2C is een bidirectionele bus waarvoor pull-up weerstanden op beide pinnen. U kunt de Bus Pirate's aan boord pull-up weerstanden door de pin van de Vpullup (Vpu) verbinden met de 3.3 volt voeding en deze wilt inschakelen in de terminal.
Interfacing
Opmerking: Niet alle I2C EEPROMs werken hetzelfde. De kleine 24AA01, bijvoorbeeld, heeft een compleet andere aanpak en seingevingssysteem. Zorg om het gegevensblad voor uw chip.
Pers ben ' in de Bus Pirate terminal en selecteer I2C in het menu modus. De voedingen (grote ' W') en de pull-up weerstanden ('p', optie 2) bij de I2C-prompt inschakelen. Krijg een rapport van de spanning ('v') om ervoor te zorgen de voedingen zijn op en de Vpullup pin is aangesloten op een spanning.
I2C > (0) <<< krijgen van de lijst met macro's
0. macro menu
1.7 bits adres zoeken
I2C > (1) <<< adres zoekmacro gebruiken
Zoeken 7 bit I2C-adresruimte.
Gevonden apparaten op:
0xa0 0xA1 <<< gevonden apparaten
I2C >
We weten al dat de I2C adres 10100000 is, maar we de Bus Pirate's I2C zoekmacro (1) ook gebruiken kunnen om te zoeken naar de 24AA-. De zoekmacro vond van het apparaat op de verwachte schrijven (0xA0) en lees (0xA1) adressen.
Stap 1, schrijven sommige waarden
I2C > [0b10100000 0 0 3 2 1]
I2C START voorwaarde <<< I2C start voorwaarde
SCHRIJVEN: 0xA0 kreeg ACK: Ja <<< 24AA / schrijven adres
SCHRIJVEN: 0x00 kreeg ACK: Ja <<< schrijven byte van het adres 1
SCHRIJVEN: 0x00 kreeg ACK: Ja <<< schrijven byte van het adres 2
SCHRIJVEN: 0x03 kreeg ACK: Ja <<< 3 waarden te schrijven (3,2,1)
SCHRIJVEN: 0X02 KREEG ACK: JA
SCHRIJVEN: 0X01 KREEG ACK: JA
I2C STOP-voorwaarde <<< stop-voorwaarde voor I2C
I2C >
Het schrijven met een I2C start-voorwaarde ([]), gevolgd door het adres van de 24AA-schrijven (0xa0) begint. Vervolgens sturen de 16-bits adres te schrijven op (0 0) en de gegevens te schrijven (3-2-1). Einde de I2C-transactie met een stop-voorwaarde (]).
Stap 2, lees de aanwijzer
I2C > [0b10100000 0 0]
I2C START voorwaarde <<< I2C start voorwaarde
SCHRIJVEN: 0xA0 kreeg ACK: Ja <<< 24AA / schrijven adres
SCHRIJVEN: 0x00 kreeg ACK: Ja <<< schrijven byte van het adres 1
SCHRIJVEN: 0x00 kreeg ACK: Ja <<< schrijven byte van het adres 2
I2C STOP-voorwaarde <<< stop-voorwaarde voor I2C
I2C >
Het duurt twee operaties te lezen uit de 24AA. Men plaatst de aanwijzer lezen/schrijven, anderzijds de waarden worden geretourneerd.
Beginnen met een I2C start-voorwaarde ([]) en het adres van de schrijven (0xa0). Stuur het 16-bits adres te lezen (0 0), en vervolgens de stop-voorwaarde (]). Niet sturen we geen gegevens om te schrijven deze keer dat we net geplaatst de lees/schrijf-aanwijzer terug naar het begin van de gegevens die we hebben geschreven in stap 1.
Stap 3, lees sommige waarden
I2C > [0b10100001 r: 3]
I2C START voorwaarde <<< I2C start voorwaarde
SCHRIJVEN: 0xA1 kreeg ACK: Ja <<< 24AA-lezen adres
BULK Lees 0x03 BYTES: <<< 3 waarden lezen
0x03 0x02 0x01
I2C STOP-voorwaarde <<< stop-voorwaarde voor I2C
I2C >
Stap 2-set de lees/schrijf-aanwijzer naar het begin van de gegevens die we willen lezen. Nu kunnen we het lezen van de gegevens met behulp van het adres van de 24AA-lezen.
Beginnen met de start-voorwaarde van de I2C ([]) en het adres van de 24AA-lezen (0xa1). Lees de drie waarden schreven we in stap 1 (r: 3), en eindigen met een stop-voorwaarde (]). Als de waarden overeenkomen, dan is uw schrijven was succesvol.