De 24LS256 is als volgt aangepakt: 1010A2A1A0. Als u alleen met 1 EEPROM werkt, is het gemakkelijkste te verbinden A2-A0 met grond. Dit geeft het adres van 1010000, dat 0 × 50 is Hex. In lezen en schrijven naar de EEPROM moet men beseffen dat het heeft 32 kB (actuall32767) en één byte is niet genoeg om al het geheugen.
Dus als men wil verzenden lezen en/of schrijven verzoeken, men moet voor het verzenden van twee bytes – voor de MSB of hogere einde van het adres (de 8 bits van links naar rechts), en de volgende voor de LSB of onderste eind van het adres (de laatste 8 bits van links naar rechts).
Als men wil bijvoorbeeld adres 21000 gebruiken, dat gaat als volgt: In binary, 21000 is 0101001000001000. Die opgesplitst in 01010010 en 00001000, dan de binaire waarden terug omzetten in numerieke bytes om met Wire.send() te verzenden.
Dat klinkt ingewikkelder dan het is, want er zijn in feite twee operanden om dat te doen. Deze eerste is >>, ook bekend als "bitshift recht". Dit zal de hoogste (links) deelnemen aan de byte en drop off de onderkant, waardoor alleen de eerste 8 bits. Als u op de onderkant van het adres op de (rechts), kan men gebruik maken van exploitant &, ook wel bekend als 'bitsgewijze AND'. Deze operand, platformen 0xFF krijgt de lagere bits.
Schrijven van gegevens naar de 24LS256
Schrijven gegevens is vrij eenvoudig. Eerste Initialiseer de I2C-bus met:
Wire.beginTransmission(0x50); voor pinnen A0 ~ A2 ingesteld op GND
Sommige gegevens vervolgens te verzenden. De eerste gegevens moeten worden verzonden zijn de twee bytes voor het adres (25000) wil naar het geheugen te schrijven.
Wire.send (21000 >> 8); Stuur de MSB van het adres
Wire.send (21000 & 0xFF); Stuur de LSB van het adres
Vervolgens sturen de byte op te slaan op adres 21000 en sluit vervolgens de verbinding:
Wire.send(15); enkel '15' te verzenden als voorbeeld
Wire.endTransmission();
Dat concludeert het schrijven. nu voor de lezing:
Lezen van gegevens uit de 24LS256
Lezing is min of meer vergelijkbaar. Eerst initialiseren van de verbinding en geef het adres van de gegevens te lezen:
Wire.beginTransmission(0x50); Gekozen basisadres
Wire.send (21000 >> 8); MSB van het adres sturen
Wire.send (21000 & 0xFF); LSB van het adres sturen
Wire.endTransmission();
Geef het aantal gegevensbytes te lezen vanaf het huidige adres:
Wire.beginTransmission(0x50); basisadres
Wire.requestFrom(0x50,1); Wij willen één byte
Wire.receive(inbyte);
'Inbyte' is hier een byte variabele gekozen voor het opslaan van de gegevens die zijn opgehaald uit de EEPROM.
De kracht van de I2C-bus is natuurlijk dat de verschillende apparaten kunnen worden aangesloten op dezelfde lijnen. De bovenste figuur verschijnt een dergelijke set met twee EEPROMs. Het is de sleutel natuurlijk dat ze hebben elk hun eigen adres. In de afbeelding heb ik gekozen om adressen 0 × 50 en 0 × 51 te gebruiken. Dat krijgt men door A0-A2 verbinden met grond voor één chip, maar verbinden van A0 tot Vcc ('High') voor de tweede chip. Het resulterende adres is dan 1010001 = 0x51
En thats it.
Een print ontwerp kan worden gevonden hier
Ca. kosten: 2 euro