I2C müsste doch theoretisch Kurzschlüsse verursachen

Gast #4931739
Lesenswert?
• ▲
▼
Hi,

ich habe mich schon seit längerer Zeit damit beschäftigt, statt SPI mit 
I2C eine EEPROM, die hier bei mir noch rumliegt, anzusteuern.
Allerdings möchte ich verstehen, wie über zwei Drähte Daten gesendet und 
empfangen werden.
So, wie ich das verstehe, wird bei I2C bei einer Flanke (z.B. High-Low) 
gesendet und bei Low-High dann empfangen.
Aber müssten dann nicht dauernd Kurzschlüsse entstehen?
Wenn der sendende IC High ausgibt, dann kann dieser zwar, bevor der 
angesteuerte IC einen Takt erhält, auf Low gehen, aber wenn dann der 
andere IC High ausgibt, dann entsteht ein Kurzschluss.

Sind intern Widerstände bzw. spezielle I2C-Empfangsschaltungen 
enthalten?

Mikrocontroller können nur High oder Low oder PWM ausgeben, aber nicht 
den Pin von High UND Low trennen..

ich bin dankbar für jede gute Erklärung.
i2c eeprom: 24LC16B

Pascal

P.S. das Prinzip an sich verstehe ich gut.
Da ich in SPI viel erfahrener bin, gibt es vielleicht SPI-> I2C-Wandler?
Die wären sicher sehr hilfreich. Am besten im dip 8 package.
Gast #4931743
Lesenswert?
• ▲
▼
Da entsteht kein Kurzschluss weil der Bus nur nen Pull-Up hat, keiner 
der angeschlossenen Geräte gibt aktiv HIGH aus. Es fließt immer nur 
Strom in den SDA/SCL Pin, er liefert nie welchen.

Der 10k Pullup wird allerdings tatsächlich kurzgeschlossen wenn man so 
will.
Gast #4931744
Lesenswert?
• ▲
▼
Pascal schrieb:
> P.S. das Prinzip an sich verstehe ich gut.

scheinbar nicht.

wiki https://de.wikipedia.org/wiki/I%C2%B2C

[...]
Im Diagramm rechts sind drei Geräte eingezeichnet. I²C benötigt zwei 
Signalleitungen: Takt- (SCL = Signal Clock) und Datenleitung (SDA = 
Signal Data). Beide liegen mit den Pull-up-Widerständen RP an der 
Versorgungsspannung VDD. Sämtliche daran angeschlossenen Geräte haben 
Open-Collector-Ausgänge, was zusammen mit den Pull-up-Widerständen eine 
Wired-AND-Schaltung ergibt.
[...]

Es wird keine High ausgegeben.
(Firma: Schweigstill IT) Persönliche Seite #4931753
Lesenswert?
• ▲
▼
Pascal schrieb:
> Mikrocontroller können nur High oder Low oder PWM ausgeben, aber nicht
> den Pin von High UND Low trennen..

Falsch.

> P.S. das Prinzip an sich verstehe ich gut.

Nein, Du hast offenbar so wirklich gar keine Ahnung davon. Zunächst 
solltest Du Dich mit den Grundlagen der Digitalelektronik 
auseinandersetzen, und dazu gehören eben auch die "analogen" 
Eigenschaften der Signale.
Gast #4931759
Lesenswert?
• ▲
▼
Andreas S. schrieb:
> Nein, Du hast offenbar so wirklich gar keine Ahnung davon. Zunächst
> solltest Du Dich mit den Grundlagen der Digitalelektronik
> auseinandersetzen, und dazu gehören eben auch die "analogen"
> Eigenschaften der Signale.

Das wäre doch schon zu hoch für den TO. Mit dem ohmschen Gesetz
würde ich mal anfangen.
Beitrag #4931766 wurde von einem Moderator gelöscht.
Beitrag #4931777 wurde von einem Moderator gelöscht.
#4931778
Lesenswert?
• ▲
▼
THOR schrieb:
> Da entsteht kein Kurzschluss weil der Bus nur nen Pull-Up hat, keiner
> der angeschlossenen Geräte gibt aktiv HIGH aus. Es fließt immer nur
> Strom in den SDA/SCL Pin, er liefert nie welchen.
>
> Der 10k Pullup wird allerdings tatsächlich kurzgeschlossen wenn man so
> will.

Hallo Pascal,
THOR hat so weit recht. Aber der Pullup wird nicht kurzgeschlossen, 
sondern die Spannung an SDA bzw. SCL. Dann fliesst maximal I = U / R 
Strom über den Pullup gegen Masse.
mfg klaus
Beitrag #4932387 wurde von einem Moderator gelöscht.
Beitrag #4932412 wurde von einem Moderator gelöscht.
Gast #4932421
Lesenswert?
• ▲
▼
Pascal schrieb:
> Aber müssten dann nicht dauernd Kurzschlüsse entstehen?

Nein, die Ausgänge von I2C Master und Slave sind über wirred OR (in 
negativer Logik) zusammengeschaltet. Sobald einer die SDA-Leitung mit 
seinem Open-Kollektor Ausgang nach 0V zieht, liegt (etwas) 0V auf der 
Leitung. Der Strom, der immer versucht, den Bus auf VDD zieht, kommt von 
dem bei I2C immer erforderlichen Pull-Up Widerstand, aber nicht von 
Master oder Slave.
#4932541
Lesenswert?
• ▲
▼
Wolfgang schrieb:
> Nein, die Ausgänge von I2C Master und Slave sind über wirred OR (in
> negativer Logik) zusammengeschaltet. Sobald einer die SDA-Leitung mit
> seinem Open-Kollektor Ausgang nach 0V zieht, liegt (etwas) 0V auf der
> Leitung. Der Strom, der immer versucht, den Bus auf VDD zieht, kommt von
> dem bei I2C immer erforderlichen Pull-Up Widerstand, aber nicht von
> Master oder Slave.

dummerweise sind nicht alle 5V Teile ohne pullups, doof halt wenn die 
auf 5V ziehen RTC DS3231 aber einer nicht 5V tolerant ist Raspi.

Es gibt auch I2C Slave die nicht oc (Open-Kollektor) sind, das muss man 
dann genau wissen oder untersuchen, sicherer ist man immer wenn I2C 
devices mit der passenden Spannung laufen und laufen können, also

alle 5V oder alle 3,3V das ist optimal, Mischbetrieb kann Probleme 
machen oder Nebenwirkungen haben.
Gast #4932598
Lesenswert?
• ▲
▼
Joachim B. schrieb:
> dummerweise sind nicht alle 5V Teile ohne pullups, doof halt wenn die
> auf 5V ziehen RTC DS3231 aber einer nicht 5V tolerant ist Raspi.

Dann muss man vielleicht mal mit zwei Bussegmenten arbeiten (5V bzw. 
3.3V) und einen Pegelkonverter dazwischen setzen.
http://www.nxp.com/documents/application_note/AN10441.pdf

Lothar M. schrieb:
> Oder gleich ein "Wired And": nur wenn alle Teilnehmer ein High (= kein
> Low) ausgeben kommt auf dem Bus ein High zustande.

Ich finde es logischer, sich auf den aktiven Zustand zu beziehen (i.e. 
sobald ein Teilnehmer aktiv ist) und das drückt sich besser durch ODER 
aus.
Gast #4932608
Lesenswert?
• ▲
▼
Joachim B. schrieb:
> Es gibt auch I2C Slave die nicht oc (Open-Kollektor) sind,

Beispiele?

Für den Standard I2C-Bus ist das nicht zugelassen und funktioniert 
nicht. In der Spezifikation von Philips/NXP steht ganz klar "The output 
stages ... must have an open-drain or open-collector ..." (Kap.3.1.1)
http://www.nxp.com/documents/user_manual/UM10204.pdf

Und der UFm-I2C-Bus ist unidirektional.
#4932836
Lesenswert?
• ▲
▼
D'oh! schrieb:
> Der DS3231 ist da aber nicht schuld, weil im Datenblatt steht eindeutig
> "This open-drain pin requires an external pullup resistor".

stimmt, da habe ich zu wenig geschrieben es ist das China Modul, beim 
DS1307 Modul (einzelne R) ist es halt leichter als beim DS3231 Modul 
(Array sehr winzig) die R auszulöten.

Wolfgang schrieb:
> Joachim B. schrieb:
>> Es gibt auch I2C Slave die nicht oc (Open-Kollektor) sind,
>
> Beispiele?
>
> Für den Standard I2C-Bus ist das nicht zugelassen und funktioniert
> nicht. In der Spezifikation von Philips/NXP steht ganz klar

und das weisst du für alle I2C devices?
Es soll ja auch Module geben die nur I2C ähnlich sind aus Lizensgründen 
und dann sind da noch I2C ähnliche Implementierungen ohne echte OC.

Christian M. schrieb:
> Nur die China-Module haben an ALLEN Eingängen Pull-Ups drauf!
> Gruss Chregu

stimmt und beim DS3231 Modul habe ich die R noch nie abgeklemmt, ist mir 
zu fummelig.
Gast #4932847
Lesenswert?
• ▲
▼
Joachim B. schrieb:
> Wolfgang schrieb:
>> Joachim B. schrieb:
>>> Es gibt auch I2C Slave die nicht oc (Open-Kollektor) sind,
>>
>> Beispiele?
>>
>> Für den Standard I2C-Bus ist das nicht zugelassen und funktioniert
>> nicht. In der Spezifikation von Philips/NXP steht ganz klar
>
> und das weisst du für alle I2C devices?

Ja, alles andere ist nicht I2C und kann auch nicht wie I2C 
funktionieren.

Bei welchen Bausteinen ist dir begegnet, dass die keinen Open-Drain oder 
Open-Kollektor als Ausgangsstufe haben?
#4933122
Lesenswert?
• ▲
▼
Wolfgang schrieb:
> Ja, alles andere ist nicht I2C und kann auch nicht wie I2C
> funktionieren.
>
> Bei welchen Bausteinen ist dir begegnet, dass die keinen Open-Drain oder
> Open-Kollektor als Ausgangsstufe haben?

was genau hast du an

Joachim B. schrieb:
> Es soll ja auch Module geben die nur I2C ähnlich sind aus Lizensgründen
> und dann sind da noch I2C ähnliche Implementierungen ohne echte OC.

nicht verstanden?

es gibt z.B. I2C ähnlich versteckt im µC ohne OC Ports.

Wolfgang schrieb:
> Bei welchen Bausteinen ist dir begegnet, dass die keinen Open-Drain oder
> Open-Kollektor als Ausgangsstufe haben?

z.B. im AVR etliche ATmega der/die kann oder kennt kein clock stretching 
und wo sind seine OC Ports?
#4933208
Lesenswert?
• ▲
▼
Wolfgang schrieb:
> Joachim B. schrieb:
>> z.B. im AVR etliche ATmega der/die kann oder kennt kein clock stretching
>> und wo sind seine OC Ports?
>
> Hinter dem DDR-Register ;-)

das ist gemogelt und das solltest du wissen!

Lothar M. schrieb:
> Joachim B. schrieb:
>> z.B. im AVR etliche ATmega der/die kann oder kennt kein clock stretching
>> und wo sind seine OC Ports?
> Es reicht aus, wenn man den Pin zwischen Ausgang und Eingang
> umschalten kann, denn ein Eingang ist hochohmig...

ach was und hochohmig ist OC, ich weiss das du das selbst nicht glaubst, 
auch der hochohmige Port ist nicht OC und würde kaum auf 30V gehieft 
werden können wegen der Bodydioden.

Ein Mix aus 3,3V und 5V I2C ist so nicht möglich
#4933251
Lesenswert?
• ▲
▼
S. R. schrieb:
> Warum soll ein Mix aus 3V3 und 5V nicht möglich sein

nehmen wir einen µC mit Bodydioden auf 3,3V ohne OC, dort wird sich auf 
high auf kaum viel mehr als 3,8V auch mit pullups an 5V einstellen was 
bei einigen Chips mit 5V + 5%Tol. sagen wir 5,25V nicht für eine sichere 
high Erkennung reicht.

Den Fall gab es so ähnlich schon bei RGBPixel Stripes am PI

Data und Clock maximal 3,3V - Toleranz high ab 80% VCC welches bei 
5Vsoll 4V wären und bei 70% sogar 3,5V, wie auch immer es reicht 
manchmal nicht.
(Firma: Vescomp) #4933281
Lesenswert?
• ▲
▼
Joachim B. schrieb:
> Data und Clock maximal 3,3V - Toleranz high ab 80% VCC welches bei
> 5Vsoll 4V wären und bei 70% sogar 3,5V, wie auch immer es reicht
> manchmal nicht.

 Doch.
 Atmel garantiert ein sicheres Erkennen bei 60% der VCC, was
 normalerweise bedeutet, dass alles über 3V als HIGH erkannt wird.

 In der Praxis wird in 99% der Fälle alles über 2,8V sicher erkannt.

 P.S.
 Der Vorteil ist, dass es nach oben bis 2,8V auf Log.0 bleibt und erst
 bei etwa 1,6V wieder von Log.1 auf Log.0 umschaltet - es gibt also kein
 ständiges Umschalten zwischen 0 und 1 oder zufällige Werte, ausser
 beim Einschalten.
Gast #4933299
Lesenswert?
• ▲
▼
Andreas S. schrieb:
> Nein, Du hast offenbar so wirklich gar keine Ahnung davon.
Etwas weniger verbale Konfrontationssprache wäre besser, finde Ich. Wir 
sind hier ja nicht im Erdoganland. Noch nicht, wenigstens :-)

> Zunächst solltest Du Dich mit den Grundlagen der Digitalelektronik
> auseinandersetzen,
Man merkt, dass Du ein ITler bist :-)  Du unterschlägst bei deiner 
Kritik den Sachverhalt der Stromstärke! Viele Mikrocontroller sind nicht 
in der Lage, den SPEC-gemäss zu treiben. Egal ob Tri-Ste oder nicht.

Zum thread:

>  I2C müsste doch theoretisch Kurzschlüsse verursachen
Tut es ja auch, wenn man z.B. das ACK zu früh kommen lässt oder es keine 
intelligente Steuerung gibt, die verhindert, dass jeder anfängt zu 
funken, z.B. bei Multimaster. I2C ist aber auf Kollision ausgelegt! Das 
muss man eben managen.

Ein elektrisches Busproblem durch Überlast etc gibt es dann nicht, wenn 
man einen I2C-Treiber dazwischen schaltet. Auch bei FPGAs, die ja ein 
Tristate kennen, ist es vom Pegel her sinnvoller, das mit einem 
Bustreiber zu machen. Der wird dann nur mit logischen Pegeln getrieben, 
braucht also auch keine Tristate.
#4933305
Lesenswert?
• ▲
▼
Marc V. schrieb:
>  In der Praxis wird in 99% der Fälle alles über 2,8V sicher erkannt.

och du willst nur wieder spielen, nach deiner eigenen Aussage gibt es 
also 1% Unsicherheit, das reicht wohl für viele Probleme bei der 
schieren Menge von Atmels und noch mehr bei anderen Herstellern!

Ausserdem stellten wir ja fest das vieles als "I2C" verkauft wird was es 
nicht ist.
(Firma: Vescomp) #4933318
Lesenswert?
• ▲
▼
Weltbester FPGA-Pongo schrieb im Beitrag #4933299:
>>  I2C müsste doch theoretisch Kurzschlüsse verursachen
> Tut es ja auch, wenn man z.B. das ACK zu früh kommen lässt oder es keine
> intelligente Steuerung gibt, die verhindert, dass jeder anfängt zu
> funken, z.B. bei Multimaster. I2C ist aber auf Kollision ausgelegt! Das
> muss man eben managen.

 Tut es nicht.
 Ein PullUp ist kein Kurzschluss.

 SDA ist immer open-drain.
 Und da es auch so etwas wie Clockstretching gibt, sollte auch die
 SCL-Leitung über PullUp gefahren werden.
 Dass nicht alle ATMEL Clockstretching unterstützen, heisst noch lange
 nicht, dass die SCL-Leitung aktiv gesteuert wird.
(Firma: Vescomp) #4933327
Lesenswert?
• ▲
▼
Joachim B. schrieb:
> Marc V. schrieb:
>>  In der Praxis wird in 99% der Fälle alles über 2,8V sicher erkannt.
>
> och du willst nur wieder spielen, nach deiner eigenen Aussage gibt es
> also 1% Unsicherheit, das reicht wohl für viele Probleme bei der
> schieren Menge von Atmels und noch mehr bei anderen Herstellern!

 Nein, ich will nicht spielen.
 Die meisten Hersteller garantieren 90% der VCC bis zu 5mA an einem
 I/O Pin.
 Bei 3V3 sind es 3V und das reicht vollkommen.

 Ein IC, welches mit 3V (und dann noch -10%) an einem 5V Bus hängt,
 ist von vornherein falsch eingesetzt.
Gast #4933338
Lesenswert?
• ▲
▼
Weltbester FPGA-Pongo schrieb im Beitrag #4933299:
>>  I2C müsste doch theoretisch Kurzschlüsse verursachen
> Tut es ja auch, wenn man z.B. das ACK zu früh kommen lässt oder ...

Einen Widerstand im kΩ-Bereich würde ich jetzt nicht als "Kurzschluss" 
bezeichnen - zumindest wenn man über Spannungen von wenigen Volt redet.
#4933342
Lesenswert?
• ▲
▼
Weltbester FPGA-Pongo schrieb im Beitrag #4933299:
> Man merkt, dass Du ein ITler bist :-)  Du unterschlägst bei deiner
> Kritik den Sachverhalt der Stromstärke! Viele Mikrocontroller sind nicht
> in der Lage, den SPEC-gemäss zu treiben. Egal ob Tri-Ste oder nicht.

Welche sind das denn? Die I2C-Spec verlangt 3mA Sink-Current für 
Standard-Mode, 6mA für Fast-Mode und 20mA für Fast-Mode Plus. Ein µC, 
der noch nicht einmal die 3mA schafft, dürfte wohl eher für 
Nischenanwendungen gedacht sein.
#4933427
Lesenswert?
• ▲
▼
Marc V. schrieb:
>  Ein IC, welches mit 3V (und dann noch -10%) an einem 5V Bus hängt,
>  ist von vornherein falsch eingesetzt.

ich weiss das, was denkst du wieviel Teile gleichzeitig mit Arduino & PI 
beworben werden trotz der (üblichen) Spannungsunterschiede?

OK und nur weil Bauteile falsch eingesetzt werden ist mein Schrieb lange 
noch nicht falsch.

Ach ne hier sind ja nur Profis die nie munter falsch und mit falschen 
Komponenten mixen würden.....
(Firma: Vescomp) #4933492
Lesenswert?
• ▲
▼
Joachim B. schrieb:
> OK und nur weil Bauteile falsch eingesetzt werden ist mein Schrieb lange
> noch nicht falsch.

 Habe ich auch nicht behauptet.


> Ach ne hier sind ja nur Profis die nie munter falsch und mit falschen
> Komponenten mixen würden.....

 Falsch ist und bleibt immer falsch.
 3V3 mit 5V ist, solange es um logische Zustände geht, nicht falsch
 und funktioniert fast immer.

 3V ist schon kritisch und meistens falsch.

 3V - 10% ist von vornherein falsch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren