Forum: Mikrocontroller und Digitale Elektronik I²C mindest. Strom


von Bob (Gast)


Lesenswert?

Hallo!


Ich krieg meinen iic bus nicht zuverlässig zu laufen.

verwende im moment 10k pull-ups, was bei meinen spannungen einen 
stromfluss über den open-drain von 0,3 mA ergibt. Mir ist bewusst dass 
in der spezifikation des iic bus 3 mA gefordert sind. Doch auch mit 
niedrigeren pullups hatte ich ein problem.

nun meine grundsätzliche frage: was ist das problem wenn der master bzw 
slave nur 0,3 mA kriegt statt der 3mA??
im Datenblatt meines avr heißt es, dass in manchen fällen auch die 
internen pullups genommen werden können. die haben einen widerstand von 
50k und der drain strom wäre in dem fall nochmal viel kleiner.


viele grüße

bob

von Wolfgang (Gast)


Lesenswert?

Mit kurzen Leitungen und wenig Last sind 10k kein Problem. Was hast du 
alles am Bus hängen? Wie sehen deine Bussignale auf dem Oszi aus?

von Bob (Gast)


Lesenswert?

ich habe 2 displays am bus hängen, die leitungen haben etwa einen meter. 
Außerdem verwende ich einen iic-translator, da auf der einen seite 5v 
und auf der anderen 3,3v. die signale sehen bei frequenzen aber 50kHz 
nicht mehr besonders gut aus muss ich sagen.

von Bob (Gast)


Lesenswert?

vielleicht sollte ich dazu sagen, dass der bus läuft, aber leider 
zuverlässig. manche üübetragungen werden nicht acknowledged

von Wolfgang (Gast)


Lesenswert?

Bob schrieb:
> ... ich habe 2 displays am bus hängen,
> ... die leitungen haben etwa einen meter.

->
> ... die signale sehen ... nicht mehr besonders gut aus

Da hast du doch genug Ansatzpunkte, warum dein Bus Probleme machen kann. 
Wer schickt kein Acknowledge? Wenn's einer der Slaves ist, versteht der 
der Master nicht, wenn's der Master ist, könntest du auch ein SW-Problem 
haben. Who knows?

von Klaus 2. (klaus2m5)


Lesenswert?

Bei 1m Signalweg würde ich immer die Pullups so klein wie möglich 
machen. Dir ist schon klar, dass man bei einer Pegelwandlung auf beiden 
Seiten einen Pullup braucht? Außerdem die Geschwindigkeit soweit runter 
nehmen, bis es zuverlässig läuft.

Die parasitäre Induktivität und Kapazität des Kabels bilden einen 
Tiefpass. Dem kann man durch eine niederohmige Quelle entgegenwirken. 
Der Pullup ist Teil dieser Quelle.

von H.Joachim S. (crazyhorse)


Lesenswert?

Bob schrieb:
> vielleicht sollte ich dazu sagen, dass der bus läuft, aber leider
> zuverlässig.

Tja, was will man mehr :-)

von Jens M. (Gast)


Lesenswert?

Bob schrieb:
> nun meine grundsätzliche frage: was ist das problem wenn der master bzw
> slave nur 0,3 mA kriegt statt der 3mA??

Ja

Bob schrieb:
> verwende im moment 10k pull-ups,

Versuch es mit 1k wenn es stabil läuft hast du den Fehler, wenn nicht 
dann nicht.

Wenn der Strom ein Problem darstellt dann halte die I2C Telegramme so 
kurz wie möglich. Im Idle state fließt keiner.

von Jörg S. (joerg-s)


Lesenswert?

Bob schrieb:
> verwende im moment 10k pull-ups, was bei meinen spannungen einen
> stromfluss über den open-drain von 0,3 mA ergibt. Mir ist bewusst dass
> in der spezifikation des iic bus 3 mA gefordert sind. Doch auch mit
> niedrigeren pullups hatte ich ein problem.
Was für Probleme waren es denn bei niedrigen Pull-Ups?
Wenn du ein Oszi zur Hand hast, schau dir einfach an wie steil die 
steigenden Flanken auf SDA/SCL nach oben gehen.
Wenn es zu langsam geht, kann das das Problem bei den Pull-Ups liegen, 
sonst nicht.

> nun meine grundsätzliche frage: was ist das problem wenn der master bzw
> slave nur 0,3 mA kriegt statt der 3mA??
Bekommen tun die davon nichts, wie gesagt kommt es nur darauf an wie 
steilflankig das Signal ist.

von ... (Gast)


Lesenswert?

Jörg S. schrieb:
> Wenn es zu langsam geht

"Zu langsam" soll heißen: "Daten sind nicht stabil auf dem richtigen 
Pegel, während Clock high ist".

von ... (Gast)


Lesenswert?

Jörg S. schrieb:
> ... kommt es nur darauf an wie steilflankig das Signal ist.

Woher hast du denn, dass I2C auf steilflankige Signale angewiesen ist? 
Bedingung ist, dass ab dem Moment wo der Slave den L->H Übergang von SCL 
erkennt, die Daten bist zum SCL H->L Wechsel stabil sein müssen.

von Jörg S. (joerg-s)


Lesenswert?

... schrieb:
> Bedingung ist, dass ab dem Moment wo der Slave den L->H Übergang von SCL
> erkennt, die Daten bist zum SCL H->L Wechsel stabil sein müssen.
Richtig, und wenn die Flanke zu flach ist klappt das nicht mehr. 
Spätestens wenn's nach Sägezahnsignal aussieht sollte man sich sorgen 
machen :)

von Bob (Gast)


Lesenswert?

die flanken sehen eigentlich okay aus. bis auf merkwürdige stellen.

die sache ist, dass ich einen I²c translator benutze der verschieden 
Spannungspegel mit einander vereinbart. nun ist es so, dass wenn ich das 
oszi auf nicht-vom avr angesteuerte seite hänge manchmal komische peaks 
sehe. beispielsweise zieht das datensignal bei wechsel von low auf high 
das clocksignal ein stück mithoch (fällt anschließend wieder,sieht aus 
wie ein emv problem) ehe die clock dann aktiv auf high geht. das hat 
sich bemerkbar gemacht als ich die niedrigen pull ups am iic translator 
hatte. nun benutze ich lediglich seine internen, sehe aber immer noch 
manchmal andere peaks, die mich stutzig machen. hmm verdammt

von Klaus2m5 (Gast)


Lesenswert?

Schaltbild?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.