[Gelöst] I2C blockiert beim RPI4 booten

Begonnen von manne44, 10 Februar 2020, 01:20:43

Vorheriges Thema - Nächstes Thema

manne44

Hallo,
ich habe beim Wechsel vom Banana Pi zum Raspberry Pi 4 ein Problem festgestellt, für das ich keine Erklärung habe:
Ich habe einen Arduino Nano, der analoge und digitale Werte erfasst und über die I2C-Schnittstelle an FHEM auf dem Raspberry bzw. Bananna Pi überträgt. Die Übertragung erfolgt alle 5 s durch Request.
Beim Banana Pi war da seit einigen Jahren kein Problem, aber nach dem Wechsel stelle ich fest, dass der RPI überhaupt nicht anfängt zu booten nach der Spannungsabschaltung und wieder -einschaltung. Ein angeschlossener Monitor zeigt nichts, das Teil steht. Das ist natürlich nicht akzeptabel. Beim Zuschalten des Arduino nach dem Start des RPI ist alles in Ordnung. Auch das Verzögern der Meldung des Arduino (Wire.begin(I2C_ADDRESS);) hat keine Auswirkung. Die pure Anschaltung scheint hier das Problem zu sein. Selbstverständilich über 5V zu 3.3V Pegelwandler.
Deshalb habe ich erst einmal eine PowerBank dazwischen geschaltet, also der RPI geht erst nach langer Stromunterbrechung aus.
Ich kann mir das nicht erklären und weiß keinen Rat. Alles ist auf aktuellstem Stand FHEM und Buster. Vielleicht hat das schon jemand erlebt und kann dazu was sagen. Vielen Dank.
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

Wernieman

Wen der PI nicht mal anfängt zu booten würde ich von einem Hardwareproblem ausgehen. Zieht Deine Hardwarekonstruktion zu viel Strom?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Frank_Huber

Sag uns vielleicht mal noch was das genau für eine Schaltung ist.
welche Pins des PI sind belegt?
Wie wird die Schaltung mit Strom versorgt?
Was machen die LEDs vom PI?
Was für eine Stromversorgung hast dran?

manne44

#3
Hallo, erst einmal vielen Dank für die Antworten.
Am RPI sind folgende Pins belegt: Pin 11, Pin 13 als Input und Pin13, Pin 21 als Outputs. Pin 3 (SDA) und Pin 5 (SLC) für den I2C, die über einen handelsüblichen Pegelwandler auf den Arduino geschaltet sind. Außerdem befindet sich eine SSD am USB-3-Anschluß des RPI, von der auch teilweise gebootet wird, also erst einmal von der Micro-SD, die dann während des Bootvorgangs an die SSD übergibt. USB-Boot des RPI4 funktioniert noch nicht. Stromversorgung über das stärkere originale PRI-4-Netzteil. Also alles so, wie das am BananaPi auch war, nur dass die SSD an der SATA-Schnittstelle hing, die der RPI leider nicht hat, und das Netzteil schwächer war. Der Arduino hat ein eigenes 5V-Netzteil, nimmt dem RPI also keinen Strom weg.
Die Stromaufnahme kann ich leider so einfach nicht messen, weil ich kein zusätzliches USB3-Kabel habe, das ich auftrennen könnte bzw. einen microUSB-USB3-Adapter, an den ich dann ein normales micro-USB-Kabel hängen könnte. Eine Spannungsmessung beim Boot-Stillstand oder beim Lauf mit I2C ergeben keine Unterschiede, als kein Spannungseinbruch wegen zu hoher Stromaufnahme beim Boot-Stillstand. Spannung beträgt immer rd. 5.16 V.
Beim normalen Booten ist die rote LED an und die gelbe flackert, nach kurzer Zeit beginnen auch die LEDs an der Netzwerkbuchse zu flackern. Beim Boot-Stillstand leuchtet die rote LED und sonst nichts.
Ich hoffe, dass ich alle genau beschrieben hab, so dass alle Klarheiten beseitigt sind.
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

Frank_Huber

OK, das klingt mal nicht falsch.
Hast Du über raspi-config I2C aktiviert?

manne44

Selbstverständlich, ansonsten würde das ja nie funktionieren. Denn wenn ich nach dem Hard-Reset, also Spannung weg und wieder an, der I2C nicht funktionieren wenn ich anschließend den Arduino zuschalte.
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

Wernieman

Trennst Du den Arduino komplett oder nur i2c damit es funktioniert?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

manne44

Ich lege den Arduino still, also ziehe die Stromversorgung ab.
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

Wernieman

probiere mal, nur i2c zu trenne.

Wenn es geht = Liegt an I2C
Wenn nicht, liegt es im Strombereich ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

manne44

Also Trennung von SDA oder SCL (Pin3 und Pin5) bringen keine Änderung. Trennung der Versorgungsspannung 5V von Pegelwandler führte zum normalen Booten. Seltsam ist es, dass es einen verkehrten Stromfluß zwischen dem 3.3V-Pin-1 des RPI von rd 120mA gibt, wenn der Bootvorgang stoppt. Es fließen also 120 mA vom Ground zum 5V-Pin des Arduino. Unklar. Wird der Arduino nach dem Booten des RPI zugeschaltet, dann kommt kaum ein Stromfluß zwischen dem 3.3V-Pin und dem Pegelwandler zustande. Warum beim Start und dann nicht mehr?
Vielleicht ist der Pegelwandler defekt, aber wenn alles läuft, dann werden die Pegel wunschgemäß von 5 auf 3.3V gewandelt (mit Oszilloskop kontrolliert), also alles ok.
Ich habe jetzt erst mal keinen Ersatz für den Pegelwandler und lasse es erst einmal so wie es ist. Offenbar ist der Pegelwandler das Problem und nicht der für mich neue RPI4, was ich zuerst dachte.
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

Wernieman

Würde auf verschiedene "Grounds" durch verschiedene Stromversogungen Tippen. Kannst Du es nicht auf eine Begrenzen?
Als Schnellcheck: Drehe mal ein Netzteil in der Steckdose, so das die Pole vertauscht sind ...

Mir persönlich würde so ein Stromfluß nicht gefallen, da er ein Fehler darstellt.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

manne44

Also ich habe mal den Pegelwandler ausgetauscht und siehe da, alles wie gewünscht. Weil ich den RPI4 nicht kannt, dachte ich erst daran, dass der Eumel daran schuld wäre, denn mit dem BanandPi ging das jahrelang gut.
Vielen Dank nochmals für Eure Hilfe.
Gruß
Manne
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

QuaLinux

Guten Tag,
ich habe zwei Jahre später ein ähnliches Problem und würde daher gern wissen, um welchen Typ Pegelwandler es sich gehandelt hat.
Danke im Voraus,
#Griß
Peter

manne44

Das kann ich nicht sagen, irgendein low-cost 4-Kanal Level Converter aus China. Bis jetzt funktioniert er einwandfrei.
RPI4-Buster mit SSD, RPI-Zero mit Bookworm