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!
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.
Du kannst bis zu 8 Stück 24C164, 24C32..24C512 an den selben Bus hängen. Oder 4 Stück 24C1024.
Warum nicht einfach 1 größeres, pinkompatibles (8K) EEprom statt 3 kleine?
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.
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...
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
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.
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.
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
>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.
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)
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)
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.