Wie/Womit Einstieg in I2C?

Oct 15, 2013 49 Replies

Am 16.10.2013 20:30, schrieb Dieter Wiedmann:

Soo?

formatting link

Ach? So ging der Teilfaden doch los...

Am 16.10.2013 20:30, schrieb Dieter Wiedmann:

Yo, hast Recht - zwar noch in den Programmen, aber nicht mehr lieferbar...

Selbst wenn das ordentlich geht will der Master irgendwann Daten von Slave abfragen. Dazu schickt er die Anforderung los und wartet. Per Uart kommt irgendwann automatisch die Antwort. Per IIC muss der Master fragen ob schon etwas da ist oder lange warten....

Gernot

MFG Gernot

Brille aufsetzen :-)

Zitat "Veralteter Artikel; für nähere Informationen bei Digi-Key anrufen" und Vorrat Null.

Gruesse, Joerg http://www.analogconsultants.com/

Zum Ansteuerung mit dem Raspberry Pi gut geeignet, aber Hintergrundwissen bekommt man besser in dem Wikipedia-Artikel:

formatting link

Und für die Details kann man die Spezifikation lesen, die gegenüber manch anderen Spezifikation gut verständlich geschrieben ist:

formatting link

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

Noch als Anmerkung: die ganzen Kapitel über Multi-Master Betrieb und Arbitration kann man erstmal ignorieren, ist mir in freier Wilbbahn noch nie begegnet. Und auch alles oberhalb dem 400 KHz Fast Mode findet man selten.

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

Am 16.10.2013 21:00, schrieb Eric Brücklmeier:

Schau mal auf die verfügbare Menge.

Gruß Dieter

Und unbedingt merken, wo man gegentreten muss, wenn I2C haengt. Das steht in 3.1.16.

Zitat "The device that held the bus LOW should release it sometime within those nine clocks. If not, then use the HW reset or cycle power to clear the bus".

Should ... sometime ... if not ... power cycle. Wenn man die Wahl hat, ist SPI besser. Fuer mission-critical Systeme wurde ich I2C nicht nehmen.

Gruesse, Joerg http://www.analogconsultants.com/

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

Das ist aber falsch. Der Master gibt den Takt vor und der Slave hat da an den Taktflanken seine Daten abzuliefern (wenige Ausnahmen gibt es, die dann clock stretching machen). Warten muss der Master da nirgends! Also I2C-Master ist absolut problemlos auch ohne UART unterzubringen - ganz im Gegensatz zu I2C Slave oder auch 1 Wire. Das Problem in Controllern ist ja, dass Task da von anderen Tasks unterbrochen werden können. I2C-Master (oder auch SPI-Master) verkraftet das, I2C-Slave oder 1 Wire nicht. I2C-Slave muss sich an den vom Master vorgegebenen Takt halten und 1 wire muss bestimmte Timings einhalten.

M.

Johannes Bauer :

Ich glaub die kleinen EEPROMS hatten noch nie ein funktionierendes Adressselect. Vermutlich Kostenersparnis (brauch man 2 Drähte weniger zu bonden).

M.

Am 16.10.2013 21:34, schrieb Dieter Wiedmann:

Jaaahaaaa, hatte ich doch schon gemerkt!

Am 16.10.2013 21:12, schrieb Joerg:

Noch sinds 120%

Joerg :

Naja dieses ClockStretching ist mir bei den einfachen I2C-Chips, die ich in der Hand hatte, auch noch nicht begegnet. Das hat man nur, wenn da nen uC als I2C-Slave dran ist, der es sich ausbittet warten zu dürfen, weil die Bytes für seinen billigen 1byte-I2C-Slave-Uart nicht schnell genug von der Interruptroutine nachgeliefert werden ;-(. Falls der uC dann abstürzt, lässt er den andren dann auch hängen. Ja, sowas nehm ich auch nicht gern.

M.

Was ist wenn der Slave die Daten erst beschaffen muß? Den Bus solange anhalten bis der Slaveprozess nach xxx Millisekinden wider dran ist?

MFG Gernot

Am 17.10.2013 08:18 schrieb Matthias Weingart:

Doch, es gibt definitiv Typen, die das haben (AT24C01B, AT24C01C, Microchip hat WIMRE auch welche im Sortiment).

Markus

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

Wenn ungültige Daten da sind (z.B. ADC) dann liest der Controller ungültige Werte zurück. Da gibt es meist im ersten Byte ein Statusflag, das anzeigt ob die Daten gültig sind oder nicht. Da muss der uC pollen oder die zusätzlich INT-Leitung lesen.

M.

Normalerweise funktioniert das. Solche "Verklemmungen" entstehen aber nach meinen Erfahrungen meistens durch unsaubere Signale. Leider ist der Bus prinzipbedingt bei High-Pegel relativ hochohmig, sodass schnell mal was einkoppeln kann. Außerdem sollte man auch mal kontrollieren, dass die Timing-Spezifikationen aller Bauelemente eingehalten werden. Bei ausgedehnten Bussen (hohe Leitungskapazitäten) können die Anstiegszeiten (rise time) in kritische Bereiche kommen. Da hilft auch niedrigere Taktfrequenz nicht.

Markus

Du gluecklicher. Bei mir wurde ab 40 eine Brille fuer Lesen und Feinarbeiten noetig.

Wie kriegt man 120% hin? Bei uns ist die Hoechststufe 20/20, was den Augen eines gesunden Jugendlichen entspricht.

Gruesse, Joerg http://www.analogconsultants.com/

Ich habe das auch in Situationen gesehen, in denen der uC nicht schuld war. Wo der Haenger auch ohne ihn passierte. Die empfohlene "Loesung" war dann Power Cycle. Selbst bei Jux-Elektronik wie einer Stereoanlage waere das nicht so toll. Ist aber ewig her, ich verwende seit mindestens

10 Jahren kein I2C mehr. Habe aber schonmal mit Debugging zu tun, wenn Kundeningenieure das einsetzten. Erstaunlicherweise kannten viele die Methode "SCL-Rappeln" nicht, das loeste das Problem oft. Ein mulmiges Gefuehl bleibt aber. Es erinnert mich zu sehr an die alten Fernseher, die man schonmal durch Dagegentreten "reparieren" konnte.
Gruesse, Joerg http://www.analogconsultants.com/

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required