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
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?
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.
vielleicht sollte ich dazu sagen, dass der bus läuft, aber leider zuverlässig. manche üübetragungen werden nicht acknowledged
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?
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.
Bob schrieb: > vielleicht sollte ich dazu sagen, dass der bus läuft, aber leider > zuverlässig. Tja, was will man mehr :-)
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.
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.
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".
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.
... 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 :)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.