Forum: Mikrocontroller und Digitale Elektronik I2C EEPROM Alternative Adresse


von Gallioleo (Gast)


Lesenswert?

Hallo in die Entwicklergemeinde,

ich habe folgendes Problem: An einem I2C Bus habe ich einen EEPROM 
hängen. I2C Adressbereich 0x50 - 0x57. Nun hätte ich an dem gleichen Bus 
einen weiteren EEPROM gehängt. Überraschung: Nun brauche ich ein 
weiteres EEPROM, welches nicht auf diesen Adressbereich hängt. Als ich 
mit der Suche startete, dachte ich, so groß kann das Problem ja nicht 
sein. Vor allem bei den 2kByte Speichern würde es sich ja anbieten, die 
Adresspins (hier nicht genutzt) für das setzen der DeviceID (oberen 3Bit 
der Slave Addresse zu nutzen). Leider fehlanzeige, so ein EEPROM habe 
ich nicht gefunden.

Nun zur Frage kennt jemand ein EEPROM welches nicht auf dem 
Adressbereich 0x50-0x57 hängt?

Ansonsten bestünde noch die Möglichkeit einen Adressübersetzungschip von 
Linear zu nutzen: http://www.linear.com/product/LTC4316


Vielen Dank für eure Hilfe!

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Normalerweise haben EEPROM's 3 Adress-Eingänge A0..A2, somit kann man 8 
EEPROM's parallel an einem Bus anschließen, indem man jedem EEPROM seine 
eigene Adresse gibt.

Zeige mal das Datenblatt von Deinem EEPROM.

Sollte Dein EEPROM nicht diese Adress Eingänge haben, dann suche Dir ein 
anderes aus das diese hat.

von Peter D. (peda)


Lesenswert?

Du kannst bis zu 8 Stück 24C164, 24C32..24C512 an den selben Bus hängen.
Oder 4 Stück 24C1024.

von Joe F. (easylife)


Lesenswert?

Warum nicht einfach 1 größeres, pinkompatibles (8K) EEprom statt 3 
kleine?

von Dieter W. (dds5)


Lesenswert?

Joe F. schrieb:
> Warum nicht einfach 1 größeres, pinkompatibles (8K) EEprom statt 3
> kleine?

Ganz einfach: dann braucht man ein Adressbyte mehr im Protokoll.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Dieter W. schrieb:
> Ganz einfach: dann braucht man ein Adressbyte mehr im Protokoll.

Ja und? Ist das Problem dass es dann zu viel Zeit braucht?

Dann nehme lieber ein SPI EEPROM, das kann mit mehreren MHz getaktet 
werden.

Ein Dataflash kann 16MByte...

von Frank K. (fchk)


Lesenswert?

Gallioleo schrieb:

> Nun zur Frage kennt jemand ein EEPROM welches nicht auf dem
> Adressbereich 0x50-0x57 hängt?

Du verwendest wahrscheinlich ein 24*02. Nimm statt dessen ein 24*025, 
und Dein Problem ist gelöst.

* ist AA,LC,C

fchk

von Gallioleo (Gast)


Lesenswert?

Frank K. schrieb:
> Du verwendest wahrscheinlich ein 24*02. Nimm statt dessen ein 24*025,
> und Dein Problem ist gelöst.

Nein, Leider nicht. Sonst wäre ich ja schon längst fertig :D. Es handelt 
sich um 2kByte, also sprich 16kbit. Den 24*16 Type habe ich schon 
verbaut. Daher ist ja der Adressraum 0x50-0x57 (7Bit Adr) voll und ich 
Suche nach Alternativen :-)

Viele Grüße und schon mal besten Dank für die rege Diskussion.

von EEProm (Gast)


Lesenswert?

Gallioleo schrieb:
> Frank K. schrieb:
>> Du verwendest wahrscheinlich ein 24*02. Nimm statt dessen ein 24*025,
>> und Dein Problem ist gelöst.
>
> Nein, Leider nicht. Sonst wäre ich ja schon längst fertig :D. Es handelt
> sich um 2kByte, also sprich 16kbit. Den 24*16 Type habe ich schon
> verbaut. Daher ist ja der Adressraum 0x50-0x57 (7Bit Adr) voll und ich
> Suche nach Alternativen :-)
>
> Viele Grüße und schon mal besten Dank für die rege Diskussion.

Ich verstehe das Problem nicht. Du kannst doch 8 EEproms eines Typs 
parallel an den Bus hängen. Du musst doch nur jedem Chip eine andere 
Adresse geben. Dafür sind die 3 Adressbits doch da.

von Joe F. (easylife)


Lesenswert?

EEProm schrieb:
> Du musst doch nur jedem Chip eine andere
> Adresse geben. Dafür sind die 3 Adressbits doch da.

Ja, ich glaube auch, dass du das mit den Adressen noch nicht ganz 
verstanden hast.
Adressbereich 0x50 - 0x57 heisst, dass du jedem EEprom dieses Typs 
eine von diesen 8 möglichen Adressen per Beschaltung der externen 
Adresspins zuweisen kannst.
Ein EEprom belegt also nicht alle 8 Adressen, sondern nur eine davon.

Update:
Oha. Mein Fehler.
Gibt wohl Devices, die intern einen "Block select" über die Adresse 
machen, und dann tatsächlich alle 8 Adressen belegen.
Schweinerei... ;-)

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

>Ja, ich glaube auch, dass du das mit den Adressen noch nicht ganz
>verstanden hast.

Hat er nicht.

>Adressbereich 0x50 - 0x57 heisst, dass du jedem EEprom dieses Typs
>eine von diesen 8 möglichen Adressen per Beschaltung der externen
>Adresspins zuweisen kannst.
>Ein EEprom belegt also nicht alle 8 Adressen, sondern nur eine davon.

Diese Adresspins sind bei den 2k Dingern unused.
Die Teile sind quasi 8 256Byte EEPROMs in einem.

Ich habe mal I2C EEPROMs mit anderer Adresse als 0x50 gesehen,
aber das waren Exoten. Nimm einen größeren.

von A. S. (Gast)


Lesenswert?

Eigentlich sollten verschiedene Aufgaben verschiedene Adressbereiche 
haben. Z.B. Speicher bei 0x5X, so dass man 8 verschiedene Speicher 
(verschiedener Module) auslesen kann. Die "Sondernutzung", dass 8 
Speicher vereint sind um die Adressierung zu verkürzen ist quasi schon 
ein abuse. Und zahllose Speichervarianten mit anderer (hardwired) 
Adresse würden den Busgedanken ad absurdum führen. Wenn man so eine 
fremde Hardware scannt, kann man meist viele Adressen schon direkt 
auslesen (4 Speicher: Gib doch mal alles ab Adresse 0 aus und schaue was 
drinn steht. 2 Uhrenbausteine: Mehrmals lesen und nach den 
Sekunden/millisekunden suchen)

von Bernhard S. (b_spitzer)


Lesenswert?

Frank K. schrieb:
> Du verwendest wahrscheinlich ein 24*02. Nimm statt dessen ein 24*025,
> und Dein Problem ist gelöst.
Der hilft auch nicht. Die Bausteinadresse ist ebenfalls 1010A2A1A0.

Alternativ wäre noch der Einsatz eines Bus-Multiplexers denkbar. PCA9544 
bzw. TCA9544 (nebenbei machen die noch Level-Tanslation von 1,8V bis 5V 
Vcc)

von Peter D. (peda)


Lesenswert?

Gallioleo schrieb:
> Nein, Leider nicht. Sonst wäre ich ja schon längst fertig :D. Es handelt
> sich um 2kByte, also sprich 16kbit. Den 24*16 Type habe ich schon
> verbaut.

Wer zwingt Dich denn, den Sonderfall 24C16 zu benutzen?
Oben habe ich die Typen genannt, die bis zu 8 Stück am selben Bus 
zulassen.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Gallioleo schrieb:
> ich habe folgendes Problem: An einem I2C Bus habe ich einen EEPROM
> hängen. I2C Adressbereich 0x50 - 0x57.


Gallioleo schrieb:
> Nein, Leider nicht. Sonst wäre ich ja schon längst fertig :D. Es handelt
> sich um 2kByte, also sprich 16kbit. Den 24*16 Type habe ich schon
> verbaut. Daher ist ja der Adressraum 0x50-0x57 (7Bit Adr) voll und ich
> Suche nach Alternativen :-)


Bitte schreibe mal GAAANNNZZZZ genau ob es nur 1 EEPROM ist oder ob Du 
schon 8 EEPROM's am Bus hängen hast!!!

Es wird endlich mal Zeit dass wir hier vollständige Informationen 
erhalten, ansonsten können wir nicht helfen.

z.B. Schaltplan von allen Bausteinen am I2C Bus.

von A. S. (Gast)


Lesenswert?

Markus M. schrieb:
> Bitte schreibe mal GAAANNNZZZZ genau ob es nur 1 EEPROM ist oder ob Du
> schon 8 EEPROM's am Bus hängen hast!!!

nun, er hat einen 24*16 am Bus, der die Adressen 0x50 bis 0x57 belegt 
(bzw. 0xA0 bis 0xAF wenn man RW als LSB interpretiert)

Er sucht (warum auch immer) halt nicht sein Heil in 
10Bit-(oder-mehr-)Adressierung, sondern hatte gehofft, ein Pendant mit 
z.B. 0x60..0x67
zu finden. Frommer wunsch, aber durchaus verständlich.

Und, da er nicht der erste ist, vielleicht sogar erfüllbar.

von Gallioleo (Gast)


Lesenswert?

Ja und es gab auch schon mal einen IC der die DeviceID per Pin 
konfigurieren konnte: Xicor 24164 
(http://pdf.datasheetcatalog.com/datasheets/70/289767_DS.pdf). 
Inzwischen leider abgekündigt.

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.