mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu I2C


Autor: shania (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Alexander Ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: shania (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: shania (Gast)
Datum:

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

Autor: Alexander Ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.