Hallo,
ich habe hier seltsame EEPROMs 24LC02B von Microchip,
die über einen ACK-Scanner mit 16 Adressen (160 bis 175, also 8 mal
Lesen&Schreiben) ansprechbar sind.
Laut Datenblatt sind die Pins A0 bis A2 nicht benutzt (Punkt 8.4) und
die korrespondierenden I2C-Adressbits unberücksichtigt (Punkt 3.6).
So lassen sich aber nicht acht sondern nur eines davon gleichzeitig am
I2C-Bus verwenden.
Ich habe hier bei der Recherche dieses EEPROM-Types noch nie etwas über
so eine Adressierung gelesen. Habe ich einen Denkfehler?
Ich hoffe, ich war verständlich.
Rolf schrieb:> ich habe hier seltsame EEPROMs 24LC02B von Microchip,> die über einen ACK-Scanner mit 16 Adressen (160 bis 175, also 8 mal> Lesen&Schreiben) ansprechbar sind.> Laut Datenblatt sind die Pins A0 bis A2 nicht benutzt (Punkt 8.4) und> die korrespondierenden I2C-Adressbits unberücksichtigt (Punkt 3.6).> So lassen sich aber nicht acht sondern nur eines davon gleichzeitig am> I2C-Bus verwenden.
Ohne die Adressleitungen A0-A2 kannst du nur eines an einem Bus
verwenden.
Dass dein Scanner das Teil unter 8 Adressen findet, liegt wohl daran,
dass der Chip auf die Adresse 1010xxx reagiert, die kommt beim
Durchprobieren halt 8 mal vor.
Das ist ganz normal für einen I2C EEPROM. Je nachdem ob der Adress-Pin
mit Masse oder Versorgungsspannung verbunden ist hat das jeweilige
Device eine andere I2C-Adresse. Mit den 3 Adress-Pins kannst du also
(mit dem gleichen Baustein) 2^3 also 8 verschiedene I2C-Adressen an
einem I2C-Bus haben. Wenn es die Pins nicht gäbe, so gäbe es nur eine
Adresse und dementsprechend könnte jeder I2C-Bus nur einen dieser
Speicherbausteine dran haben. Ansonsten hätten 2 Devices die gleiche
Adresse und das geht nicht.
Dann macht er doch genau das, was im Datenblatt steht: er ignoriert die
unteren 3 Adressbits - wo ist dein Problem?
Gabs schon bei anderen Typen.
Wer mehr Speicher braucht, schaltet eh nicht 2 oder mehr an den Bus,
sondern nimmt gleich die passende Grösse in einem Chip.
Das ganze dient einfach der Kostenminimierung, man spart sich
Adresslogik und das bonden für die 3 Pins. Alles gut.
Unberücksichtigt bedeutet wohl, dass es egal ist, welcher Pegel an
dieser Stelle über den Bus kommt. Das führt dazu, dass Du dasselbe
mehrfach im Adressraum siehst (man nennt es auch gespiegelt). Und das
mit Ansage. Dein IC macht also das, was im Datenblatt beschrieben ist.
Es ist ja vom Speicherplatz her ein eher kleines Eeprom.Microchip ist
beim Design wohl davon ausgegangen, dass man erstmal ein größeres
einsetzt, bevor man mehrere davon an den Bus hängt. Die größeren
dekodieren dann alle Adressbits.
Hallo Rolf,
ich bin auch schon mal in die gleiche Falle getappt. Das ist im
Datenblatt nicht gut dargestellt. Die Pins werden ja mit A0, A1 und A2
bezeichnet, sind aber intern nicht verbunden.
Es gibt aber von Microchip auch eine korrekte U 2C-Variante. Ich hab den
Typ jetzt gerade nicht parat.
Ich hoffe, dass mir der Fehler nicht mehr passiert.
> Das ist ganz normal für einen I2C EEPROM. Je nachdem ob der Adress-Pin> mit Masse oder Versorgungsspannung verbunden ist hat das jeweilige> Device eine andere I2C-Adresse.
[ ] Du hast das Datenplatt gelesen.
> Das ganze dient einfach der Kostenminimierung, man spart sich> Adresslogik und das bonden für die 3 Pins.
..und man bekommt ihn ohne Funktionseinschränkungen auch in einem
sot23-5 unter.
Wer mehr davon an einem Bus anschließen will greift zu einem
I2C-Muliplexer (oder behelfsweise zu Analogschaltern).
Naja, bisschen blöd ist schon, dass die 3 Pins mit A0, A1 und A2
bezeichnet sind, wie man es von anderen gewohnt ist.
Hätte man in der SO8-Zeichnung auch als nc bezeichnen können. Klar,
steht auch direkt dabei dass die keine Funktion haben, trotzdem unnötig.
Bei den etwas größeren I2C EEPROMs (04, 08, 16) werden die
Adressleitungen teilweise ebenfalls nicht ausgewertet, aber der Baustein
verwaltet unter den verschiedenen I2C-Adressen jeweils eine andere
256-Byte Page.
Die kleinen I2C EEPROMs haben im Protokoll nämlich nur 1 Byte für die
Adressübertragung vorgesehen. Also Aufpassen, was die eigene
EEPROM-Routine da sendet!