Forum: Mikrocontroller und Digitale Elektronik EEPROM Speicher Richtig addresieren [I2C/Pi]


von Michael Snabred (Gast)


Lesenswert?

Guten Abend,
ich habe ein starkes Verständniss Problem:
Ich habe den M24C64 EEPROM von ST an meinen Raspberry Pi angeschlossen 
und generell funktioniert lesen und schreiben auch. Allerdings habe ich 
Probleme mit der genauen Addresierung von Speicher dessen Adresse 0x1f 
übersteigt !

Ich nutze auf dem Raspberry Pi die I2C Tools um mit dem EEPROM zu 
kommunizieren. Um vom EEPROM am Port 1 mit der Adresse 0x50 den Speicher 
an der Adresse 0x00 0x10 mit dem Wert 0x40 zu beschreiben nutze ich 
folgenden Befehl.

i2cset -y 1 0x50 0x10 0x09 0x40 i

Mit dem Befehl i2cdump -y 1 0x50 i kann ich mir dann die ersten 16*16 
Speicheradressen und deren Werte angucken. Wenn ich den zweiten Teil der 
Speicheradresse erhöhe (0x10,0x11 ...) dann verhält sich alles logisch 
nachvollziehbar und das byte wird halt eine "Stelle weiter gespeichert". 
Erhöhe ich aber den ersten Teil der Adresse (0x00 -> 0x01) dann 
speichert er den Wert quasi 16*8 Stellen weiter (bei Betrachtung durch 
i2cdump).

Interpretier ich i2cdump falsch oder wie muss ich die Adresse angeben 
damit ich den gesamten Speicher nutzen kann und der nicht große 
Wertebereiche überspringt ?

Hier der Datasheet:
https://cdn-reichelt.de/documents/datenblatt/A300/ST24C32_ST24C64%23STM.pdf

Hier eine Beispiel Ausgabe von i2cdump (nicht meine):
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
20: 8a 8b de bb c9 d8 d0 1d ff ff aa c1 9e c1 9e e3
30: ba cc a8 d8 b2 ed c2 e4 bb 3c 32 e1 e1 e1 00 00
40: 01 c3 00 00 00 00 40 50 2d 01 01 40 01 95 00 a3
50: 10 01 80 ff ff ff 00 00 11 ff ff ff ff ff ff ff
60: 8a 8b de bb c9 d6 d1 1d ff ff aa c1 9e c1 9e e3
70: ba cc a8 d8 b2 ed c2 e4 bb 3c 32 e1 e1 e1 00 00
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
a0: 8b 8b de bb c8 d9 d1 1d ff ff ab c1 9e c1 9e e3
b0: ba cc a8 d8 b2 ed c2 e4 bb 3c 32 e1 e1 e1 00 00
c0: 01 c3 00 00 00 00 40 50 2d 01 01 40 01 95 00 a3
d0: 10 01 80 ff ff ff 00 00 11 ff ff ff ff ff ff ff
e0: 8a 8a de bb c9 d8 d1 1d ff ff aa c1 9e c1 9e e3
f0: ba cc a8 d8 b2 ed c2 e4 bb 3c 32 e1 e1 e1 00 00

Mfg
Michi

von gvs (Gast)


Lesenswert?

rtfm

Michael Snabred schrieb:
> Um vom EEPROM am Port 1 mit der Adresse 0x50 den Speicher
> an der Adresse 0x00 0x10 mit dem Wert 0x40 zu beschreiben nutze ich
> folgenden Befehl.
>
> i2cset -y 1 0x50 0x10 0x09 0x40 i
Adresse 0x00 0x10 ?
  i2cset [-y] i2cbus chip-address data-address value [mode] [mask]

Michael Snabred schrieb:
> Hier eine Beispiel Ausgabe von i2cdump (nicht meine):
Warum?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.