EEPROM Speicher Richtig addresieren [I2C/Pi]

Gast #3836195
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
Gast #3836253
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?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.