Hallo ihr lieben, ich habe einen PCF8574 (für LCD) mit integriertem (Platine, nicht im IC) 4.7k Pull-Up an meinen Raspberry angeschlossen. Zum Test habe ich i2cdetect laufen lassen, SCL vom RasPi zum IC und Logic Analyzer, SDA vom IC nur zum Logic Analyzer (um zu testen, ob ACK-Low gesendet wird). Unter 3.3V VCC sagt der IC gar nichts, die Clock läuft einfach nur durch. Bei 5V sendet er manchmal ein paar (?) unverständliche Lows (s.o.). Verbindet man SDA zusätzlich mit dem RasPi, so sagt er wieder nichts, bleibt auf High. Auch schon mit je einem MOFSET (S=RasPi, D=IC, G=3.3) als Pegelwandler (IC mit 5V Logik, RasPi mit 3.3V) dazwischen versucht (ohne Pull-Ups, da sowohl RasPi, als auch die ICs eigene haben) - nichts anderes. Habe die Pull-Ups auch schon entfernt, ebenso nichts. Mein PN532 mit 1k Pull-Up (könnte man auch entfernen) sagt überhaupt nichts, lässt nur die LED blinken (SCL/Rx). Lässt sich aber immerhin über UART ansteuern. Meine MCP23017 habe ich noch nicht ausprobiert. Ich hoffe ihr könnt mir helfen. Wenn ihr weitere Informationen braucht, kann ich die euch auch liefern. Danke schon mal im Voraus.
:
Bearbeitet durch User
Bei I2C sollten nur an einer Stelle PullUps sitzen und da der Pi schon welche hat darf man keine weiteren anschließen, übliches Problem bei fertigen Erweiterungsplatinen die nicht speziell für den PI sind. Die PullUps legen auch den Spannungspegel am Bus fest, Du kannst also den PCF8574 mit 5Volt betreiben, der I2C-Bus läuft trotzdem mit 3,3Volt Highpegel.
Also alle Pull-Ups raus löten, Pegelwandler mit Pull-Ups auf der 5V Seite wieder dazwischen (zumindest für den PN532, denPCF8547 auf 3.3V Seite)?
Inwiefern? Alle Geräte nutzen die selbe Masse...
:
Bearbeitet durch User
Mal eine blöde Frage: ist es denn überhaupt richtig, dass bei i2cdetect nur die Clock gesendet wird und SDA vom Slave (ACK) auf Masse gezogen werden muss und sonst durchgängig High ist? Oder liegt hier schon ein Fehler vom BUS vor (Adressierung über SDA?!)? Leider konnte ich kein Logic Diagramm eines funktionierenden Busses finden, habe mich halt nur gewundert.
:
Bearbeitet durch User
Luca Zimmermann schrieb: > Mal eine blöde Frage: ist es denn überhaupt richtig, dass bei i2cdetect > nur die Clock gesendet wird und SDA vom Slave (ACK) auf Masse gezogen > werden muss und sonst durchgängig High ist? i2cdetect ist ein Programm, das Slaves auf dem Bus sucht. Soetwas wie ping für TCP. Dazu legt es nacheinander alle gültigen Slaveadressen auf den Bus und schaut, ob sie mit einem ACK quitiert werden. SDA durchgängig high heißt Adresse 0x7f, da wird kaum ein Slave antworten. Statt mit einem LA solltest du mal mit einem Scope schauen. Ich glaube, deine Signale sind nicht wirklich ok. Für "durchgängig high" sind zuviele Lows zu sehen, für wirkliche Werte, sind die Lows zu kurz. MfG Klaus
Klaus schrieb: > SDA durchgängig high heißt Adresse 0x7f, da wird kaum ein Slave antworten. Das dachte ich mir, deswegen hab ich noch mal nachgefragt, ob ich da richtig liege. Danke für die Bestätigung. Klaus schrieb: > Für "durchgängig high" sind zuviele Lows zu sehen, für wirkliche Werte, sind die > Lows zu kurz. Das war auch nur ein seltenes Beispiel - sonst passiert nichts... Ich werde mal i2c-0 überprüfen, ob der korrekte Befehle sendet und der SDA von i2c-1 evtl. blockiert ist. Ich konnte ihn zumindest auf Low ziehen.
:
Bearbeitet durch User
Alles funktioniert super, seit ich die Problemquelle gefunden habe: Alles auseinander gebaut, es stellte sich heraus, dass das Flachbandkabel 5+ und SDA verbunden hatte… Hätte man auch einfacher haben können. Danke aber für eure Hilfe!
:
Bearbeitet durch User
Dann sei froh daß der Pi überlebt hat, der mag garkeine 5Volt auf den IOs
Ich weiß, bin auch froh drum, der hat schon so viel mitgemacht und alles bisher überlebt. Robust!
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.