Ich habe zwei I2C Devices (24C08) die ich an einen Mikrocontroller anschließen werde. Ich hätte gerne eine Auswahlmöglichkeit zwischen EEPROM 1 und EEPROM 2 - geht das einfach per Jumper? Also so wie der Schaltplan im Anhang? R1, R2, R3 sind 2,2 kOhm
theoretisch schon...aber du kannst auch beide EEproms gleichzeitig betreiben (ohne Jumper) einfach durch unterscheidliche Adressvergabe an den A0 bis A2 Pins der EEproms Gruss Uwe
Die Taktleitung musst du auch trennen. Umd bei den E²Proms würde ich schwache Pull-Up Widerstände (z.B. 47k) vorschalten, damit sie nicht auf zufällige Signale "aus der Luft" reagieren. Eleganter wäre es, beide E²Proms parallel zu schalten und durch unterschiedliche Adressen zu unterscheiden. Du könntest z.B. an A0 jeweils einen Jumper mit Pull-Up Widerstand anklemmen. Der Chip, wo der Jumper gesteckt ist, fühlt sich angesprochen. Oder Du schließt den Jumper an den Mikrocontroller an und fragst ihn per Software an. Dann brauchst Du nur einen Jumper, keinen Pull-Up Widerstand und verdrahtest A0 beim einen Chip auf High und beim anderen auf Low.
Eher SCL als SCA auftrennen. Oder den EEPROMs per Jumper unterschiedliche Adressen geben, das wäre vermutlich am saubersten.
mmm schrieb: > Warum micht Parallelbetrieb? Adressen natürlich anpassen. Das ist quasi ein fertiges System wo der Nutzer zwischen zwei Speicherinhalten wählen kann. Also muss ich SCL auch trennen?
OK, die Frage nochmal klar: Was muss ich trennen? - SDA - SCL - SCL und SDA - VDD
NUR SDA. Und hinter dem Jumper muß noch ein Pullup hin, daß das getrennte SDA sicher auf high liegt. SCL kann verbunden bleiben. Durch die Flanken am SCL zieht der EEPROM minimalst mehr Strom, das sollte aber kein Problem sein.
Nachtrag: Wenn Du VCC trennen willst, dann müssen auch beide SDA und SCL getrennt werden, sonst bekommt der Chip VCC über die beiden Leitungen - das tut ihm vermutlich nicht gut.
Wurde schon knapp erwähnt, warum betreibst du nicht beide EEPROMs zeitgleich, jedoch eben mit anderer Adresse. Den EEPROM den dein uC letztendlich verwendet könntest du durch einen Jumper an einem Portpin ermittlen. Je nachdem ob der Pin 1 oder 0 ist, verwendest du die Adresse für EEPROM1 oder EEPROM2. Ebenso könntest du einen Jumper auf bspw. den A0 Pin der EEPROMs setzen, wodurch der Jumper die Adresse des EEPROM ändert. Also du hast einen PullDown Widerstand von 100k an dem A0 Pin beider EEPROMs. Dann hast du einen Stecker mit 3 Pins wobei der mittlere Pin VCC ist, der rechte auf A0 vom EEPROM2 geht, der linke auf A0 vom EEPROM1. Wird der Jumper links gesetzt so ist A0 vom EEPROM1 auf VCC, wird der Jumper rechts gesetzt so ist A0 von EEPROM2 auf VCC, ist kein Jumper drin, so ist A0 beider EEPROMs auf VSS und es spricht keiner an. Oder eben du trennst den EEPROM vom Netz und kappst du Bus Leitung, was ich als das umständlichste ansehe da es die meisten Jumper benötigt.
So, noch mal eine Frage zur Widerstanddimensionierung, ich arbeite mit 3,3 V. PullUp SDA/SCL 2,2 k. PullDown A0 100k, ist das nicht ein wenig viel? Haut das so hin?
Da ich Batterieanwendungen meist baue verwende ich fast ausschließlich 100k als Pull-Up/Down. Falls der Stromverbrauch nicht kritisch bei dir ist, kannst du auch problemlos 10k oder irgendwas dazwischen verwenden, 100k sollten aber gut in normalen Umgebungen funktionieren. 2.2kOhm für I2C ist schon recht niedrig, funktioniert aber auf alle Fälle. 4.7k ist so ein typischer Standarwert. Es kommt eben drauf an wieviele Geräte am Bus hängen: http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html
Peter K. schrieb: > PullDown A0 100k, ist das nicht ein wenig viel? Pull-Down auf A0 hilft gar nichts. Bei den 24C08 oder LC08 von Microchip sind die Anschlüsse A0 bi A2 nicht intern verbunden, machen also nichts. Bei den CAT24C08 von On Semi, den M24C08 von ST oder den AT24C08 von Atmel ist jeweils nur der Pin A2 belegt. Die CAT24C08 haben zudem einen internen Pull-Down von ungefähr 100k, die anderen beiden nicht. Also wenn, dann kannst Du nur die Leitung A2 nehmen. Dazu benutzt Du einen Jumper mit 3 Kontakten. An den mittleren legst Du 5V über 1k Pull-Up, an die beiden äußeren kommt jeweils ein Signal A2 von den EEPROMS. Die Leitungen werden am EEPROM mitt 100k gegen GND geklemmt, entweder über den internen Pull-Down oder über einen externen. Wenn Du jetzt den Pull-Up mit der Leitung A2 vonn EEPROM 1 verbindest, erwartet EEPROM 1 auf Bit 3 der Slave-Adresse eine 1 und EEPROM 2 eine 0. Jetzt musst Du dich nur noch dafür entscheiden, ob bei Dir diese Bit bei der Übertragung 1 oder 0 ist. Das kannst Du fest lassen, der Jumper selektiert dann, ob sich EEPROM 1 oder 2 angesprochen fühlt, das jeweils andere reagiert nicht.
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.