Wie/Womit Einstieg in I2C?

Oct 15, 2013 49 Replies

XP de.comp.hardware.misc, de.sci.electronics F'up2 de.comp.hardware.misc



Hallo zusammen!



Ich spiele seit ein paar Wochen mit zwei Raspis und möchte mich ein bisschen in i2c einarbeiten. Womit kann ich erstmal auf ganz einfache Weise etwas Simples anfangen? Muss ich mir erstmal eine Art Slave-Baustein zulegen? Was für einen?



Naja, bislang weiß ich nur, dass es sich bei i2c um einen Zweidraht-Bus handelt. Also noch nicht allzu viel ...



Für Tipps bedankt sich schonmal



Gregor


Billig und einfach zu verwenden sind I2C EEPROMS. 24LC01B-I/P kostet 29 Cent bei Reichelt, da kannst du mehrere an einen Bus hängen und schauen ob das mit der Addresierung klappt und ob du zurücklesen kannst, was du reingeschrieben hast.

Viele Grüße, Johanens

>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa

Da gibt es viele Bausteine. Ein recht einfacher Baustein und gut geeignet zum Lernen, ist z.B. der PCA9555. Hier fertig aufgebaut, mit Serienwiderständen an allen IOs zum sicheren Experimentieren, und einem

3,3V Spannungsregler für die 5V vom Raspberry Pi (die 3,3V Leitung des Raspberry Pis darf nur mit maximal 50mA belastet werden)

formatting link

Nützlich ist auch der SE95 Temperatursensor. Damit kannst du relativ schnell einen Temperaturlogger bauen, der z.B. per Netzwerk abgefragt werden kann.

PS: Habe das Follow-up wieder gelöscht, da das Thema in de.sci.electronics auch gut passt.

Frank Buss, http://www.frank-buss.de electronics and more: http://www.youtube.com/user/frankbuss

Sowas in der Art würde ich auch vorschlagen. Der Vorteil bei einem Sensor ist erstmal, dass man damit anfangen kann, Daten auszulesen.

Wenn man mit einem EEProm anfängt, muss man erstmal was schreiben bevor man etwas lesen kann und wenn es nicht klappt, weiss man nicht, ob es an der Schreibroutine oder der Leseroutine lag.

Mein Tipp wäre ein PCF8583 gewesen. Das ist eine RTC mit einigen Bytes CMOS-Ram. Die Adressierung läuft aber nur über 8-Bit Adressen. Für EEProms benötigt man dann andere Routinen.

Es ist am Anfang eventuell einfacher, das I2C Protokoll per Software zu realisieren, als die Hardwarelösung des Controllers.

Gruß

Stefan

Am 15.10.2013 09:53, schrieb Gregor Szaktilla:

ich würde einen I2C Expander (z.B. PCA8574A) nehmen und LEDs bzw. Taster dranhängen.

Das währe für manche sogar ausgesprochen sinnvoll denn die Echtzeituhr fehlt im Raspi. Wer nicht am Netzwerk hängt ist zeitlos :-)

Der PCF8583 ist aber eher als zweiter Versuch geeignet weil er ein paar ordentliche Fallen bereithält.

Für erste Versuche tendier ich zum Portexpander.

Zur Kommunikation zwischen zwei Raspi ist IIC nicht wirklich geeignet.

MFG Gernot

Am 15.10.2013 13:15, schrieb Gernot Fink:

Das glaube ich sofort. Was ich (vielleicht) damit realisieren möchte, ist die Kommunikation zwischen einem Raspi und einem oder mehreren ATmega168.

Gruß

Gregor

Gregor Szaktilla :

I2C-Slave ist nicht ohne, wenn der Mega da aber eine fertige und bugfreie Hardwarelösung hat, dann dürfte es eigentlich recht einfach gehen - ist aber nicht gerade das Einsteigerprojekt.

M.

Am 15.10.2013 10:15 schrieb Johannes Bauer:

Böse Falle: Mehrere von diesem Typ an einem Bus klappt ganz bestimmt nicht.

Es gibt aber auch (andere) Typen, bei denen die Anschlüsse A0 bis A2 tatsächlich etwas bewirken.

HTH Markus

Am 15.10.2013 14:30, schrieb Matthias Weingart:

Da würde ich auch eher SPI oder Uart vorschlagen.

Gruß

Stefan

Am 15.10.2013 15:57, schrieb Markus Faust:

Ha, wie krass! Danke für den Hinweis. Wie dämlich ist das denn? Ich hab nur auf die Beschaltung geschaut und dann noch auf Figure 3-2 (Control Byte Allocation), da stehen sie als "Block Select Bits" drinnen mit "x"en.

Unten drunter steht dann halt: "x = Don't Care".

Da kann man echt fies reinfallen. Warum nennen die dann die Pins überhaupt A0, A1, A2? Will Microchip seine Kunden reinreiten?

Viele Grüße, Johannes

Am 15.10.2013 14:30, schrieb Matthias Weingart:

Naja, Einsteiger will ich auch nicht bleiben :-)

Gruß

Gregor

Richtig! Und mit der A-Version lernt man auch gleich auf das Kleingedruckte im Datenblatt zu achten und nicht nur von anderen den Code abzuschreiben. :-)

Oh...und wenn es was exotisches sein darf. Reichelt hat doch tatsaechlich noch den SAA1064.

Olaf

IIC als slave auf einem Multitasking/Multiserbetriebssystem ist ohne Zuasatzcontroller halt völlig danaben. Für mehr als ein akademisches "Na also. Es geht doch" reicht die Funktion nicht. Wegen des Wartens auf den Slave ist selbst eine 1200 Baud Uart Verbindung überlegen.

Mit zwei Raspi als IIC-Master geht das schon etwas besser. Wenn es sein muss nimm ein paar pcf8574 und klimper mit den Bits zusammen.

MFG Gernot

snipped-for-privacy@gmx.net (Gernot Fink):

Nicht unbedingt. Wenn I2C-Slave als gute Hardware (I2C-UART mit Interruptfähigkeit) ordentlich in dem Controller (bzw. ARM) implementiert ist, dann geht das eigentlich. Allerdings sind diese I2C-UART oft ziemlich bugbehaftet, so dass man das dann doch lässt... ;-(

M.

In dem Magazin gibt es einen Artikel zum I2C. Selbst etwas Hintergrundwissen wird vermittelt.

formatting link

HTH, Alex

Wenn einem das Wasser bis zum Halse steht, sollte man nicht auch noch den Kopf hängen lassen. (Chinesisches Sprichwort)

Am 15.10.2013 18:51, schrieb Olaf Kaluza:

Wieso noch? Den bekommst Du auch bei Farnell & Co...

Am 16.10.2013 20:20, schrieb Eric Brücklmeier:

Aber nicht im historischen DIL. ;-)

Gruß Dieter

Ich haette gedacht die sind schon lange obsolet. Die sind doch aus den

90ern. Es gab auch noch ein SAAxxxx da waren 6 oder 7 Leistungstreiber einem SIL Gehaeuse. Leuder habe ich die Nummer gerade vergessen.

Olaf

Für I/O via I2C kenne ich auch noch den PCF8574 (8x I/O). Gabs neulich mal bei Pollin billig. Z.B. brauchbar um LEDs oder ein LCD mit

4Bit-Anschluss über I2C anzusprechen.

Gerrit

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required