I2C: zwischen schwachen Pullup und starkem Pullup vermitteln

OP #4064085
Lesenswert?
• ▲
▼
Hallo zusammen,
Ich habe folgendes Problem:
Einerseits habe ich einen Lego Mindstorms NXT Ultraschallsensor - ein 
I2C Sensor. Dieser hat intern einen 82k Pullup und einen 4k7 
Serienwiderstand auf beiden Datenleitungen.
Diesen Sensor würde ich gerne mit einem RPI ansteuern. Dieser hat einen 
1k8 Pullup an den Datenleitungen. Dazu habe ich noch einen zweiten 4k7 
Widerstand in Serie geschaltet als Schutz (den zu brücken löst das 
Problem nicht).

Nun habe in meinen Messungen festgestellt, dass es dem Sensor nicht 
möglich ist SDA auf Low zu ziehen so das diese Info beim Pi ankommt. Er 
versucht z.b. seine Adresse zu ACK, kommt aber nicht durch - Fehler bei 
der Übertragung.

Ich habe versucht das zu simulieren und meine Befürchtungen bestätigt 
(siehe Anhang).

Jetzt kann ich leider weder den Pullup noch den Serienwiderstand im 
Sensor entfernen. Auch am Pi will ich nicht löten.  Gibt es eine 
Möglichkeit das Problem elegant zu lösen?
Angehängte Dateien:
Gast #4064137
Lesenswert?
• ▲
▼
Stefan H. schrieb:
> Dieser hat intern einen 82k Pullup und einen 4k7
> Serienwiderstand auf beiden Datenleitungen.

Mit so großen Serienwiderständen kriegt man eigentlich jeden Wired-Or 
Bus kaputt. Da hilft auch kein Levelshifter. Und wenn man sich dann noch 
die bei I2C zulässigen 400pF zusammen mit 82k Pullups vorstellt, bewegt 
sich garnichts mehr.

MfG Klaus
OP #4064154
Lesenswert?
• ▲
▼
Klaus schrieb:
> Stefan H. schrieb:
>> Dieser hat intern einen 82k Pullup und einen 4k7
>> Serienwiderstand auf beiden Datenleitungen.
>
> Mit so großen Serienwiderständen kriegt man eigentlich jeden Wired-Or
> Bus kaputt. Da hilft auch kein Levelshifter. Und wenn man sich dann noch
> die bei I2C zulässigen 400pF zusammen mit 82k Pullups vorstellt, bewegt
> sich garnichts mehr.
>
> MfG Klaus

Rufus Τ. Firefly schrieb:
> Stefan H. schrieb:
>> Dieser hat intern einen 82k Pullup und einen 4k7 Serienwiderstand auf
>> beiden Datenleitungen.
>
> Und das soll I2C sein?
Die Sensoren bzw der Bus wurde von den Lego-Ings so entwickelt. Jetzt 
versuche ich damit klar zukommmen. Die Baudrate ist auch nur 9.6 kHz und 
das ganze funktioniert im Original auch zuverlässig.

Matthias Sch. schrieb:
> Stefan H. schrieb:
>> Gibt es eine
>> Möglichkeit das Problem elegant zu lösen?
>
> Nimm 2 GPIO, an denen kein Pullup dran hängt und mach Bitbanging I²C.

Das ist schon Plan B, ich hoffte es gibt noch einen Plan A.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.