Forum: Mikrocontroller und Digitale Elektronik Frage zu I2C


von shania (Gast)


Lesenswert?

Guten Tag!

Sehr viele ICs verwenden ja den I2C-Bus.
Das Prinzip gefällt mir sehr gut, aber braucht man wirklich nur 2
Leitungen? Das hieße ja, dass ich z.B. an einen µC mit 32 I/O-Pins
ganze 16 I2C-Geräte anschließen könnte, richtig?

Nehmen wir als Beispiel mal diesen CCD-Chip:
http://www.ovt.com/pdfs/ds_7141_7640.pdf

Dieses Teil hat 28 Pins und die Liste "erschlägt" mich regelrecht. Es
gibt da z.B. 8 Daten-Pins. Es finden sich aber auch die beiden Pins für
I2C (Clock und Data).

Müsste ich wirklich nur diese beiden I2C-Pins mit meinem µC verbinden
(abgesehen von der Stromversorgung etc.)? Sind diese Daten-Pins
sozusagen nur eine andere Möglichkeit der Kommunikation oder wie ist
das zu verstehen?
Ich würde dieses CCD-Gerät mit so wenigen Leitungen wie möglich
betreiben...

Danke im Voraus!

von Alexander Ernst (Gast)


Lesenswert?

Hallo shania,

zuerst zum I²C-Bus:
Man benötigt wirklich nur 2 Leitungen. Allerdings werden die
zusätzlichen Geräte (IC's) parallel an diese beiden Leitung vom µC
dazugeschalten, d.h. das du 30 I/O Pins immer frei hast. Vorher die
Busleitungen mit einem Pullup auf +5V ziehen. Eingeschränkt von der
Anzahl an "Slaves" ist man mit der kapazitiven Last gegen GND. Diese
darf 400pF nicht übersteigen. Als Richtwert bringt jeder angekoppelte
IC an den Bus 20pF Kapazität mit, so dass du 19 Geräte theoretsch
anhängen könntest.
Zu deinem Cam-Modul:
Auf Seite 3 wird auf weitere Literartur bezüglich des hier verwendeten
SCCB - Bus verwiesen. Müsstes dir halt vom Hersteller das Datenblatt
besorgen. Soweit ich das sehen konnte, steht nur "controlled" immer
dabei. Vielleicht werden damit nur die Funktionen des Moduls gesteuert
und die Pins Y0-Y7 sind der Datenausgang.

So far
Alex

von Peter D. (peda)


Lesenswert?

Der I2C-Bus arbeitet mit 7-Bit Adressen, d.h. Du kannst theoretisch bis
zu 128 I2C-ICs an die selben 2 Leitungen anschließen.

Benutzt Du Software-I2C mit 31 SDA-Leitungen und die SCL-Leitung für
alle gemeinsam, dann kannst Du sogar 31 * 128 = 3968 I2C-Bausteine
anschließen. das dürfte doch reichen oder.


Peter

von shania (Gast)


Lesenswert?

Hi Alex,

vielen Dank für Deine Antwort!
Ja, ich denke auch, dass es so ist wie Du sagst (mit dem CCD-Modul).
Das Modul wird wohl über den I2C-Bus (der SCCB-Bus entspricht diesem
soweit ich das sehen kann) nur gesteuert, z.B. Kontrasteinstellungen,
Farbkorrektur usw..
Die 8-Daten-Ausgang-Pins könnte ich dann mit einem Multiplexer auf
einen einzigen Pin reduzieren, richtig? Das hieße ich käme mit
insgesamt drei Leitungen aus...

Noch eine Frage. Du schreibst ja, dass man alle ICs parallel ansteuert.
Theoretisch müsste es aber doch auch gehen, für jedes Gerät zwei neue
Pins zu nehmen, oder? Zumindest solange die Slave-Geräte nicht
untereinander kommunizieren.

Z.B. an Pin 0 und 1 eine CCD und an Pin 2 und 3 irgendwas anderes?

von shania (Gast)


Lesenswert?

@Peter:
Auch an Dich dankeschön, habe Deinen Beitrag zu spät gelesen ;)
Ja, das müsste sehr gut reichen :)

von Alexander Ernst (Gast)


Lesenswert?

Hallo shania,
der µC hat nur an den dafür vorgesehenen PINs die Funktionseinheit
"I2C" bzw. bei Atmels AVR "TWI" implementiert. Also beim Atmega8535
sind das die Pins PC1 und PC0 für SCL und SDA. Und nur hier kannst du
deine seriellen Bausteine anklemmen, sonst nirgends! Bedeutet zwei
Strippen an die beiden Pins mit Pullup gegen +5V, und daran kannst du
dann beliebig die Peripherie parallel anklemmen. Wie der Bus dann
verwaltet wird (also das gezielte Ansprechen der Geräte) , habe ich
persönlich auch noch nicht ausprobiert.
Zum Multiplexen:
Es gibt von Philips I/O Erweiterungen. Für deinen Fall den PCF8574.
Schau dir mal das an:
http://www.goblack.de/desy/digitalt/i2c/signale.html
müsste eigentlich alle Fragen beantworten.

Viel Spaß,
Alex

von Jochen (Gast)


Lesenswert?

Kann auch sein das ich jetzt daneben haue, aber ich kann mir meiner
Meinung nach so viele SW-I2C-Busse machen wie ich lustig bin. Von Sinn
der ganzen Sache mal abgesehen.

Ich muss einfach nur das Protokoll entsprechen für zwei Pins
implementieren und dann tut das.

Lasse mich aber auch gerne korrigieren wenn das so nicht stimmt.

Schöne Tag noch, der Jochen

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.