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 :-)
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 ?
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.
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.
> Pullup ausrechnen, dass er in max. 1µs die 100pF> aus der Angabe auf 70% von 5V auflädt.
Damit erreicht man aber zwangsläufig weniger als 100kHz Taktfrequenz.
Wir wollen 400kHz erreichen, deswegen sind die 1µs in diesem Fall
irrelevant.
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.
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.
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?
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.
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.
Εrnst B. schrieb:> Stefan U. schrieb:>> Damit erreicht man aber zwangsläufig weniger als 100kHz Taktfrequenz.>> Magst du mich erleuchten, wo ich falsch lag?
Du sollst halt sein Super-Buch lesen!
> 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).