Forum: Mikrocontroller und Digitale Elektronik Mehrere serielle EEPROMs an einem I²C bus


von Konstantin H. (aerokos)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich möchte 4 24LC128 mit I²C bus an den PIC24F32KA302 anschließen. Da es 
mehrere EEPROMs sind, muss man die über die chip select bits A0-A2 
auswählen. Und genau da ist mein Problem.

Über die SDA-Leitung wird ein control byte gesendet (Abbildung 
DB_ausschnitt), wo die conrol bits integriert sind. Wie kann man die 
abgreifen und auf den chip select bus (Abbildung Schaltplan) legen 
ohnedie Pins des PICs zu beanspruchen?

Bitte habt Nachsicht, bin ein ziemlicher Neuling auf dem Gebiet.

Mit freundlichen Grüßen

Aerokos

von Falk B. (falk)


Lesenswert?

@ Konstantin H. (aerokos)

>mehrere EEPROMs sind, muss man die über die chip select bits A0-A2

Das sind Adressen, keine Chip Selects. Chip Selects sind normalerweise 
elektrische SIgnale, wie z.B. beim SPI-Bus.

> Wie kann man die
>abgreifen und auf den chip select bus (Abbildung Schaltplan) legen
>ohnedie Pins des PICs zu beanspruchen?

???

Ganz einfach. Du musst dem jeweiligen IC die Adresse schicken, die am 
Chip mit den Pins eingestellt ist. Die Pins werden fest an GND oder VCC 
angeschlossen. Somit kann man bis zu 2^3=8 ICs vom gleichen Typ an einen 
I2C Bus hängen. Der IC vergleicht die empfangene Adresse mit der an den 
Pins eingestellten Adresse und antwortet, wenn sie übereinstimmen.

von Joachim B. (jar)


Lesenswert?

oder anders gesagt, löten muss man !

das erste (nullte) EEPROM bekommt an A0 A1 A2 GND -> Sekundäradress 0
das zweite (erste) EEPROM bekommt an A1 A2 GND und an A0 VCC  -> 
Sekundäradress 1
das dritte (zweite) EEPROM bekommt an A0 A2 GND und an A1 VCC -> 
Sekundäradress 2
das vierte (dritte) EEPROM bekommt an A2 GND und an A0 und A1 VCC -> 
Sekundäradress 3

....
....

das achte (siebente) EEPROM bekommt an A0, A1 und A2 VCC -> 
Sekundäradress 7

und immer so weiter bis zu 8 dieser EEPROM mit gleicher Basisadresse

von Peter D. (peda)


Lesenswert?

Warum nimmst Du keinen AT24C512?

von Konstantin H. (aerokos)


Angehängte Dateien:

Lesenswert?

Vieln Dank für die ausführliche Hilfe. Jetzt sollte alles korrekt 
angeschlossen sein.


Gruß

von Mike (Gast)


Lesenswert?

Konstantin H. schrieb:
> Jetzt sollte alles korrekt angeschlossen sein.
Falls du nicht den 24LC128 in der Bauform CS einsetzt, sollte das so 
passen.

So ein Verdrahtungsplan ist allerdings etwas mehrdeutig, wenn weder 
Pinfunktion noch Bauform angegeben sind und man das Datenblatt nicht 
daneben liegen hat.

von Michael L. (michaelx)


Lesenswert?

Ganz einfach:

1010 ist der feste Adressteil, A2,A1,A0 der variable, den du über die 
drei gleichnamigen Pins am EEPROM vorgibst. - Natürlich bei jedem EEPROM 
eine andere Kombination. Einen bestimmten EEPROM sprichst du mit der 
Slave-Adresse an, die sich aus 1010 + Belegung der drei Adresspins 
ergibt.

Beachte, falls du später mal andere Typen verwenden willst:

Es gibt auch I2C-EEPROMs, bei denen A2, A1 und A0 nicht oder nur 
teilweise zur Adressierung mehrerer gleicher EEPROMs genutzt werden. 
Statt dessen sind diese dan Teil der Speicheradresse.

Alles klar?

von Konstantin H. (aerokos)


Lesenswert?

Mike schrieb:
> So ein Verdrahtungsplan ist allerdings etwas mehrdeutig, wenn weder
> Pinfunktion noch Bauform angegeben sind und man das Datenblatt nicht
> daneben liegen hat.

Ich habe meine eigene Bibiothek erstellen müssen, dewegen fehlt die 
Beschriftung. Das müsste ich korregieren. Ich verwende die Bauform 
PDIP/SOIC und habe die Verdrahtung nach dem Datenblatt erstellt.

Michael L. schrieb:
> Alles klar?

Ja, Danke! Die Programmierung an sich muss aber noch etwas warten

von i2c (Gast)


Lesenswert?

SCL und SDA müssen beide mittels PullUp-Widerständen auf die 
I/O-Spannung
des µCs gezogen werden.

Bei Ihnen dann wohl auf die 3V3.

Die 10k sind aber etwas hochohmig. Nehmen Sie 1k5.

Die Frage nach dem 24C512 ist aber noch offen und würde mich auch
interessieren.

Nebenbei sollten Sie sich auch an die gängigen Praktiken beim
Anlegen von Bauteil-Symbolen halten.
So sieht das aktuell in Ihrem Schaltplan einfach nur gruselig aus.

von i2c (Gast)


Lesenswert?

Und sehen Sie die Serienwiderstände (100R) in den Stichleitungen
zu den I2C-Devices vor.

Die Decoupling-Cs fehlen auch noch.

von Konstantin H. (aerokos)


Lesenswert?

i2c schrieb:
> SCL und SDA müssen beide mittels PullUp-Widerständen auf die
> I/O-Spannung
> des µCs gezogen werden.
>Bei Ihnen dann wohl auf die 3V3.
>Die 10k sind aber etwas hochohmig. Nehmen Sie 1k5.

Ich habe mich an diesen Datenblatt von Microchip orienriert
http://ww1.microchip.com/downloads/en/AppNotes/00974A.pdf

i2c schrieb:
> Die Frage nach dem 24C512 ist aber noch offen und würde mich auch
> interessieren

Es sind 4 Datensätze auf 4 Speicherbausteine, die in den Sockeln verbaut 
sind. Diese sollen bei bedarf schnell ausgetauscht werden können.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Konstantin H. schrieb:
> Schaltplan_berichtigt.gif

Nee, dein IC namens DATA_3 hat an den Adressbeinchen einen dicken 
Kurzschluss, du solltest die Leitung zwischen Pin 3 und 4 auftrennen, 
dann haben alle 4 IC eine einzigartige Adresse.

Konstantin H. schrieb:
>>Bei Ihnen dann wohl auf die 3V3.
>>Die 10k sind aber etwas hochohmig. Nehmen Sie 1k5.
>
> Ich habe mich an diesen Datenblatt von Microchip orienriert
> http://ww1.microchip.com/downloads/en/AppNotes/00974A.pdf

Gut, wenn Microchip das sagt..., aber an SCL muss auch noch ein Pullup 
ran.
Bei längeren und schnelleren I²C Verbindungen ist es aber wirklich 
ratsam, die Pullups zu verkleinern und kräftigere Treiber zu benutzen. 
Ein paar Dämpfungswiderstände im Bereich von 22 bis 100 Ohm in den 
Leitungen können sehr steilflankige Signale etwas 'beruhigen'.

von Konstantin H. (aerokos)


Lesenswert?

Matthias Sch. schrieb:
> Bei längeren und schnelleren I²C Verbindungen ist es aber wirklich
> ratsam, die Pullups zu verkleinern und kräftigere Treiber zu benutzen.
> Ein paar Dämpfungswiderstände im Bereich von 22 bis 100 Ohm in den
> Leitungen können sehr steilflankige Signale etwas 'beruhigen'.

Das Mit Pull-Ups hast du schon recht, jedoch sehe ich keine 
Notwendigkeit in den Dämpfungswiderständen, da die Leitungen sehr kurz 
sind. Um die Flanken steiler zu machen würde ich lieber auf die 
Leitungskapazitäte zugreifen. So wird ermöglicht eine steilere Flanke 
bei 100 Hz, 300 pF Kondesator und 2 kOhm Widerständen zu erreichen.

http://www.i2c-bus.org/de/terminierung-und-kapazitaeten/

von Falk B. (falk)


Lesenswert?

@ Konstantin H. (aerokos)

>Leitungskapazitäte zugreifen. So wird ermöglicht eine steilere Flanke
>bei 100 Hz, 300 pF Kondesator und 2 kOhm Widerständen zu erreichen.

???

>http://www.i2c-bus.org/de/terminierung-und-kapazitaeten/

So ein Quark. I2C hat mit TERMINIERUNG im HF-Sinn nichts am Hut. Rp ist 
ein Pull-Up Widerstand, keine Terminierung. Dass die ansteigenden 
Flanken bei kleineren Pull-Up Widerständen schneller werden, ist ja 
logisch.

von andi (Gast)


Lesenswert?

new BUS: SPI²C

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.