Aufgaben I²C Schnittstelle

Gast #5376053
Lesenswert?

Hallo,

ich lerne gerade für eine Klausur zum Thema 
Mikrocontroller/Schnittstellen. Bei einer Aufgabe komme ich grad gar 
nicht weiter:

"An einem I²C-Bus messen Sie die parasitäre Kapazität von 100 pF. Die 
Datenübertragung soll im fast mode (400 kHz) sicher möglich sein. 
Berechnen Sie einen geeigneten Wert für die PU-Widerstände an 5 V 
Betriebsspannung. Die Treiberstufen der Buskomponenten werden bei 
PU-Widerständen kleiner als 1,1 kOhm zerstört."

Hat da jemand eine Idee?

Schonmal vielen Dank für jede Hilfe :-)
Gast #5376069
Lesenswert?

Berechnen sie die Rise Time mit ein Widerstand von x kohm die ein C von 
100 pF laden soll. Die I2C 400 kHz braucht eine bestimmte Zeit um jeden 
SDA / SCL level richtig zu lesen. Vb : minimal 66% von 5V ist notwendig 
für eine "1" level zu lesen.  Wielange dauert es um mit eine bestimmt R 
diese Spannung zu erreichen ? Wielange hast I2C notig ?
#5376081
Lesenswert?

Francisca93 schrieb:
> Hat da jemand eine Idee?

Blick in's Datenblatt eines willkürlich gewählten I²C-ICs(PCF8574 von 
TI): "I²C Input rise time: max. 1µs". und "High-Level input voltage: 
min. 0.7 * VCC"

Also: Pullup ausrechnen, dass er in max. 1µs die 100pF aus der Angabe 
auf 70% von 5V auflädt.


Andere I²C-Teilnehmer am Bus oder anderer Hersteller: Pech, hat evtl. 
andere Werte. Also Pullup großzügig unterdimensionieren.
Gast #5376086
Lesenswert?

Der Kondensator lädt sich in der Zeit T auf 63% auf, bzw. entlädt auf 
37% (100-63). Diese Schwellwerte liegen ziemlich nahe an den High/Low 
Schwellen typischer CMOS IC*s. T = R*C. Wenn man das umstellt kommt man 
auf:

R = 1/400.000/100pF = 25k Ohm

Mit größeren Werten funktioniert es sicher NICHT. Damit es sicher 
funktioniert, würde ich mindestens auf 1/4 davon runter gehen, also auf 
6,5k Ohm.
#5376106
Lesenswert?

Stefan U. schrieb:
> Damit erreicht man aber zwangsläufig weniger als 100kHz Taktfrequenz.

Magst du mich erleuchten, wo ich falsch lag?

1/1µs gibt bei mir 1MHz. Nur das Aufladen ist kritisch, das Entladen 
passiert ja "aktiv" und schnell.

Insofern kommt mit die 1µs max. rise time aus dem Datenblatt bei 400kHz 
garnicht so verkehrt vor, man will ja auch nicht unbedingt einen 
Sägezahn auf der Leitung haben.
Gast #5376121
Lesenswert?

Wahrscheinlich geht es eher um die Rise-Time, die der I2C-Standard für 
Fast-Mode vorgibt. Die kann mit den Infos aus dem Datenblatt eines 
Bausteins übereinstimmen, das muss aber nicht sein.
Ein Chip könnte den Standard z. B. übererfüllen. Wenn man seine 
Rise-Time dann dahingehend auslegt, funktionieren vielleicht andere 
Chips, die den Standard gerade so erfüllen, nicht mehr.
Gast #5376142
Lesenswert?

Irgendwie liegt mir an, nach 5* Tau(Zeitkonstante R*C) ist ein 
Kondensator praktisch umgeladen.

https://de.wikipedia.org/wiki/Zeitkonstante

Der Rest ist Rechenknecht (kommt bei mir R < 5k raus).

In der Aufgabe leider nicht spezifiziert: Bei fallender Taktflanke wird 
gelesen (müssen die Daten valide sein), aber wie groß ist die Latenz 
nach der steigenden Flanke, bis der Sender die Daten schreibt?
#5376149
Lesenswert?

Horst S. schrieb:
> Bei fallender Taktflanke wird
> gelesen

Nein, bei I²C markiert die steigende Flanke den Abtastzeitpunkt. Und SDA 
muss stabil bleiben solange SCL oben ist, erst wenn SCL wieder low ist 
darf das nächste Bit angelegt werden. Und erst wenn es anliegt darf SCL 
wieder hoch gehen, nicht vorher.

Wenn der Slave beim Lesen es nicht schafft das zu lesende Bit schnell 
genug anzulegen wenn SCL runter geht muss er sofort mit dem Fuß auf das 
noch am Boden liegende SCL drauftreten (damit es nicht mehr hoch geht, 
clock stretching) so daß er Zeit hat sich in Ruhe das nächste Bit 
auszudenken und erst wieder loslassen wenn er das Bit endlich 
ausgetüftelt und sauber auf SDA angelegt hat.
Gast #5376170
Lesenswert?

Bernd K. schrieb:
>.... muss er sofort mit dem Fuß auf das
> noch am Boden liegende SCL drauftreten (damit es nicht mehr hoch geht,
> clock stretching) so daß er Zeit hat sich in Ruhe das nächste Bit
> auszudenken und erst wieder loslassen wenn er das Bit endlich
> ausgetüftelt und sauber auf SDA angelegt hat.


Das hast Du wirklich gut und plastisch beschrieben. Sowas freut mich, 
weil ich auch so mechanistisch denke.
Gast #5376669
Lesenswert?

> Du sollst halt sein Super-Buch lesen!

Quatsch.

ich meinte, das man mit 1µS Verzögerung maximal 100kHz erreichen kann. 
Das war aber Unsinn, es hätte 1MHz heißen sollen und dann macht mein 
Einwand natürlich keinen Sinn mehr.

Der Beitrag von Εrnst B✶ war also absolut richtig und wichtig. Das 
Signal muss mindestens so schnell ansteigen, wie im DB gefordert. 
Außerdem muss damit natürlich auch noch die gewünschte Taktfrequenz 
erreichbar sein, was in diesem Fall logischerweise zutrifft (weil 1µS 
weniger als 1/400kHz ist).

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