Adressierung des 24LC1025

Guten Tag @ all

Ich habe ein Problem mir einem EEPROM vom Typ "24LC1025" (Datenblatt: http://ww1.microchip.com/downloads/en/DeviceDoc/20001941L.pdf) bzw. mit dessen Programmierung der I²C-Adressierung.
Da ich im Datenblatt selbst nur sehe das man durch die Beschaltung von A0 / A1 & A2 die Adresse von 0x50 bis 0x57 festlegen kann jedoch nicht welche Belegung welche Adresse ergibt, habe ich im Internet folgende Beschaltungstabelle gefunden:


Hierbei bedeutet ON --> Ground und OFF --> +5V

Beschalte ich jetzt jedoch den EEPROM mit der Codierung für 0x50 und gebe diese Adresse auch im Arduino-Programm an so bekomme ich nur Datensalat im Seriellen-Monitor ausgegeben.
Ändere ich z.B. die EEPROM-Adresse auf 0x54 und belasse die des Programmes auf 0x50 so funktioniert die Ausgabe der abgespeicherten Werte plötzlich.

Die Frage is nun was läuft hier falsch? - entweder die Tabelle ist nicht richtig oder der EEPROM macht einfach was er will ...

Hat hier schon jemand Erfahrungen mit diesem EEPROM oder einem Baugleichen gemacht was die Adressierung angeht?

Gruß Scorch

Such den I2CScanner Sketch im Playground oder von Nick Gammon ...

  • A0 .. A2 dürfen nicht unbeschaltet sein.
    ( Hoffe das beleidigt dich nicht ) :wink:

Hi,
Also ich habe ein kleineres 24LC64 die A0 A1 A2 auf Ground.
WP Pin auch auf Ground.
Lässt sich bespielsweise so i2c_eeprom_write_byte(0x50,Adresse,data) beschreiben

Hast du Pull-UP Widerstände verbaut ?

Wobei mein EEprom ist ein 24LC64 analog dazu müsste deines 24LC1024 heißen, das es auch gibt.
Evtl. liegt hier ein Unterschied vor, habe beide Datasheets verglichen...

This device has both byte write and page write capability of up to 128 bytes of data.

Das 24LC1024 hat 256 bytes pro Seite.

Was für eine EEprom Lib benutzt du - oder hast du was selbstgebautes ?

Nur zur Info: Pin A2 muss beim genannten IC immer auf Vcc gesetzt werden:

Datenblatt:
Non-Configurable Chip Select.
This pin must be hard-wired to logical 1 state (VCC). Operation will be undefined with this pin left floating or held to logical 0 (VSS).

Scorch:
Hierbei bedeutet ON --> Ground und OFF --> +5V

Das konnte ich dem Datenblatt nicht entnehmen, ist aber vermutlich der Grund für dein oben beschriebenen Datensalat, eben weil der A2-Pin falsch beschaltet wurde.

Vielen Dank für eure Tipps und sorry das ich so spät antworte (war am WE anderweitig eingebunden XD)

michael_x:
Such den I2CScanner Sketch im Playground oder von Nick Gammon ...

  • A0 .. A2 dürfen nicht unbeschaltet sein.
    ( Hoffe das beleidigt dich nicht ) :wink:

Den Scanner hab ich entdeckt, jedoch gab die Ausgabe bisjetzt für mich keinen Sinn - glaube aber langsam geht mir ein Licht auf :wink:

    1. Mein Englisch ist nicht gerade gut, aber das man an A2 5V anlegen muss hatte ich gelesen. (@ michael_x: Keine Sorge - bin keineswegs beleidigt^^)
    1. A2 immer auf 5V ergab für mich keinen Sinn, denn wie sollte man so 0x50 bis 0x57 realisieren
    1. Der Scanner warf mit 2 Adressen aus (vermeintlich die des EEPROMs sowie meines Unos) - da nun jedoch noch ein Mega am I²C hängt müssten es laut dieser Logik 3 Einträge sein - es bleiben jedoch 2, die sich noch dazu beide ändern, wenn ich die Pins des EEPROM anderster beschalte ...
    1. Schlussfolgerung: Der Scanner liest nicht die Adressen der Boards mit ein sondern NUR die Adresse des EEPROM und wie man mit 2 Pins (A0 & A1) 8 Adressen realisieren kann: es werden 2 Adressen gesendet --> die wenn A2 auf Grnd sowie auf 5V gelegt ist

Ist aber momentan noch Therorie - muss ich heute nach der Schule unbedingt mal an der Hardware testen (sollte jetzt langsam mal los :D)

Gruß Scorch

Der Arduino ist der Master. Der I2C Scanner spuckt diese Adresse nicht aus.

aus den Datenblatt http://ww1.microchip.com/downloads/en/devicedoc/21941e.pdf :
"Cascadable up to four devices" und "Functional address lines allow up to four devices on the
same data bus." also nur 4 Adressen
"A2 : on-Configurable Chip Select. This pin must be hard-wired to logical 1 state (VCC). Devicewill not operate with this pin left floating or held to logical 0 (VSS)" als A2 muß auf 5V geschaltet werden.
WP muß auf +5V

Das EEprom hat 2 I2C Adressen da mit einer 16 Byte Adresse ( 2 Adressbyte auf den I2C Bus gesendet) nicht der gesamte Speicherbereich angesprochen werden kann.
Darum ist ein Bit in der Adresse für eine der beiden Speicherbereiche zuständig. (Siehe Bilder 5-1 und 5-2 im Datenblatt)
Adressbyte ist folgendermaßen zusammengesetzt:
1 0 1 0 B0 A1 A0
B0 ... Block Adress Bit
A0, A1 Adress Pins.
"A control byte is the first byte received following the Start condition from the master device (Figure 5-1).
The control byte consists of a 4-bit control code; for the 24XX1025, this is set as ‘ 1010 ’ binary for read and write operations. The next bit of the control byte is the block select bit (B0). This bit acts as the A16 address bit for accessing the entire array. The next two bits of the control byte are the Chip Select bits (A1, A0). "

Grüße Uwe

Danke für die klasse Erklährung zur Adressierung, uwefed!

Gruß Scorch